Contiki / Cooja Как читать данные (в имитируемом моменте) из сокета (последовательный сокет (сервер / клиент)) - PullRequest
0 голосов
/ 18 мая 2018

Я пытаюсь построить MQTT-SN со шлюзом MQTT-Rime.Мне удается отправить данные датчика на шлюз с последовательным разъемом, но мой шлюз должен также отправить некоторые данные к швам.Моя проблема в том, что я не знаю, как читать данные из сокета в минуту.Кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 21 мая 2018

Если входными данными является ASCII с символом конца строки, вы можете использовать интерфейс последовательной линии .

 #include "contiki.h"
 #include "dev/serial-line.h"
 #include <stdio.h>

 PROCESS(test_serial, "Serial line test process");
 AUTOSTART_PROCESSES(&test_serial);

 PROCESS_THREAD(test_serial, ev, data)
 {
   PROCESS_BEGIN();

   for(;;) {
     PROCESS_YIELD();
     if(ev == serial_line_event_message) {
       printf("received line: %s\n", (char *)data);
     }
   }
   PROCESS_END();
 }

Если данные являются двоичными, вам нужно определить свою собственную функцию обратного вызова:

int binary_input_byte(unsigned char c) {
   // ...
}

Затем установите это как обратный вызов последовательного интерфейса (здесь используется uart0, точное имя, которое вам нужно использовать, зависит от платформы):

uart0_set_input(binary_input_byte);
...