public void _PortSerie_DataReceived(object sender, SerialDataReceivedEventArgs arg) { Logger.GlobalLogger.debug("_PortSerie_DataReceived"); TrameProtocole trame = _protocol.getTrame(); // recuperre la trame reçue if (Protocol.crc16_protocole(trame) == trame.crc) // Verification du CRC { Logger.GlobalLogger.debug("CRC OK"); byte idSource = trame.src; ArduinoBots robot = FlotteRobots.Find(ArduinoBots.ById(idSource)); if (robot == null) // Robot inconnu { Logger.GlobalLogger.info("Robot inconnu, Creation Nouveau robot"); robot = new ArduinoBots(idSource); FlotteRobots.Add(robot); } if (trame.dst == BROADCAST_ID) // Broadcast { } else if (trame.dst == COMPUTER_ID) // Ordi { } else { } } else { Logger.GlobalLogger.error("CRC FAILED"); } }
private byte[] MakeTrameBinary(TrameProtocole trame) { List <byte> trameBinary = new List <byte>(); trameBinary.Add((byte)ProtocoleChar.PROTOCOL_START_1); trameBinary.Add((byte)ProtocoleChar.PROTOCOL_START_2); addToTrameBinary(trameBinary, trame.src); addToTrameBinary(trameBinary, trame.dst); addToTrameBinary(trameBinary, (byte)(trame.num >> 8)); addToTrameBinary(trameBinary, (byte)(trame.num & 0xFF)); addToTrameBinary(trameBinary, trame.length); foreach (byte data in trame.data) { addToTrameBinary(trameBinary, data); } addToTrameBinary(trameBinary, (byte)(trame.crc >> 8)); addToTrameBinary(trameBinary, (byte)(trame.crc & 0xFF)); trameBinary.Add((byte)ProtocoleChar.PROTOCOL_STOP); return(trameBinary.ToArray()); }
public void SendTrame(TrameProtocole trame) { if (PortSerie == null) { return; } if (!PortSerie.IsOpen) { return; } byte[] Bin = MakeTrameBinary(trame); Log.log(Bin.ToString()); PortSerie.Write(Bin, 0, Bin.Length); }
private void sendMoveMessage(bool Sens) { PCtoEMBMessageMove Message = new PCtoEMBMessageMove(); Message.headerMess = (byte)PCtoEMBmessHeads.MOVE; Message.sens = (byte)((Sens) ? 0x01 : 0x00); Message.speed = (byte)0xF0; Message.distance = (byte)0xF0; byte[] data = Message.getBytes(); byte Dst = (byte)Convert.ToUInt16(txt_idDst.Text); byte Src = (byte)Convert.ToUInt16(txt_idSrc.Text); TrameProtocole pTrame = g_Protocol.MakeTrame(Src, Dst, g_ProtocolCpt, data); }
private void sendTurnMessage(bool Sens) { PCtoEMBMessageTurn Message = new PCtoEMBMessageTurn(); Message.headerMess = (byte)PCtoEMBmessHeads.TURN; Message.direction = (byte)((Sens) ? 0x01 : 0x00); Message.angle = (byte)0x5A; byte[] data = Message.getBytes(); byte Dst = (byte)Convert.ToUInt16(txt_idDst.Text); byte Src = (byte)Convert.ToUInt16(txt_idSrc.Text); TrameProtocole pTrame = g_Protocol.MakeTrame(Src, Dst, g_ProtocolCpt, data); g_Logger.debug(pTrame.data.ToString()); }
public TrameProtocole MakeTrame(byte src, byte dst, ushort num, byte[] data) { if (data.Length > BUFFER_DATA_IN) { return(default(TrameProtocole)); } TrameProtocole trame = new TrameProtocole(); trame.src = src; trame.dst = dst; trame.num = num; trame.length = Convert.ToByte(data.Length); trame.data = data; trame.crc = crc16_protocole(trame); return(trame); }
public void traiterNouvelleTrameRecu(TrameProtocole trame) { if (trame.data.Length != trame.length) { Logger.GlobalLogger.error("traiterNouvelleTrameRecu : trame.data.Length != trame.length"); return; } if (trame.length >= 1 && trame.data.Length == trame.length) { EMBtoPCmessHeads header = (EMBtoPCmessHeads)trame.data[0]; // Recuperation de l'entete du message Logger.GlobalLogger.info("HEADER : " + header.ToString()); switch (header) { case EMBtoPCmessHeads.ASK_CONN: TraiterMessageASK_CONN((EMBtoPCMessageAskConn)trame.data); break; case EMBtoPCmessHeads.ACK: TraiterMessageACK((EMBtoPCMessageGlobalAck)trame.data); break; case EMBtoPCmessHeads.RESP_PING: TraiterMessageRESP_PING((EMBtoPCMessageRespPing)trame.data); break; case EMBtoPCmessHeads.RESP_SENSOR: TraiterMessageRESP_SENSOR((EMBtoPCMessageRespSensor)trame.data); break; default: Logger.GlobalLogger.error("Header Inconnu !"); break; } } else { Logger.GlobalLogger.error("traiterNouvelleTrameRecu : trame.data.Length == 0"); return; } }
byte[] getBytes(TrameProtocole trame) { byte[] retVal = new byte[trame.length + 5]; /*public byte src; * public byte dst; * public ushort num; * public byte length; * public byte[] data;*/ int index = 0; retVal[index++] = trame.src; retVal[index++] = trame.dst; retVal[index++] = (byte)(trame.num >> 8); retVal[index++] = (byte)(trame.num & 0xFF); retVal[index++] = trame.length; foreach (byte data in trame.data) { retVal[index++] = data; } return(retVal); }
private byte[] MakeTrameBinary(TrameProtocole trame) { List<byte> trameBinary = new List<byte>(); trameBinary.Add((byte)ProtocoleChar.PROTOCOL_START_1); trameBinary.Add((byte)ProtocoleChar.PROTOCOL_START_2); addToTrameBinary(trameBinary, trame.src); addToTrameBinary(trameBinary, trame.dst); addToTrameBinary(trameBinary, (byte)(trame.num >> 8)); addToTrameBinary(trameBinary, (byte)(trame.num & 0xFF)); addToTrameBinary(trameBinary, trame.length); foreach (byte data in trame.data) addToTrameBinary(trameBinary, data); addToTrameBinary(trameBinary, (byte)(trame.crc >> 8)); addToTrameBinary(trameBinary, (byte)(trame.crc & 0xFF)); trameBinary.Add((byte)ProtocoleChar.PROTOCOL_STOP); return trameBinary.ToArray(); }
byte[] getBytes(TrameProtocole trame) { byte[] retVal = new byte[trame.length + 5]; /*public byte src; public byte dst; public ushort num; public byte length; public byte[] data;*/ int index = 0; retVal[index++] = trame.src; retVal[index++] = trame.dst; retVal[index++] = (byte)(trame.num >> 8); retVal[index++] = (byte)(trame.num & 0xFF); retVal[index++] = trame.length; foreach (byte data in trame.data) retVal[index++] = data; return retVal; }
ushort crc16_protocole(TrameProtocole trame) { return crc16.calc_crc16(getBytes(trame), trame.length + 5); }
public void SendTrame(TrameProtocole trame) { if (PortSerie == null) return; if (!PortSerie.IsOpen) return; byte[] Bin = MakeTrameBinary(trame); Log.log(Bin.ToString()); PortSerie.Write(Bin, 0,Bin.Length); }
public TrameProtocole MakeTrame(byte src, byte dst, ushort num, byte[] data) { if (data.Length > BUFFER_DATA_IN) return default(TrameProtocole); TrameProtocole trame = new TrameProtocole(); trame.src = src; trame.dst = dst; trame.num = num; trame.length = Convert.ToByte(data.Length); trame.data = data; trame.crc = crc16_protocole(trame); return trame; }
ushort crc16_protocole(TrameProtocole trame) { return(crc16.calc_crc16(getBytes(trame), trame.length + 5)); }
public static ushort crc16_protocole(TrameProtocole trame) { return crc16.calc_crc16(Protocol.getBytes(trame), trame.length + 5); }