public void SendBytes(byte[] bytes) { if (!(comPort.IsOpen == true)) { OpenPort(); } if (comPort.IsOpen && (bytes.Length > 0)) { bool threadLocked = commLock.WaitOne(100); if (threadLocked) { comPort.Write(bytes, 0, bytes.Length); commLock.Release(); } else { throw new Exception("Failed to lock SendBytes"); } //DisplayData("Sent: " + CMTools.BytesToHex(bytes) + "\n"); } else { DisplayData("Error: Failed to send bytes - [" + CMTools.BytesToHex(bytes) + "]\n"); } //comPort.Close(); }
/// <summary> /// method that will be called when there is data waiting in the buffer. /// /// THIS WILL BE CALLED ASYNCHRONOSLY. WATCH FOR RACES. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public void comPort_DataReceived(object sender, SerialDataReceivedEventArgs e) { int bytes = comPort.BytesToRead; byte[] comBuffer = new byte[bytes]; comPort.Read(comBuffer, 0, bytes); DisplayData("Received: " + CMTools.BytesToHex(comBuffer) + "\n"); //handleData(comBuffer); //DisplayDataQueue(); }