Arduino可以从模拟串口接收到16进制数吗?
#include <SoftwareSerial.h>
unsigned char hexdata = {0x66,0x66,0x35,0x35,0x36,0x62,0x34,0x39,0x30,0x32,0x30,0x30,0x35,0x32,0x62,0x62};
SoftwareSerial mySerial(10, 11);
int led = 13;
int val;
void setup()
{
pinMode(led, OUTPUT);
Serial.begin(9600);
}
void loop()
{
while (digitalRead(9))
{
///////Serial.println("The first step is completed!");
mySerial.begin(9600);
mySerial.write(hexdata, 18);
Serial.println( Serial.read());
//Serial.println("The second step is completed!");
digitalWrite(led, HIGH);
delay(1000);
digitalWrite(led, LOW);
}
}
这是我写的程序,发送一串命令出去,模拟串口还会收到一个返回的命令,是一串十六进制数,但是不知怎么无法显示在串口监视器里面,求指教! 用同样长度的 unsigned char hexdata 试试呢? 請問是如何接線的?
你是想用 SoftSerial (D10,D11) send 到原來的 Serial 接口 (D0/D1) 吧.
那 serial monitor 是如何跟 ardiuno 溝通的? Super169 发表于 2014-3-21 13:54 static/image/common/back.gif
請問是如何接線的?
你是想用 SoftSerial (D10,D11) send 到原來的 Serial 接口 (D0/D1) 吧.
这个还需要怎么连接吗?我直接是用USB连接的电脑哎,难道......... 汪洋sea 发表于 2014-3-21 14:36 static/image/common/back.gif
这个还需要怎么连接吗?我直接是用USB连接的电脑哎,难道.........
我将模拟串口接到电脑上,通过另外一个串口调试工具进行模拟数据接收和发送,Arduino可以发送字符串或者十六进制数到另一端并成功接收,而串口调试工具可以发送字符或字符串,当选择HEX发送到Arduino的监视窗中,则只能发送0~9的数,不能发送A~F.....又不自带转换功能,而我需要Arduino收到类似(fe aa 12 34 03 bb )d的数据、有什么解决方法嘛? 汪洋sea 发表于 2014-3-21 14:36 static/image/common/back.gif
这个还需要怎么连接吗?我直接是用USB连接的电脑哎,难道.........
oh, USB + D0/D1 可以同時連線使用嗎?
因為我之前如果用了 D0/D1 去連接 另一塊控制板時,Serial 的輸出都送到控制板去,Serial Monitor 接收不到, 一定要拔走 D0/D1 的連線, 才可以發送到 Serial Monitor, 所以我不肯定你是如何連接.
如果你的可以接收到, 只是某些格式有問題, 那連線應該可行了, 可能只是我的板子有問題了. 原來真的可以 D10 - D1, D11 - D0 再同時用 USB 接收.
但我不太肯定, 你說的 "当选择HEX发送到Arduino的监视窗中,则只能发送0~9的数,不能发送A~F", 是否指Serial.println( Serial.read()); 一句印出來只是 0-9 的數?而不是 16進制?
如果只是造樣, 改成 Serial.println(Serial.read(), HEX); 可以嗎? Super169 发表于 2014-3-21 21:45 static/image/common/back.gif
原來真的可以 D10 - D1, D11 - D0 再同時用 USB 接收.
但我不太肯定, 你說的 "当选择HEX发送到Arduino的 ...
不可以哦,
sketch_mar22b.ino: In function 'void loop()':
sketch_mar22b:19: error: expected `)' before numeric constant
汪洋sea 发表于 2014-3-22 10:08 static/image/common/back.gif
不可以哦,
sketch_mar22b.ino: In function 'void loop()':
sketch_mar22b:19: error: expected `)' b ...
奇怪.我把你的程式 copy 出來, 改了那一句, 再 D10 接 D1, D11 接 D0 測試過的.
請問你是用那個版本的 arudino 程式?
另外, 你嘗試單獨 compile 一句看吧.不會有結果, 只是測試 syntax.
void setup() {
// put your setup code here, to run once:
Serial.println(Serial.read(), HEX);
}
void loop() {
// put your main code here, to run repeatedly:
}
页:
[1]