找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 11520|回复: 5
打印 上一主题 下一主题
收起左侧

arduino串口接收十六进制数,思路有点混乱求分析

[复制链接]
跳转到指定楼层
楼主
ID:367356 发表于 2018-9-14 09:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上位机通过串口发送给mega2560,一个32位的整型十六进制数  int  0xEE82EEFF  ,我要做的是,将这个数接收,并将四个字节分开保存。即:0xEE,0x82,0xEE,0xFF 。arduinio这部分代码怎么写啊。我知道serial.read()每次读取一个字节,serial.avaliable()返回的是缓冲区的字节数,但是这个十六进制怎么接收啊,用什么保存啊。
byte serialData[4]; //从串口读取的数据
if (Serial.available() > 0) {
   //读取一个字节数组
    Serial.readBytes(serialData, 4);
    //此处省略serialData[0],serialData[1],serialData[2],serialData[3],的处理代码
    Serial.flush();

}

这样的话,serialData[0],serialData[1],serialData[2],serialData[3]里面会分别是EE,82,EE,FF吗。

或者忽略上面的代码。
这一部分有点混乱,希望有大佬可以指点迷津,十分感谢
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:398205 发表于 2018-9-15 11:54 | 只看该作者
串口两边都有FIFO,即先进先出缓存。先发的必然是先收到,发送端从低地址开始发送数据,收到则也是从低字节开始,这样看来,serialData[0]应该对应FF才对,其它类推

评分

参与人数 1黑币 +40 收起 理由
admin + 40 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

板凳
ID:277550 发表于 2018-9-16 08:13 | 只看该作者
byte(即 unsigned char),就是一个字节,并不区分是二进制、还是十进制、或十六进制,只是值不超范围就可以正确接收,,,,,串口传过来的也是字节。

所以,32位的int,接收结果是4个字节的数据,4次 Serial.read()。

Serial.readBytes(serialData, 4);
这样写也正确


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

评分

参与人数 1黑币 +30 收起 理由
admin + 30 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

地板
ID:367356 发表于 2018-9-19 10:33 | 只看该作者
devcang 发表于 2018-9-16 08:13
byte(即 unsigned char),就是一个字节,并不区分是二进制、还是十进制、或十六进制,只是值不超范围就可以 ...

多谢啦,问题已解决
回复

使用道具 举报

5#
ID:367356 发表于 2018-9-19 10:34 | 只看该作者
iauther 发表于 2018-9-15 11:54
串口两边都有FIFO,即先进先出缓存。先发的必然是先收到,发送端从低地址开始发送数据,收到则也是从低字节 ...

对的,当时没想清楚。改过之后没问题了。谢啦
回复

使用道具 举报

6#
ID:494128 发表于 2021-9-14 16:56 | 只看该作者
pglakers 发表于 2018-9-19 10:34
对的,当时没想清楚。改过之后没问题了。谢啦

你改哪里了呢      代码可以发我参考一下吗      我刚开始接触arduino    还请您指教一下
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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