コード例 #1
0
ファイル: SerialXbee.cs プロジェクト: KiLMaN/LPIE_Robot_Color
        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");
            }
        }
コード例 #2
0
ファイル: Protocol.cs プロジェクト: AsBilou/LPIE_Robot_Color
        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());
        }
コード例 #3
0
ファイル: Protocol.cs プロジェクト: AsBilou/LPIE_Robot_Color
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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());
        }
コード例 #6
0
ファイル: Protocol.cs プロジェクト: AsBilou/LPIE_Robot_Color
        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);
        }
コード例 #7
0
        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;
            }
        }
コード例 #8
0
ファイル: Protocol.cs プロジェクト: AsBilou/LPIE_Robot_Color
        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);
        }
コード例 #9
0
ファイル: Protocol.cs プロジェクト: AsBilou/LPIE_Robot_Color
        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();
        }
コード例 #10
0
ファイル: Protocol.cs プロジェクト: AsBilou/LPIE_Robot_Color
        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;
        }
コード例 #11
0
ファイル: Protocol.cs プロジェクト: AsBilou/LPIE_Robot_Color
 ushort crc16_protocole(TrameProtocole trame)
 {
     return crc16.calc_crc16(getBytes(trame), trame.length + 5);
 }
コード例 #12
0
ファイル: Protocol.cs プロジェクト: AsBilou/LPIE_Robot_Color
        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);
        }
コード例 #13
0
ファイル: Protocol.cs プロジェクト: AsBilou/LPIE_Robot_Color
        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;
        }
コード例 #14
0
ファイル: Protocol.cs プロジェクト: AsBilou/LPIE_Robot_Color
 ushort crc16_protocole(TrameProtocole trame)
 {
     return(crc16.calc_crc16(getBytes(trame), trame.length + 5));
 }
コード例 #15
0
ファイル: Protocol.cs プロジェクト: KiLMaN/LPIE_Robot_Color
 public static ushort crc16_protocole(TrameProtocole trame)
 {
     return crc16.calc_crc16(Protocol.getBytes(trame), trame.length + 5);
 }