有一个全局数组global用来接受由串口发来的数据,接受的数据为以下形式:
+RES:0000000064000000jkljsfajandsjkhflksajieuoiwhnhsdfiaujwjeo第一桢其中00000000为地址偏移量64000000为长度都为16进制的
+RES:6400000064000000weuqiojunfasiuoewnhajfkdajlsajfdsjlaskjei第二桢
程序要求首先识别出+RES是要接受的数据然后根据后面的两个值来判断一桢的数据,如果是一桢数据就发任意一个动作
如果不是就忽略继续向下查找,如果长度部分为00000000就结束查找
+RES:0000000064000000jkljsfajandsjkhflksajieuoiwhnhsdfiaujwjeo第一桢其中00000000为地址偏移量64000000为长度都为16进制的
+RES:6400000064000000weuqiojunfasiuoewnhajfkdajlsajfdsjlaskjei第二桢
程序要求首先识别出+RES是要接受的数据然后根据后面的两个值来判断一桢的数据,如果是一桢数据就发任意一个动作
如果不是就忽略继续向下查找,如果长度部分为00000000就结束查找
提取出16进制字符串后使用strtol或者sscanf转成数字,
再用于计算。
怎么确定一桢,判断的规则是什么?
测试 数组头 判断是否是 "+Res"
2 同步成功,获取接下来的8个字符,转成16进制数 得到偏移地址
3 获取接下来的8个字符,转成16进制数,得到数据长度
4 如果数据长度不为0开始获取数据 ,否则结束。以上简单整理了一下 处理串的流程,代码应该比较容易
好吧,我们来点简单的
首先,假定收到了一串串口数据,存于大小属性为BYTE的数组
然后现在数组里就是一堆待判断的数了,暂不管字串什么的,直接当做解一道初中数学题,判断一下是什么情况,就OK了