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); } }
private void setData(SMidiAction a) { _cmd = a.Cmd; _channel = a.Channel; _data1 = a.Data1; _data2 = a.Data2; }
public void MidiData(SMidiAction data) { if (!midiData2Gridview(dataGridView1, data)) { midiData2Gridview(dataGridView2, data); } }
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); } } }
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); }