コード例 #1
0
ファイル: Com.cs プロジェクト: ekenna510/bigbot
        ConfigArgs ParseConfig(byte[] Data)
        {   // 0123456790123456789012345
            // $07C 00 S 70 72 00 00 00Z\n


            ConfigArgs oArgs = new ConfigArgs();

            if (Data.Length == 25)
            {
                if (Data[1] == 48 && Data[2] == 55)
                {
                    oArgs.CompassAddress = ParseHex(Data, 4, 3);
                    oArgs.SonarAddress1  = ParseHex(Data, 10, 3);
                    oArgs.SonarAddress2  = ParseHex(Data, 13, 3);
                    oArgs.SonarAddress3  = ParseHex(Data, 16, 3);
                    oArgs.SonarAddress4  = ParseHex(Data, 19, 3);
                    oArgs.SonarAddress5  = ParseHex(Data, 22, 3);
                }
            }
            return(oArgs);
        }
コード例 #2
0
ファイル: Com.cs プロジェクト: ekenna510/bigbot
        private void ProcessIncomingData(List <byte> PortBuffer)
        {
            byte[] Data;

            int Front, Back = 0;

            if (PortBuffer.Count > 0)
            {
                Front = PortBuffer.IndexOf((byte)36);
                if (Front > -1)
                {
                    Back = PortBuffer.IndexOf((byte)10, Front);
                    if (Back > -1)
                    {
                        Data = new byte[Back - Front];
                        PortBuffer.CopyTo(Front, Data, 0, Back - Front);
                        Front = ((Data[1] - 48) * 10) + (Data[2] - 48);
                        switch (Front)
                        {
                        case (int)RobotOutputType.Announcement:
                            if (this.AnnounceReceived != null)
                            {
                                AnnounceArgs oArgs = new AnnounceArgs();
                                this.AnnounceReceived(this, oArgs);
                            }
                            break;

                        case (int)RobotOutputType.Error:

                            if (this.ErrorReceived != null)
                            {
                                ErrorArgs oArgs = ParseError(Data);
                                this.ErrorReceived(this, oArgs);
                            }

                            break;

                        case (int)RobotOutputType.Sensor:
                            if (this.OutputReceived != null)
                            {
                                OutputArgs oArgs = ParseSensor(Data);
                                this.OutputReceived(this, oArgs);
                            }

                            break;

                        case (int)RobotOutputType.Acknowledge:
                            if (this.ACKReceived != null)
                            {
                                ACKArgs oArgs = new ACKArgs();
                                oArgs.TimeStamp = ParseHex(Data, 3, 6);
                                this.ACKReceived(this, oArgs);
                            }
                            break;

                        case (int)RobotOutputType.Configuration:
                            if (this.ConfigReceived != null)
                            {
                                ConfigArgs oArgs = ParseConfig(Data);
                                this.ConfigReceived(this, oArgs);
                            }
                            break;

                        default:
                            break;
                        }
                        PortBuffer.RemoveRange(0, Back);
                        // Search through the bytes to find the data you want
                        // then remove the data from the list. It is good to
                        // clean up unused bytes (usually everything before
                        // what you're looking for)
                    }

                    //                    System.Windows.Forms.Message  M = new System.Windows.Forms.Message("a");
                    //                    MessageReceivedCallBack
                }
            }
        }