|
|
发表于 2015-8-8 05:58:56
|
显示全部楼层
先说概念:
计算机只会传输0和1,它也不知道什么是10进制,什么是16进制。发送的时候不管你发的是10进制的82,16进制的0x52,或者字符R,底层传输的都是进制的 01010010 这么一串。至于接收后怎么处理,需要自己在程序里面去判断。
按我的理解,你的实现的就是,当串口接收到字符R时,led闪一次,然后串口输出R这个字符。
下面说下你这个程序的几个问题:
1: if(incomingByte=='A5 5A 04 83 10 00 00')//判断接收到的指令或字符是否是“A5 5A 04 83 10 00 00”。 Serial.read()每次只读取一个字节,你自己定义的incomingBye也是int型的,上面这个判断实在是让人看不懂。
2:最后一句 Serial.println("incomingByte");//显示“Hello World!”字符串 你到底是要显示"incomingByte"还是“Hello World!",这种注释速度删了先。
最后,给个能用的程序做参考,根据 A5 5A 04 83 10 00 00 这一串,你要达到的目的应该不是一个R那么简单吧。- int incomingByte = 0;
- int ledpin = 13; //定义数字接口13
- void setup()
- {
- Serial.begin(9600);
- pinMode(ledpin, OUTPUT);
- }
- void loop()
- {
- if (Serial.available() > 0)
- {
- incomingByte = Serial.read();
- //下面三句的效果是一样的,判断读到的字符是不是'R',根据自己需要选一种就行
- // if (incomingByte == 82)
- if(incomingByte=='R')
- // if(incomingByte==0x52)
- { //如果接收到的是“R”字符
- digitalWrite(ledpin, HIGH); //点亮数字13 口LED。
- delay(500);
- digitalWrite(ledpin, LOW); //熄灭数字13 口LED
- delay(500);
- Serial.println("Hello World!");//显示“Hello World!”字符串,其它要显示什么自己弄
- }
- }
- }
复制代码 |
|