日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

pelco-d协议数据解析示例

發布時間:2025/5/22 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pelco-d协议数据解析示例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

pelco-d協議數據解析示例

286人閱讀 評論(0) 收藏 舉報 本文章已收錄于: 分類: 程序編程(12) 作者同類文章X
    代碼工人的倉庫(36) 作者同類文章X
      代碼生活(42) 作者同類文章X
        

        前段時間寫了有關pelco協議的一些筆記,后來,有個小模塊是接收pelco格式的數據,然后解析出是什么命令,于是又寫了個簡單的解析函數。這個函數沒什么技術含量。主要思路:

        1、逐字節解析,保證每一字節都處理到;
        2、找到0xff,此為命令頭;
        3、找到命令結束字符,方法是根據pelco命令組裝的算法,——其實就是當某一字節的值是前面幾個的校驗和就結束,有一點要校驗和正確但長度不符合pelco標準的情況,比如出現0x01,0x02,0x03,根據校驗方法是正確的,但它不是正確的命令,pelco文檔有提到命令都是7個字節的,但有的文檔的命令多于7字節,于是,統一用7字節或以上為判斷。
        4、結束,找到了一個命令。

        代碼如下:

        [cpp] view plaincopy print?
      • static?void?protocol_d(unsigned?char*?buffer,?int?len)??
      • {??
      • ????unsigned?char*?tmp?=?NULL;??
      • ????int?cksm?=?0;??
      • ????unsigned?char?ch?=?0;??
      • ????int?tmp_len?=?len;??
      • ??
      • ????int?cmd_len?=?0;??
      • ????unsigned?char*?cmd_ptr?=?NULL;??
      • ??
      • ????tmp?=?buffer;??
      • ??????
      • ????while?(tmp_len?>?0)??
      • ????{??
      • ????????while?(*tmp?!=?0xff)??
      • ????????{??
      • ????????????tmp++;??
      • ????????????tmp_len--;??
      • ????????????if?(tmp_len?<=?0)??
      • ????????????goto?end;??
      • ????????}??
      • ???
      • ????????cmd_ptr?=?tmp;???
      • ????????//?第一個字節??
      • ????????ch?=?*(++tmp);??
      • ????????cksm?+=?ch;??
      • ????????cmd_len?=?2;??
      • ????????tmp_len--;??
      • ??
      • ????????while?(tmp_len?>?0)??
      • ????????{??
      • ????????????ch?=?*(++tmp);??
      • ????????????cmd_len++;??
      • ????????????tmp_len--;??
      • ????????????if?(ch?==?cksm?&&?cmd_len?>=?7)??
      • ????????????{??
      • ????????????????dump_cmd(NULL,?cmd_ptr,?cmd_len);??
      • ????????????????//找到了命令,就可以做其它事情了。???
      • ????????????????cksm?=?0;??
      • ????????????????break;??
      • ????????????}??
      • ????????????cksm?+=?ch;??
      • ????????????cksm?%=?0x100;??
      • ????????}??
      • ??
      • end:??
      • ????????;??
      • ????}??
      • }??
      • static void protocol_d(unsigned char* buffer, int len) {unsigned char* tmp = NULL;int cksm = 0;unsigned char ch = 0;int tmp_len = len;int cmd_len = 0;unsigned char* cmd_ptr = NULL;tmp = buffer;while (tmp_len > 0){while (*tmp != 0xff){tmp++;tmp_len--;if (tmp_len <= 0)goto end;}cmd_ptr = tmp; // 第一個字節ch = *(++tmp);cksm += ch;cmd_len = 2;tmp_len--;while (tmp_len > 0){ch = *(++tmp);cmd_len++;tmp_len--;if (ch == cksm && cmd_len >= 7){dump_cmd(NULL, cmd_ptr, cmd_len);//找到了命令,就可以做其它事情了。 cksm = 0;break;}cksm += ch;cksm %= 0x100;}end:;} }


        測試代碼如下,特意加了些干擾的字符。

        [cpp] view plaincopy print?
      • int?serial_simple_test()??
      • {??
      • #define?LEN?(5*7+2+2+2+3)??
      • ????unsigned?char?buffer[LEN]?=?{??
      • ????0x11,?0x8,?0xff,?0x01,?0x00,?0x08,?0x00,?0x01,?0x0a,???
      • ????0xff,?0x01,?0x00,?0x08,?0x00,?0x02,?0x0b,?0x9,??
      • ????0xff,?0x01,?0x00,?0x00,?0x00,?0x00,?0x01,??
      • ????0xff,?0x01,?0x00,?0x0c,?0x0d,?0x08,?0x22,0x9,??
      • ????0xff,?0x01,?0x00,?0x01,?0x01,?0x03,?0x6,?0x01,?0x05,???
      • ????};??
      • ????protocol_d(buffer,?LEN);??
      • ????return?0;??
      • }??
      • int serial_simple_test() { #define LEN (5*7+2+2+2+3)unsigned char buffer[LEN] = {0x11, 0x8, 0xff, 0x01, 0x00, 0x08, 0x00, 0x01, 0x0a, 0xff, 0x01, 0x00, 0x08, 0x00, 0x02, 0x0b, 0x9,0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01,0xff, 0x01, 0x00, 0x0c, 0x0d, 0x08, 0x22,0x9,0xff, 0x01, 0x00, 0x01, 0x01, 0x03, 0x6, 0x01, 0x05, };protocol_d(buffer, LEN);return 0; }


        李遲記于2014年8月14日

        0
        0

        我的同類文章

        程序編程(12) 代碼工人的倉庫(36) 代碼生活(42) http://blog.csdn.net
        • ?GCC編譯警告選項的學習2015-12-11閱讀95
        • ?gcc較高版本的一些編譯警告收集2015-05-06閱讀436
        • ?遇到一個日志文件變化帶來的文件句柄問題2015-01-25閱讀199
        • ?遇到一個gcc編譯器版本導致的運行結果有差異的問題2015-01-17閱讀236
        • ?pelco協議及其實現的簡單認識2014-07-03閱讀342
        • ?一個可變參數類型檢查的示例2015-05-06閱讀140
        • ?參考ethtool寫了個Linux設置、獲取網卡模式的接口2015-03-30閱讀294
        • ?再記一下sscanf的一個小問題2015-01-18閱讀237
        • ?初識PCI2015-02-09閱讀200
        • ?visca協議及其實現的簡單認識2014-06-30閱讀768
        更多文章

        總結

        以上是生活随笔為你收集整理的pelco-d协议数据解析示例的全部內容,希望文章能夠幫你解決所遇到的問題。

        如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

        主站蜘蛛池模板: av在线免费网址 | 久久网站免费看 | 欧美性久久久 | 91爱啪啪| 非洲黄色一级片 | 性xxxx视频播放免费 | 欧美精品久久久久久久久久 | 欧美成片vs欧美 | av日韩不卡 | 华人永久免费 | 九热在线视频 | 亚洲精品一区二区三区蜜桃 | 欧美干 | 国内自拍小视频 | 悟空影视大全免费高清观看在线 | 成人美女毛片 | 一区二区三区国 | 撸啊撸在线视频 | 激情综合啪啪 | 97视频总站 | 国产高清露脸 | 污视频免费在线 | 深夜福利国产精品 | 成人做爰69片免费看 | 久久精品3 | 麻豆视频在线观看免费 | 国产av无码专区亚洲av毛片搜 | 国产精品久久久精品三级 | 鸥美一级片| 少妇天天干 | 国产精品久久久久久久久久 | 欧美日韩在线视频免费观看 | 欧美v日本 | 探花视频在线版播放免费观看 | 欧美日韩麻豆 | 精品国产露脸精彩对白 | 欧美性色黄大片手机版 | 老妇free性videosxx | 色就色欧美 | 日韩中文字幕一区二区三区四区 | 中文字幕素人 | 午夜影院久久久 | 在线观看黄色片 | 国产男女猛烈无遮挡 | 精品国产亚洲av麻豆 | 久久亚洲a v | 成人午夜在线观看视频 | 中文字幕在线视频精品 | 朝鲜美女黑毛bbw | av小说免费在线观看 | www.18av| 国产男女av | 欧美日韩久久久 | xxxⅹ少妇少妇xxxx | h片在线免费看 | 肥臀浪妇太爽了快点再快点 | 欧美日韩国产在线 | 久久99综合 | 麻豆影视国产在线观看 | 冲田杏梨一区二区三区 | 亚洲精品日韩在线观看 | 日韩欧美亚洲成人 | 国产色网站| 国产精品丝袜一区二区 | 性爱免费在线视频 | 欧美日韩在线观看成人 | 综合网五月 | 无码精品一区二区免费 | 91porny丨首页入口在线 | 日本韩国中文字幕 | 97在线观视频免费观看 | 成人免费毛片高清视频 | 亚洲风情第一页 | 国外成人免费视频 | 国产又黄又猛 | 青青草中文字幕 | 国产噜噜噜 | 日韩专区第一页 | av大片在线观看 | 国产av第一区 | 女性生殖扒开酷刑vk | 蜜桃免费av | 污视频网站免费观看 | 91精品国产综合久久久久 | 奴性白洁会所调教 | 精品无码久久久久久久久久 | 黄色自拍视频 | 久久久久99精品国产片 | 男人和女人做爽爽视频 | 成人毛片在线免费观看 | 少妇高潮喷水在线观看 | 日本性爱动漫 | 一区二区视频在线观看免费 | 中文在线8资源库 | 国产日本欧美一区二区 | 久久综合88| 亚洲伊人av| 日本免费黄色网址 | 91av免费看|