private void btnSend_Click(object sender, EventArgs e) { try { // the the message to the serias interface char[] aSplit = { ',' }; string sDataBytes = txtData.Text; string[] asData = sDataBytes.Split(aSplit); EventCode chosenEvent = m_eventCodeNameToVal[cbxEventCode.SelectedItem.ToString()]; EVENT_PRIORITY chosenPriority = m_eventPriorityToval[cbxPriority.SelectedItem.ToString()]; if (asData.Length == 1 && asData[0].Length == 0) { asData = new string[0]; } // length: dle, stx, flags, 4 bytes header, data bytes, dle, etx int len = 9 + asData.Length; byte[] aVscpMsg = new byte[len]; aVscpMsg[0] = message_frame.DLE; aVscpMsg[1] = message_frame.STX; int iTemp = (int)chosenPriority; aVscpMsg[2] = (byte) (iTemp << 5); iTemp = (int)chosenEvent; int iVal = (iTemp >> 24) & 0xFF; aVscpMsg[3] = (byte)iVal; iVal = (iTemp >> 16) & 0xFF; aVscpMsg[4] = (byte)iVal; iVal = iTemp & 0xFF; aVscpMsg[5] = (byte)iVal; // nickname is zero aVscpMsg[6] = 0; int i = 0; for (; i < asData.Length; i++) { string sNumber = asData[i]; if (sNumber.Length > 0) { aVscpMsg[7 + i] = (byte)Int32.Parse(sNumber, System.Globalization.NumberStyles.HexNumber); } else { aVscpMsg[7 + i] = 0; } } aVscpMsg[7 + i] = message_frame.DLE; i++; aVscpMsg[7 + i] = message_frame.ETX; m_serialPort.Write(aVscpMsg, 0, aVscpMsg.Length); message_frame generated_vscp_message = new message_frame(); for (int j = 0; j < aVscpMsg.Length; j++) { if (generated_vscp_message.AddByte(aVscpMsg[j])) { // a new serial vscp message DateTime now = DateTime.Now; // Create message so CRC is checked if needed SerialEventMessage msg = new SerialEventMessage(generated_vscp_message); string sMsg = msg.ToString(); string sTime = now.ToLongTimeString() + ":" + now.Millisecond; if (null != m_tracer) { m_tracer.Write(sTime + " " + sMsg); ListViewItem item = new ListViewItem(sTime, sMsg); item.SubItems.Add(msg.ToString()); m_listView.AddItem(item); string sEventName = msg.m_event.ToString(); byte[] dataBytes = msg.GetDataBytes(); string sCrack = m_msgCracker.Decode(sEventName, dataBytes); if (sCrack.Length > 0) { ListViewItem item2 = new ListViewItem(sTime, sMsg); item2.SubItems.Add(sCrack); m_listView.AddItem(item2); } } } } } catch (IOException ex) { Debug.WriteLine("IOException: " + ex.Message); MessageBox.Show(ex.Message); } catch (Exception ex) { Debug.WriteLine(ex.Message); MessageBox.Show(ex.Message); } }
private void ExtractSerialVSCPMessage(int i_length, byte[] i_data) { //lock (this) { // If Receive RS-232 m_data available for (int i = 0; i < i_length; i++) { Byte c = i_data[i]; if (serial_vscp_message.AddByte(c)) { // a new serial vscp message DateTime now = DateTime.Now; // Create message so CRC is checked if needed SerialEventMessage msg = new SerialEventMessage(serial_vscp_message); string sMsg = msg.ToString(); string sTime = now.ToLongTimeString() + ":" + now.Millisecond; if (null != m_tracer) { m_tracer.Write(sTime + " " + sMsg); ListViewItem item = new ListViewItem(sTime, sMsg); item.SubItems.Add(msg.ToString()); m_listView.AddItem(item); string sEventName = msg.m_event.ToString(); byte[] dataBytes = msg.GetDataBytes(); string sCrack = m_msgCracker.Decode(sEventName, dataBytes); if (sCrack.Length > 0) { ListViewItem item2 = new ListViewItem(sTime, sMsg); item2.SubItems.Add(sCrack); m_listView.AddItem(item2); } } } } } }