/// <summary> /// Input thread /// </summary> /// <param name="o"></param> private void ThD_Receive(object o) { string msg; while (true) { msg = Q_Receive.Read(); char cmd = msg[0]; RaiseMessage("NEW MSG \t " + msg); if (msg.EndsWith("\r") && (cmd == 't' || cmd == 'T' || cmd == 'r' || cmd == 'R')) { RaiseCANMessage(new CANMessage(msg)); } else { if (msg == "z\r" || msg == "Z\r" || msg == "t\r" || msg == "T\r") { autoEvent.Set(); } else { RaiseMessage("Unknown msg: \t" + msg); } } } }
/// <summary> /// Send Thread /// </summary> /// <param name="o"></param> private void ThD_Send(object o) { CANMessage msg; bool result; while (true) { msg = Q_Send.Read(); lock (SyncPort) serialPort.Write(msg.ToString() + "\r"); result = autoEvent.WaitOne(100); if (result) { RaiseMessage("Written \t \t msg = " + msg.ToString()); } else { RaiseMessage("Write Error \t msg = " + msg.ToString()); } } }
/// <summary> /// Input thread /// </summary> /// <param name="o"></param> private void ThD_Receive(object o) { string rawmsg; while (true) { rawmsg = Q_Receive.Read(); SplitCANFrames(rawmsg, ref msgBuff); foreach (string msg in msgBuff) { char cmd = msg[0]; RaiseMessage("NEW MSG \t " + msg); if (msg.EndsWith("\r") && (cmd == 't' || cmd == 'T' || cmd == 'r' || cmd == 'R')) { RaiseCANMessage(new CANMessage(msg)); } else { if (msg == "z\r" || msg == "Z\r" || msg == "t\r" || msg == "T\r") { autoEvent.Set(); } else { RaiseMessage("Unknown msg: \t" + msg); } } } msgBuff.Clear(); } }