万马奔腾 发表于 2014-10-11 23:57:25

求助ARDUINO通过串口控制其它设备

/*
外部设备需要接收到以下代码命令才开始动作
7E 10 06 0F 00 01 01 FF D9 EF------16进制
(126 16 6 15 0 1 1 255 217239------10进制)
*/
int flag=0;
void setup() {
Serial.begin(9600);
pinMode(2, INPUT_PULLUP);
}

void loop()
{
if(digitalRead(2)==0)
{
if(flag==0)
    {
    Serial.print(126,HEX);
    Serial.print(16,HEX);
    Serial.print(6,HEX);
    Serial.print(15,HEX);
    Serial.print(0,HEX);
    Serial.print(1,HEX);
    Serial.print(1,HEX);
    Serial.print(255,HEX);
    Serial.print(217,HEX);
    Serial.print(239,HEX);
   flag=1;
    }
}
else
{
    flag=0;
}
}
其它设备怎么不是接收到的7E 10 06 0F 00 01 01 FF D9 EF这个代码啊,是乱码,大侠们这种代码一般是通过怎么发送的

Super169 发表于 2014-10-12 01:32:26

我想, 你應該是用希望發出 一個值為 7F 的 byte, 而不是 "7F" 吧.
先看看 Serial.print 跟 Serial.write 的分別吧.

如果還是不行, 再看看 baud rate 是否都是 9600.

okplay 发表于 2014-10-12 11:51:34

http://www.arduino.cc/en/Serial/Write

.................................
const byte mybuf[] = {0x7E,0x10,0x06,0x0F,0x00,0x01,0x01,0xFF,0xD9,0xEF};

...................
Serial.write(mybuf,sizeof(mybuf) / sizeof(mybuf));

jikecyatmcn 发表于 2014-10-12 12:20:35

是不是需要一个ttl转rs232?

LINK~ 发表于 2014-10-13 10:38:14

jikecyatmcn 发表于 2014-10-12 12:20 static/image/common/back.gif
是不是需要一个ttl转rs232?

用的是TTL串口

i7456 发表于 2014-10-13 11:27:06

“其它设备怎么不是接收到的7E 10 06 0F 00 01 01 FF D9 EF这个代码啊,是乱码,大侠们这种代码一般是通过怎么发送的”

你怎么知道其它设备接收到的内容?是什么样的乱码?
如果你在电脑上用串口助手等工具查看收到的数据,你应该设定以16进制数据格式查看。

zzp1383 发表于 2014-10-13 11:57:22

应该是进制不同,你发送的是十六进制,先用串口助手调试一下,另外,你是分次发送的,但是对方是怎么接收的?协议一致吗?建议先用串口调试助手解决显示问题,显示正常后,再解决协议问题。

maxims 发表于 2014-11-30 22:10:14

3楼已经给你标准答案了

mondaywoo 发表于 2015-8-12 23:27:46

初学者学习
页: [1]
查看完整版本: 求助ARDUINO通过串口控制其它设备