900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > arduino串口接收数据包_Arduino 串口接收转发十六进制数据 软串口收不到数据

arduino串口接收数据包_Arduino 串口接收转发十六进制数据 软串口收不到数据

时间:2020-08-30 00:38:40

相关推荐

arduino串口接收数据包_Arduino 串口接收转发十六进制数据 软串口收不到数据

我是Arduino初学者,今日尝试用Arduino nano 收串口发来16进制数据,再由软串口转发给下级设备,下级设备返回16进制数据。首先简单测试代码如下:

#include

SoftwareSerial mySerial(2,3);

void setup(){

Serial.begin(9600);

mySerial.begin(9600);

}

void loop(){

if (Serial.available() > 0) {

mySerial.write(Serial.read());

}

if (mySerial.available() > 0) {

Serial.write(mySerial.read());

}

}

使用串口助手发送数据,接收返回数据正常如下:

[14:18:18.096]发→◇FE FD 01 35 01 2D 01 35 01 B6 3D 9F 3B 33 3E A1 39 35 39 35 3C A1 3C 9F 3B 33 3E 9F 3B 33 3B A2 3B 35 39 33 3B 35 39 33 3B 33 3E 30 3B 33 3E 32 38 36 39 32 43 2B 3B 35 39 33 3B 33 3B 35 39 33 3E 32 39 33 3B 33 3B 35 3C 32 39 35 39 33 3B 33 3B 33 3B 35 3C 30 3B 33 3B 33 3E A1 39 33 3B A2 3B 33 3B 35 39 33 3B 35 39 33 3B 33 3B 33 3B 33 3B 33 3B 33 3E 30 3B 33 3B 33 3B 33 3E 30 3B A2 3B 33 3B 35 39 33 3B 35 39 33 3B 35 39 33 3A 33 3E 30 3E 32 39 33 3B 35 39 35 39 35 39 33 3E 32 39 35 39 33 3E 30 3B 35 39 35 39 33 3B 33 3B 33 3B 35 39 33 3B 33 3E 30 3E 30 3B 35 39 33 3B 33 3F 31 3C 32 39 33 3B 33 3E 30 3B 35 3C 32 39 35 39 35 39 35 39 A4 39 32 3E 9F 3B 36 38 33 3B 33 3B 33 3B A2 3B 36 38 A5 38 A2 3B A2 3B 33 3B A4 3C A1 39 35 3F 9E 39 33 3E 9F 3B 35 39 33 3B 35 3C 30 41 2F 39 33 3B 35 39 35 39 35 39 35 39 35 39 33 3B 33 3B 33 3B 33 3B 35 39 33 3B 35 39 35 39 35 39 35 39 33 3A 36 39 33 3B 33 3B 33 3A 33 3B 33 3B 33 3E 32 39 33 3B 35 3F 9C 3B 33 3B A2 3E 9F 3E 32 39 A2 3E 30 3B A4 3C FF □

[14:18:18.375]收←◆FE FC CF

现尝试加入在串口无命令发过来的状态下,没间隔1S发送其他定制内容

实验代码如下:

#include

SoftwareSerial mySerial(2,3);

String item;

void setup(){

item = "";

Serial.begin(9600);

mySerial.begin(9600);

}

void loop(){

if (Serial.available() > 0) {

mySerial.write(Serial.read());

} else {

if (mySerial.available() > 0) {

item = String(item) + String(char(mySerial.read()));

} else {

Serial.println("hello");

delay(1000);

}

if (String(item).length() > 0) {

Serial.print(item);

item = "";

}

}

}

输出结果:

[14:33:38.892]收←◆68 65 6C 6C 6F 0D 0A

[14:33:39.893]收←◆68 65 6C 6C 6F 0D 0A

[14:33:40.895]收←◆68 65 6C 6C 6F 0D 0A

[14:33:41.266]发→◇FE FD 01 35 01 2D 01 35 01 B6 3D 9F 3B 33 3E A1 39 35 39 35 3C A1 3C 9F 3B 33 3E 9F 3B 33 3B A2 3B 35 39 33 3B 35 39 33 3B 33 3E 30 3B 33 3E 32 38 36 39 32 43 2B 3B 35 39 33 3B 33 3B 35 39 33 3E 32 39 33 3B 33 3B 35 3C 32 39 35 39 33 3B 33 3B 33 3B 35 3C 30 3B 33 3B 33 3E A1 39 33 3B A2 3B 33 3B 35 39 33 3B 35 39 33 3B 33 3B 33 3B 33 3B 33 3B 33 3E 30 3B 33 3B 33 3B 33 3E 30 3B A2 3B 33 3B 35 39 33 3B 35 39 33 3B 35 39 33 3A 33 3E 30 3E 32 39 33 3B 35 39 35 39 35 39 33 3E 32 39 35 39 33 3E 30 3B 35 39 35 39 33 3B 33 3B 33 3B 35 39 33 3B 33 3E 30 3E 30 3B 35 39 33 3B 33 3F 31 3C 32 39 33 3B 33 3E 30 3B 35 3C 32 39 35 39 35 39 35 39 A4 39 32 3E 9F 3B 36 38 33 3B 33 3B 33 3B A2 3B 36 38 A5 38 A2 3B A2 3B 33 3B A4 3C A1 39 35 3F 9E 39 33 3E 9F 3B 35 39 33 3B 35 3C 30 41 2F 39 33 3B 35 39 35 39 35 39 35 39 35 39 33 3B 33 3B 33 3B 33 3B 35 39 33 3B 35 39 35 39 35 39 35 39 33 3A 36 39 33 3B 33 3B 33 3A 33 3B 33 3B 33 3E 32 39 33 3B 35 3F 9C 3B 33 3B A2 3E 9F 3E 32 39 A2 3E 30 3B A4 3C FF □

[14:33:41.962]收←◆68 65 6C 6C 6F 0D 0A

[14:33:42.962]收←◆68 65 6C 6C 6F 0D 0A

[14:33:43.963]收←◆68 65 6C 6C 6F 0D 0A

[14:33:44.964]收←◆68 65 6C 6C 6F 0D 0A

[14:33:45.964]收←◆68 65 6C 6C 6F 0D 0A

[14:33:46.965]收←◆68 65 6C 6C 6F 0D 0A

[14:33:47.966]收←◆68 65 6C 6C 6F 0D 0A

似乎下级设备没收到数据,无返回值,求助实现方法或解决办法

最终目的是想实现在串口没有发送数据时,按照延时发送数据包如“hello”

在串口收到数据时,向下级设备转发数据,并接受下级设备反馈回来的数据,从串口输出。

回答

你把 Serial.println(“hello”);

delay(1000);

这两句注释掉试一下。要是注释了以后能收到返回值,那就是你在delay的时候发送了数据,然后串口缓冲区溢出了。

#include

SoftwareSerial mySerial(2,3);

String item;

int count;

void setup(){

item = "";

count=0;

Serial.begin(9600);

mySerial.begin(9600);

}

void loop(){

if (Serial.available() > 0) {

mySerial.write(Serial.read());

count=0;

} else {

if (mySerial.available() > 0) {

Serial.write(mySerial.read());

count=0;

} else {

count++;

if (count>100000){

Serial.println("hello");

count=0;

}

}

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。