极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 14082|回复: 6

关于serial.write()发送16进制数据错误的问题

[复制链接]
发表于 2015-3-23 09:25:15 | 显示全部楼层 |阅读模式
请教大家,关于serial.write()发送16进制数据错误的问题。
我的代码是:
unsigned char hexdata[10] = {0x00,0x00,0x02,0x03,0x00,0x00,0x00,0x08,0x44,0x3F};
int EN = 2;
void setup()
{
  pinMode(EN, OUTPUT);
  Serial.begin(9600);
}
void loop()
{
  digitalWrite(EN, HIGH);
  Serial.write(hexdata,10);
  delay(1000);
}
使用串口助手收到的数据却是“08 02 03 00 00 00 08 44 3F”,改变数据数量发现都是前两个字节被替换成了1个字节,莫名其妙啊。

硬件配置:Arduino UNO+Max485,使用外置电源(USB情况也一样)
回复

使用道具 举报

发表于 2015-3-23 11:09:59 | 显示全部楼层
我用你的程式, 再用一個 VB 的 comTerminal 程式接收, 完全沒問題.


會否是串口助手的設定上有問題.

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-3-23 12:48:31 | 显示全部楼层
不会吧,我这么衰么
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-3-23 12:57:58 | 显示全部楼层
换了个串口助手软件,还是不行,发送的数据是“0x02,0x03,0x00,0x00,0x00,0x08,0x44,0x3F”
前两个数据还是被替换了,还且还会变化。
会不会是我的Max485模块有问题啊。但是用网上封装好的modbus master例程,通讯数据是正确的

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-3-23 13:03:23 | 显示全部楼层
Super169 发表于 2015-3-23 11:09
我用你的程式, 再用一個 VB 的 comTerminal 程式接收, 完全沒問題.

换了个串口助手软件,还是不行,发送的数据是“0x02,0x03,0x00,0x00,0x00,0x08,0x44,0x3F”
前两个数据还是被替换了,还且还会变化。
会不会是我的Max485模块有问题啊。但是用网上封装好的modbus master例程,通讯数据是正确的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-3-23 13:09:27 | 显示全部楼层
硬件是这样的

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-3-23 13:17:40 | 显示全部楼层
Super169 发表于 2015-3-23 11:09
我用你的程式, 再用一個 VB 的 comTerminal 程式接收, 完全沒問題.

谢谢啊,问题解决了。
我把Max485的Vcc和Gnd接上了,数据就是对的,吐血了
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-17 13:19 , Processed in 0.035542 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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