Модуль не получает данные через UART, TinyOS Progeamming
Модуль не получает данные через UART, помогите с TinyOS
Postby Telosb "Вт 15 июля 2014 г. 6:47
Уважаемые члены,
Я новичок в программировании крошечных. Я работаю с KMoteB из:
http://www.tinyosmall.com/product_p/100-101.htm
Я использую плагин YETI2 и компилятор TinyOS.
Проблема в том, что если я отправляю данные через printf через последовательный интерфейс на компьютер, я могу получить их в том виде, как они отправлены. С другой стороны, связь ПК-Мот не работает. Загорается светодиод RX, но данные, например, 'u', отправленные через Ubuntu, не вызывают событие приема.
event message_t* UartReceive.receive(message_t* bufPtr, void* payload, uint8_t len)
{
call Leds.led2On();
printf("Receive\n");
printfflush();
return bufPtr;
}
Я пытаюсь реализовать этот кодекс:
http://embedntks.com/tinyos-uart-sending-raw-data/
Кто-нибудь знает, где может быть проблема?
1 ответ
Как вы отправляете данные с ПК на мот? Из вашего описания я предполагаю, что вы просто отправляете необработанные байты, используя, например, приложение Minicom. Этот подход не сработает. TinyOS будет получать только целые пакеты, содержащие заголовок, полезную нагрузку и нижний колонтитул. Чтобы отправить такое, вам нужно написать приложение Java на стороне ПК. Взгляните на главу "Связь Mote-PC" в этом учебном пособии: http://csl.stanford.edu/~pal/pubs/tos-programming-web.pdf.
Другая проблема заключается в том, что вы используете интерфейс Receive вместе с функцией printf. Вышеупомянутое руководство заявляет, что "пакеты, отправленные с компьютера к мотинку, подтверждаются мотом". Разумеется, они также используют последовательную связь. Это может привести к такой проблеме: TinyOS PrintfClient должен получать и обрабатывать данные printf, тогда как ваше Java-приложение должно получать и обрабатывать подтверждения. По моему опыту, если вы используете printf в своем приложении, вы не можете использовать стек последовательной связи, потому что модуль PrintfC владеет и использует его. Вы можете отправлять свои пользовательские пакеты на ПК, когда происходит событие приема, и обрабатывать их с помощью приложения Java.