与终端进行串口通信,终端一有动作就会一直向MCU发送10个字节一组的AA 73 XX XX XX XX CC 33 C3 3C数据,动作结束后发送AA 72 XX XX XX XX CC 33 C3 3C数据,而MCU要进行处理和有用的数据就是最后的这组,可以用C语言的什么语句结构来判断串口已经收到这组数据呢?
有没有考虑到如果数据中出现 AA 73 或 AA 72 之类的数据。
例如下面这组数据将如何判断:
AA 73 XX XX AA 73 CC 33 C3 3C CC 33 C3 3C
AA 73 XX XX XX XX CC 33 C3 3C
AA 73 XX XX XX XX CC 33 C3 3C
建议将接收缓冲区定大一点,如uchar msg[20];
当接收的数据头或尾存在着垃圾数据时,比如插入垃圾数据YY:
YY YY YY AA 73 XX XX AA 73 CC 33 C3 3C
AA 73 XX XX XX XX CC 33 C3 3C YY YY YY
YY YY YY AA 73 XX XX XX XX CC 33 C3 3C YY YY YY
for (i=0;i<RxNum;i++)
{
if( (0xaa== msg[0+i]) &&
(0x72== msg[1+i]) &&
(0xcc== msg[6+i]) &&
(0x33== msg[7+i]) &&
(0xc3== msg[8+i]) &&
(0x3c== msg[9+i]))
{
建议将接收缓冲区定大一点,如uchar msg[20];
当接收的数据头或尾存在着垃圾数据时,比如插入垃圾数据YY:
YY YY YY AA 73 XX XX AA 73 CC 33 C3 3C
AA 73 XX XX XX XX CC 33 C3 3C YY YY YY
YY YY YY AA 73 XX XX XX XX CC 33 C3 3C YY YY YY
for (i=0;i<RxNum;i++)
{
if( (0xaa== msg[0+i]) &&
(0x72== msg[1+i]) &&
(0xcc== msg[6+i]) &&
(0x33== msg[7+i]) &&
(0xc3== msg[8+i]) &&
(0x3c== msg[9+i]))
{
建议将接收缓冲区定大一点,如uchar msg[20];
当接收的数据头或尾存在着垃圾数据时,比如插入垃圾数据YY:
YY YY YY AA 73 XX XX AA 73 CC 33 C3 3C
AA 73 XX XX XX XX CC 33 C3 3C YY YY YY
YY YY YY AA 73 XX XX XX XX CC 33 C3 3C YY YY YY
for (i=0;i<RxNum;i++)
{
if( (0xaa== msg[0+i]) &&
(0x72== msg[1+i]) &&
(0xcc== msg[6+i]) &&
(0x33== msg[7+i]) &&
(0xc3== msg[8+i]) &&
(0x3c== msg[9+i]))
{