串口接收数据问题求教-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 561|回复: 3

[过期] 串口接收数据问题求教

[复制链接]
发表于 2022-8-13 22:59 | 显示全部楼层 |阅读模式
本帖最后由 weiwei1990321 于 2022-8-14 13:48 编辑

已解决,补一下解决方式,以免以后的萌新入坑
串口接收的是16进制,我在判断条件里是36(10进制),所以才导致判断失败了,改成了0x24就可以了


正常主动接收下面数据正常
//接收数01 03 20 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 01 00 01 00 00 00 00 00 01 00 01 00 01 38 C6
但是串口有其他指令来了后就不正常了,就一直返回0xff。输出了一下后上一条数据的尾部有几行数据到了下一个数据包里了,相当于变成了
01 00 01 00 00 00 00 00 01 00 01 00 01 38 C6 01 03 20 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00
导致数据结构出错。
我是想等待串口数据完成37条数据接收后判断只是是01 03后再打印。萌新不知道如何解决,请求各位大神帮忙看看哈。感谢.
        
        if(Serial6.available() > 0){
                showda[showint] = Serial6.read();
                showint++;
        }else{
                if(showint>36){
                        if(showda[0]==0x01 and showda[1]==0x03){
                                Serial.write(showda,sizeof(showda));
                        }else{
                                Serial.write(0xff);
                        }
                        showint=0;
                }
        }


发表于 2022-8-14 03:40 | 显示全部楼层
void setup() {
  Serial.begin(115200);
}

void loop() {
  if ( Serial.available() == 1 ) {   
    Serial.print(Serial.readString());
  }
}

跑这个看看,收到并发回的字符串是否一致。
发表于 2022-8-14 10:38 | 显示全部楼层
 楼主| 发表于 2022-8-14 11:31 | 显示全部楼层
kpj001 发表于 2022-8-14 03:40
void setup() {
  Serial.begin(115200);
}

你好,外设厂家给出的数据是01 03 20 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 01 00 01 00 00 00 00 00 01 00 01 00 01 38 C6,收到就转发也是01 03 20 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 01 00 01 00 00 00 00 00 01 00 01 00 01 38 C6一致。我判断收到>36个后就判断数组中0和1就会出问题了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-30 23:54 , Processed in 0.243814 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表