/// <summary> /// /// </summary> /// <param name="pkt"></param> /// <returns></returns> public override PKT_INTERFACE Send(Packet pkt) { if (vcpPort != null) { if (CmdProtocol.WriteSerialPacket(vcpPort, pkt)) { if (rxPacketEvent.WaitOne(3000)) { if (CmdProtocol.CheckNACKPacket(cmdRxPacket)) { return(PKT_INTERFACE.UVC); } return(PKT_INTERFACE.ERROR); } else { MessageBox.Show("Timeout to receive packet", "Warning", MessageBoxButtons.OK); return(PKT_INTERFACE.ERROR); } } MessageBox.Show("Error in sending packet", "Error", MessageBoxButtons.OK); return(PKT_INTERFACE.ERROR); } MessageBox.Show("VCP port is not opened", "Warning", MessageBoxButtons.OK); return(PKT_INTERFACE.ERROR); }
/// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> virtual public unsafe void DataReceived(object sender, SerialDataReceivedEventArgs e) { if (CmdProtocol.ReadSerialPacket(sender as SerialPort, ref cmdRxPacket)) { if (cmdRxPacket.payload != null && cmdRxPacket.payload.Length > 0) { fixed(byte *pBuffer = cmdRxPacket.payload) { Buffer.MemoryCopy((void *)pBuffer, (void *)pFrameBuffer, cmdRxPacket.payload.Length, cmdRxPacket.payload.Length); } rxPacketEvent.Set(); // send signal to wait object for rx packet event } } else { Console.WriteLine("NG"); } }