Как правильно читать данные с XBee?
- Войдите на сайт для отправки комментариев
Вс, 10/02/2013 - 13:59
Всем привет.
У меня есть два XBee модуля. Один подключен к Arduino Mega (работает как END DEVICE/ROUTER AT), а другой подключен к компьютеру (работает как COORDINTATOR AT).
На ардуино у меня выполняется следующий скетч:
void setup()
{
Serial.begin(9600);
Serial1.begin(9600);
}
void loop()
{
if (Serial1.available())
{
char incoming = Serial1.read();
Serial.print("Serial1 data: ");
Serial.println(incoming);
}
Serial.println("cycle");
if (Serial.available())
{
Serial1.print("Serial data: ");
Serial1.println(Serial.read());
}
delay(1000);
}
Далее, я запускаю скетч, а на компьютере (к которому подключен координатор) записываю в порт данные:
vir@laptop:~$ echo fuck >> /dev/ttyACM1
Результат, я получаю, следующий:
cycle cycle cycle cycle cycle Serial1 data: f cycle Serial1 data: u cycle Serial1 data: c cycle Serial1 data: k cycle Serial1 data: cycle Serial1 data: cycle cycle cycle cycle cycle
Собственно вопрос, почему данные приходят по одному символу, т.е. считываются по одному за цикл (loop)? Почему я не получаю слово целиком? И откуда беруться два пустых символа?
void setup() { Serial.begin(9600); Serial1.begin(9600); } void loop() { while(Serial1.available()) { Serial.write(Serial1.read()); delay(1); } Serial.println("cycle"); while(Serial.available()) { Serial1.write(Serial.read()); delay(1); } delay(1000); }