public static byte[] CreatePlayingRegisteredSoundData(MelodySpeakerModel model, bool specifySound, MelodySpeakerSoundStorageArea soundStorageArea, int soundNumber, bool specifyVolume, int volume) { IMelodySpeakerCommandBuilder builder = StarIoExt.CreateMelodySpeakerCommandBuilder(model); SoundSetting setting = new SoundSetting(); if (specifySound) { setting.SoundStorageArea = soundStorageArea; setting.SoundNumber = soundNumber; } if (specifyVolume) { setting.Volume = volume; } builder.AppendSound(setting); return(builder.Commands); }
private void PlayRegisteredSound() { // Your printer PortName and PortSettings. string portName = SharedInformationManager.SelectedPortName; string portSettings = SharedInformationManager.SelectedPortSettings; // Your speaker model. MelodySpeakerModel speakerModel = SharedInformationManager.SelectedSpeakerModel; // Check MCS10 connection status. if (speakerModel == MelodySpeakerModel.MCS10) { IPeripheralConnectParser parser = StarIoExt.CreateMelodySpeakerConnectParser(speakerModel); CommunicationResult parseResult = Communication.ParseDoNotCheckCondition(parser, portName, portSettings, 30000); if (parseResult.Result == Communication.Result.Success) { if (!parser.IsConnected) { Dispatcher.Invoke((Action)(() => { MessageBox.Show("MelodySpeaker Disconnect.", "Check Status"); })); return; } } else { Dispatcher.Invoke((Action)(() => { MessageBox.Show("Printer Impossible", "Failure"); })); return; } } // Set sound storage area and number settings. bool specifySound = false; MelodySpeakerSoundStorageArea soundStorageArea = MelodySpeakerSoundStorageArea.Area1; int soundNumber = 0; Dispatcher.Invoke((Action)(() => { switch (soundStorageAreaComboBox.SelectedIndex) { default: case 0: // Default // Not specify sound storage area and sound number break; case 1: // Area1 specifySound = true; soundStorageArea = MelodySpeakerSoundStorageArea.Area1; soundNumber = soundNumberInputTextBox.Value; break; case 2: // Area2 specifySound = true; soundStorageArea = MelodySpeakerSoundStorageArea.Area2; soundNumber = soundNumberInputTextBox.Value; break; } })); // Set volume setting. bool specifyVolume = false; int volume = 0; if (speakerModel != MelodySpeakerModel.FVP10) // FVP10 not supported volume setting. { Dispatcher.Invoke((Action)(() => { switch (volumeTypeRegisteredComboBox.SelectedIndex) { default: case 0: // Default // Not specify volume break; case 1: // Off specifyVolume = true; volume = SoundSetting.VolumeOff; break; case 2: // Min specifyVolume = true; volume = SoundSetting.VolumeMin; break; case 3: // Max specifyVolume = true; volume = SoundSetting.VolumeMax; break; case 4: // Manual specifyVolume = true; volume = (int)volumeRegisteredSlider.Value; break; } })); } // Create melody speaker commands. byte[] commands = null; try { commands = MelodySpeakerFunctions.CreatePlayingRegisteredSoundData(speakerModel, specifySound, soundStorageArea, soundNumber, specifyVolume, volume); } catch (ArgumentOutOfRangeException ex) // Specified parameter is out of range. { Dispatcher.Invoke((Action)(() => { MessageBox.Show(ex.GetType().Name + "\n" + ex.Message, "Error"); })); return; } catch (ArgumentException ex) // Not allowed operation. (Ex. Specify not supported parameter) { Dispatcher.Invoke((Action)(() => { MessageBox.Show(ex.GetType().Name + "\n" + ex.Message, "Error"); })); return; } catch (Exception ex) // Other error. { Dispatcher.Invoke((Action)(() => { MessageBox.Show(ex.GetType().Name + "\n" + ex.Message, "Error"); })); return; } // Send melody speaker commands. CommunicationResult sendCommandsResult = Communication.SendCommands(commands, portName, portSettings, 30000); Dispatcher.Invoke((Action)(() => { MessageBox.Show(Communication.GetCommunicationResultMessage(sendCommandsResult), "Communication Result"); })); }