求助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这个代码啊,是乱码,大侠们这种代码一般是通过怎么发送的
我想, 你應該是用希望發出 一個值為 7F 的 byte, 而不是 "7F" 吧.
先看看 Serial.print 跟 Serial.write 的分別吧.
如果還是不行, 再看看 baud rate 是否都是 9600. 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)); 是不是需要一个ttl转rs232? jikecyatmcn 发表于 2014-10-12 12:20 static/image/common/back.gif
是不是需要一个ttl转rs232?
用的是TTL串口 “其它设备怎么不是接收到的7E 10 06 0F 00 01 01 FF D9 EF这个代码啊,是乱码,大侠们这种代码一般是通过怎么发送的”
你怎么知道其它设备接收到的内容?是什么样的乱码?
如果你在电脑上用串口助手等工具查看收到的数据,你应该设定以16进制数据格式查看。 应该是进制不同,你发送的是十六进制,先用串口助手调试一下,另外,你是分次发送的,但是对方是怎么接收的?协议一致吗?建议先用串口调试助手解决显示问题,显示正常后,再解决协议问题。 3楼已经给你标准答案了 初学者学习
页:
[1]