【发布时间】:2014-08-26 05:47:57
【问题描述】:
今天我得到了一些很酷的无线电接收器和发射器,问题是当我键入要发送的消息时,它会在另一个 arduino 上吐出乱码。
//transmitter
#include <VirtualWire.h>
void setup()
{
Serial.begin(9600);
vw_set_ptt_inverted(true);
vw_setup(3000);
vw_set_tx_pin(7);
}
void loop()
{
String inData;
while(Serial.available())
{
char recieved = Serial.read();
inData += recieved;
char bits[inData.length()];
Serial.print(":");
Serial.print(inData);
for(int i=0;i<inData.length();i++)
{
bits[i] = inData.charAt(i);
vw_send((uint8_t *)bits[i], 1);
}
inData = "";
delay(50);
}
}
//下面是接收器!
#include <VirtualWire.h>
void setup()
{
vw_set_ptt_inverted(true);
pinMode(13,OUTPUT);
digitalWrite(13,LOW);
Serial.begin(9600);
vw_setup(3000);
vw_set_rx_pin(7);
vw_rx_start();
}
void loop()
{
uint8_t buflen = VW_MAX_MESSAGE_LEN;
uint8_t buf[buflen];
if(vw_get_message(buf, &buflen))
{
for(int i = 0;i < buflen;i++)
{
char c = buf[i];
Serial.println(c,DEC);
delay(50);
}
}
}
所以如果我输入“hello”,在另一个串口上我会看到“0 53 0 0 2”,这很奇怪,因为我总是得到相同数量的字符,但不是我想要的实际字符.
【问题讨论】:
-
您只能在验证确实收到消息后调用 vw_get_message()。使用 vw_have_message() 或 vw_wait_rx() 或 vw_wait_rx_max()
标签: c serial-port arduino radio