Модуль не получает данные через 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.

Другие вопросы по тегам