Example #1
0
        public OscDest(PacketConverter <T> packetConverter, string serverPortTopic) : base(packetConverter)
        {
            string server = OscReceiver.DEFAULT_INTERFACE;
            int    port   = OscReceiver.DEFAULT_PORT;
            string topic  = packetConverter.GetDefaultTopic(false);

            PacketSource <T> .ParseServerPortTopic(serverPortTopic, ref server, ref port, ref topic);

            oscTransmitter = new OscTransmitter(server, port);
            this.topic     = topic;
        }
Example #2
0
        private void toolStripButtonConnect_Click(object sender, EventArgs e)
        {
            // Remove old wax manager
            if (waxManager != null)
            {
                waxManager.Dispose();
                waxManager = null;
            }

            if (!toolStripButtonConnect.Checked)
            {
                // Find port name
                if (PortName.Length != 0)
                {
                    string port = FindPort(PortName);
                    if (port != null) { PortName = port; }
                }

                waxManager = new WaxManager();

                if (PortName.Length > 0)
                {
                    // Create WAX manager
                    try
                    {
                        string initiallySend = null;
                        if (checkBoxSetMode.Checked)
                        {
                            // Set SLIP mode... [0=NONE,1=SLIP,2=TEXT,3=OSC]
                            initiallySend = "\r\nMODE=1\r\n";
                        }
                        waxManager.AddPacketSource(new SlipSource<WaxPacket>(waxManager.WaxPacketConverter, SlipSource<WaxPacket>.OpenSerialPort(PortName, initiallySend)));
                        if (checkBoxBroadcast.Checked)
                        {
                            waxManager.AddPacketDest(new StompDest<WaxPacket>(waxManager.WaxPacketConverter, "localhost"));
                        }
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(this, "Error: " + ex.Message, "Connection Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
                else
                {
                    //MessageBox.Show(this, "Error: Port not specified.", "Connection Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    waxManager.AddPacketSource(new StompSource<WaxPacket>(waxManager.WaxPacketConverter, "localhost"));
                    if (OscReceive)
                    {
                        waxManager.AddPacketSource(new OscSource<WaxPacket>(waxManager.WaxPacketConverter, "localhost:" + OscPort + "/wax"));
                    }
                }

                if (waxManager != null)
                {
                    // Set log file
                    string file = LogFile;
                    if (file != null && file.Length > 0)
                    {
                        DateTime now = DateTime.Now;
                        string date = now.ToString(@"yyyy-MM-dd");
                        string time = now.ToString(@"HH-mm-ss");
                        file = file.Replace("{date}", date);
                        file = file.Replace("{time}", time);
                        waxManager.AddPacketDest(new LogDest<WaxPacket>(waxManager.WaxPacketConverter, new StreamWriter(new FileStream(file, FileMode.Append))));
                    }

                    // Set WAX OSC transmission
                    if (OscHost != null && OscHost.Length > 0 && OscPort > 0)
                    {
                        OscTransmitter tinyOscTransmitter = new OscTransmitter(OscHost, OscPort);
                        waxManager.ReceivedPacket += (s, ea) =>
                        {
                            try
                            {
                                WaxSample[] samples = ea.Packet.Samples;
                                OscMessage[] messages = new OscMessage[samples.Length];
                                for (int i = 0; i < samples.Length; i++)
                                {
                                    messages[i] = new OscMessage("/wax", (int)ea.Packet.DeviceId, samples[i].Index, samples[i].X / 256.0f, samples[i].Y / 256.0f, samples[i].Z / 256.0f);
                                }
                                OscBundle bundle = new OscBundle(OscBundle.TIMESTAMP_NOW, messages);
                                tinyOscTransmitter.Send(bundle);
                            }
                            catch (Exception ex)
                            {
                                Console.Error.WriteLine("ERROR: Problem sending OSC packet - " + ex.Message);
                            }
                        };
                    }
                }

                // Set History panel to use WAX manager
                historyPanel.WaxManager = waxManager;

                // Update connection button
                toolStripButtonConnect.Checked = (waxManager != null);
            }
            else
            {
                // Update connection button
                toolStripButtonConnect.Checked = false;
            }

            // Update tool bar status
            bool connected = toolStripButtonConnect.Checked;
            toolStripLabelPort.Enabled = !connected;
            toolStripComboBoxPort.Enabled = !connected;
            toolStripLabelFile.Enabled = !connected;
            toolStripTextBoxLogFile.Enabled = !connected;
            toolStripButtonChooseFile.Enabled = !connected;
            // ...
        }