public void handleOneByte(byte b) { serialBuf.Add(b); if (serialBuf[0] != 0xfe) { serialBuf.RemoveAt(0); } if (serialBuf.Count < 11) { return; } eArgs = null; if (serialBuf[2] == 0xF2)//车子错位,重新规划回起点 { if (serialBuf[8] == 0x70) { if (serialBuf[9] == 0x0D && serialBuf[10] == 0xB1 && serialBuf[11] == 0xDB) { eArgs = new SerialEventArgs("reF2"); } else if (serialBuf[9] == 0x0c && serialBuf[10] == 0x38 && serialBuf[11] == 0xca) { eArgs = new SerialEventArgs("reT1"); } } } else if (serialBuf[2] == 0xF6) //呼叫器呼叫 { if (serialBuf[7] == 0x0c && serialBuf[8] == 0x38 && serialBuf[9] == 0xca) //T1呼叫 { eArgs = new SerialEventArgs("toT1"); } else if (serialBuf[7] == 0x0e && serialBuf[8] == 0x2a && serialBuf[9] == 0xe9)//T2呼叫 { eArgs = new SerialEventArgs("toT2"); } } try { if ((null != serialEvent) && (eArgs != null)) { serialEvent(this, eArgs); serialBuf.Clear();//有效帧 } else if ((serialBuf.Count == 11) && (eArgs == null)) { serialBuf.Clear();//无效命令帧 } else if (serialBuf.Count >= 13) { serialBuf.Clear(); } } catch (Exception x) { Console.WriteLine(x.Message); } }
public void agvSerialRemoteEvent(object sender, SerialEventArgs e) { ++callNum; if (callNum == 1) { Invoke(new niming(button8.PerformClick)); //初始化 } Invoke(new niming(button1.PerformClick)); //AGV1 try { switch (e.Message) { case "toT1": Invoke(new niming(Station1.PerformClick)); Invoke(new niming(button9.PerformClick)); break; case "toT2": Invoke(new niming(Station2.PerformClick)); Invoke(new niming(button9.PerformClick)); break; case "reF2": //aTimer1.Elapsed -= new ElapsedEventHandler(OnTimedEvent1); startPositon = "F2"; Invoke(new niming(SetLocation1)); Invoke(new niming(SetStartStation1)); Invoke(new niming(StartStation.PerformClick)); Invoke(new niming(button9.PerformClick)); break; case "reT1": startPositon = "T1"; Invoke(new niming(SetLocation1)); Invoke(new niming(SetStartStation1)); Invoke(new niming(StartStation.PerformClick)); Invoke(new niming(button9.PerformClick)); break; } } catch (Exception x) { Console.WriteLine(x.Message); } }