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);
        }
Example #2
0
        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");
            }));
        }