private void _parseBuffer()
        {
            SMidiAction action = new SMidiAction();

            action.Cmd     = _cmdbuffer[0] << 4;
            action.Channel = _cmdbuffer[1] & 0x0f;
            action.Data1   = _cmdbuffer[2];
            action.Data2   = _cmdbuffer[3];
            //handshake
            if (action.Cmd == _hsCmd)
            {
                if (action.Data1 == _hsData2 && action.Data2 == _hsData1 && action.Channel == _hsChannel)
                {
                    ready = true;
                    if (OnStatusChanged != null)
                    {
                        OnStatusChanged(this, EMidiEvent.DeviceReady);
                    }
                    return;
                }
            }

            if (OnData != null)
            {
                OnData(this, action);
            }
        }
Example #2
0
 private void setData(SMidiAction a)
 {
     _cmd     = a.Cmd;
     _channel = a.Channel;
     _data1   = a.Data1;
     _data2   = a.Data2;
 }
Example #3
0
 public void MidiData(SMidiAction data)
 {
     if (!midiData2Gridview(dataGridView1, data))
     {
         midiData2Gridview(dataGridView2, data);
     }
 }
Example #4
0
 private void Device_OnData(IOBSDevice sender, SMidiAction data)
 {
     logWindow.Data(data);
     if (editWindow != null)
     {
         editWindow.MidiData(data);
     }
 }
        public void Data(SMidiAction d)
        {
            shiftItems();
            LogItem item = new LogItem();

            item.text   = null;
            item.data   = d;
            logLines[0] = item;
            Render();
        }
 public void Send(SMidiAction data)
 {
     if (_oDevice != null && !_oDevice.IsDisposed)
     {
         var msg = new byte[3];
         msg[0] = (byte)(data.Cmd | data.Channel); //SendMidiCommand(o.Action);
         msg[1] = (byte)(data.Data1);
         msg[2] = (byte)(data.Data2);
         _oDevice.Send(new MidiEvent(msg));
     }
 }
 public void Send(SMidiAction data)
 {
     if (_serialPort.IsOpen)
     {
         var msg = new byte[5];
         msg[0] = (byte)(data.Cmd >> 4);
         msg[1] = (byte)(data.Cmd | data.Channel);
         msg[2] = (byte)(data.Data1);
         msg[3] = (byte)(data.Data2);
         msg[4] = (byte)_terminator;
         _serialPort.Write(msg, 0, 5);
     }
 }
        private void OnMidiEvent(MidiEvent ev)
        {
            if (ev.MidiEventType == EMidiEventType.Short)
            {
                SMidiAction action = new SMidiAction();
                action.Cmd     = ev.AllData[0];
                action.Channel = ev.AllData[0] & 0x0f;
                action.Data1   = ev.AllData[1];
                action.Data2   = ev.AllData[2];

                if (OnData != null)
                {
                    OnData(this, action);
                }
            }
        }
Example #9
0
        private bool midiData2Gridview(DataGridView gv, SMidiAction data)
        {
            for (int r = 0; r < gv.RowCount; r++)
            {
                if (gv.Rows[r].Selected)
                {
                    gv.Rows[r].Cells[1].Value = "0x" + data.Cmd.ToString("X2");
                    gv.Rows[r].Cells[2].Value = "0x" + data.Channel.ToString("X2");
                    gv.Rows[r].Cells[3].Value = "0x" + data.Data1.ToString("X2");
                    gv.Rows[r].Cells[4].Value = "0x" + data.Data2.ToString("X2");
                    gv.Rows[r].Selected       = false;
                    return(true);
                }
                else
                {
                    for (int c = 1; c < gv.Rows[r].Cells.Count; c++)
                    {
                        if (gv.Rows[r].Cells[c].Selected)
                        {
                            switch (c)
                            {
                            case 1:
                                gv.Rows[r].Cells[1].Value = "0x" + data.Cmd.ToString("X2");
                                break;

                            case 2:
                                gv.Rows[r].Cells[2].Value = "0x" + data.Channel.ToString("X2");
                                break;

                            case 3:
                                gv.Rows[r].Cells[3].Value = "0x" + data.Data1.ToString("X2");
                                break;

                            case 4:
                                gv.Rows[r].Cells[4].Value = "0x" + data.Data2.ToString("X2");
                                break;
                            }
                            gv.Rows[r].Cells[c].Selected = false;
                            return(true);
                        }
                    }
                }
            }
            return(false);
        }
        public bool Connect()
        {
            if (_input != null && _input.Index > -1)
            {
                try
                {
                    _serialPort               = new SerialPort((string)_input.Value, 115200);
                    _serialPort.ReadTimeout   = _timeout * 1000;
                    _serialPort.DataBits      = _dataBits;
                    _serialPort.Handshake     = _handshake;
                    _serialPort.Parity        = _parity;
                    _serialPort.StopBits      = _stopBits;
                    _serialPort.RtsEnable     = true;
                    _serialPort.Encoding      = Encoding.ASCII;
                    _serialPort.DataReceived += new SerialDataReceivedEventHandler(_readPort);
                    _serialPort.Open();

                    //check serial device with a "status" command
                    //serial device MUST reply with same command and with Data1=_hsData2 Data2=_hsData1
                    SMidiAction d = new SMidiAction();
                    d.Cmd     = _hsCmd;
                    d.Channel = _hsChannel;
                    d.Data1   = _hsData1;
                    d.Data2   = _hsData2;

                    Reset();
                    Send(d);

                    handshakeTimer.Enabled = true;
                    OnStatusChanged(this, EMidiEvent.Connecting);
                    return(true);
                }
                catch (Exception e)
                {
                    if (OnStatusChanged != null)
                    {
                        OnStatusChanged(this, EMidiEvent.DeviceError);
                    }
                }
            }
            return(false);
        }