卡一卡2卡3卡精品网站-日本亲与子乱人妻hd-heyzo高清中文字幕在线-岳妇伦丰满69xx

  • 您的位置:首頁 > 新聞動態 > 技術文章

    串口通信的MPU姿態傳感器數據包解析技術

    2018/1/19??????點擊:

    本程序段描述了MPUXXX姿態傳感器通過串口發送給主機時的數據包解析過程,僅供參考。

    void Analysize_Data()
            {

               float CurrentTimeCounter = 0;

                while (true)
                {
                    bool data_1_catched = false;//緩存記錄數據是否捕獲到  
                    //int  CurrentTimeCounter = 0;
                    int buffer_len = buffer.Count;//獲取buffer長度

                    while (buffer.Count >= 5)//至少要包含頭(2字節) +功能字(1字節) +長度(1字節) +校驗(1字節)
                    {
                        //1 查找數據頭  
                        if (buffer[0] == 0x55 && buffer[1] == 0xaa)//檢測是否是包頭
                        {
                            int len = buffer[3];//數據長度  
                            //數據不夠時移除數據
                            if (buffer.Count < len + 5)
                            {
                                buffer.RemoveRange(0, buffer.Count - 1);
                                break;
                            }
                            if (buffer[3] == 0x06) //該幀長度16字節//數據位沒有0x06位
                            {
                                Ctrl_Roll = (float)(((short)((buffer[4] << 8) | buffer[5])) / 100.0);//解析協議的,提取數據并將16進制轉換為10進制,
                                Ctrl_Pitch = (float)(((short)((buffer[6] << 8) | buffer[7])) / 100.0);
                                Ctrl_Yaw = (float)(((short)((buffer[8] << 8) | buffer[9])) / 10.0);
                                data_1_catched = true;
                                buffer.RemoveRange(0, len + 4);//正確分析一條數據,從緩存中移除數據。數據移除 
                                if (data_1_catched)
                                {
                                    //更新界面  
                                    this.Invoke((EventHandler)(delegate//對監控的數據的實時曲線進行跟新
                                    {
                                        chart1.Series[0].Points.AddXY(CurrentTimeCounter, Ctrl_Roll);
                                        chart1.Series[1].Points.AddXY(CurrentTimeCounter, Ctrl_Pitch);
                                        chart1.Series[2].Points.AddXY(CurrentTimeCounter, Ctrl_Yaw);                                                                                                                                          
                                    }));
                                }
                            }
                            else
                            {
                                buffer.RemoveAt(0);
                                break;
                            }
                        }
                        else
                        {      //這里是很重要的,如果數據開始不是頭,則刪除數據  
                            buffer.RemoveAt(0);
                        }
                    }
                }

            }


        WONGLOVE將一直關注*實用的編程技術,以饗網友。


    主站蜘蛛池模板: 泰宁县| 漳平市| 长寿区| 唐海县| 清远市| 岳池县| 仲巴县| 边坝县| 宜兴市| 靖西县| 禹城市| 皮山县| 肇源县| 景洪市| 昭苏县| 张家界市| 安远县| 天全县| 苗栗市| 庆城县| 商水县| 岱山县| 墨脱县| 鞍山市| 镇巴县| 凤山市| 铅山县| 竹北市| 宜宾县| 大城县| 哈尔滨市| 呼和浩特市| 清水河县| 灯塔市| 杭锦旗| 桃园县| 漯河市| 论坛| 祁连县| 安乡县| 乌拉特前旗|