极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13224|回复: 4

求da神,这是什么情况?发射接收不一样

[复制链接]
发表于 2015-4-9 17:08:57 | 显示全部楼层 |阅读模式
打算用3dr radio 无线通信在PC和arduino小车间传输位置信息。但发射端和接收端数据不一样。
int adr;//定义变量adr

void setup()
{
Serial.begin(9600);//设置波特率为57600,这里要跟软件设置相一致。当接入特定设备(如:蓝牙)时,我们也要跟其他设备的波特率达到一致。
}
void loop()
{
  if(Serial.available()>0)//查询串口有无数据
  {
    adr=Serial.read();//读取PC 机发送给Arduino 的指令并赋给adr
    Serial.println(adr);
    Serial.flush();
  }
}
  

PC不断发送1,小车端接收的是255,254什么的。

发射数据不同,接收数据也不同。发射相同数据,每次接收的数据也会有微小差别。
这是多次发送"arduino"接收到的数据:

到底怎么回事

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2015-4-9 18:19:40 | 显示全部楼层
不断发送1,小车端接收的是255,254什么的,为什么不是一个稳定的数据?
回复 支持 反对

使用道具 举报

发表于 2015-4-11 19:12:37 | 显示全部楼层
本帖最后由 edyd 于 2015-4-11 19:32 编辑

1、Serial.println是输出ascii码。。。
2、用Serial.println来输出一个int量,你自然看不懂了。

如果输入数据是数字,建议将串口输入的数据转换成int类型数据再以Serial.print输出,这样就能正常显示;

如果输入的数据是byte类型,输出也用byte,建议用Serial.write函数输出。

另外,看你的输入是用一个int变量来接收的,那么一次输入只能接受两个字节的数据,并且会将你以ASCII码输入的字符转换成int变量后输出,所以你看到的不一样了。

如果处理方式用字符串数组,或者string变量来弄的话,就不会有你这样的问题了,string的串口输入输出,请参考communication下面的SerialEvent例程。
回复 支持 反对

使用道具 举报

发表于 2015-4-11 20:01:59 | 显示全部楼层
另外,我没有你的那个终端,你这个程序,arduino跟电脑自己通讯自己玩是可以的,保证内部处理方式一致,但如果是两个单独的东西(arduino和小车)的话,两机对数据的编码方式不同,则会导致你这样的情况出现。为了保证一致,建议采用ascii码进行发送和接收。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2015-4-11 20:05:30 | 显示全部楼层
把程序改下,发送和接收就一样了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-29 23:53 , Processed in 0.046254 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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