C - 如何从设备端的串口接收(z1 mote)

C - How to receive from the serial port for the device side (z1 mote)

我正在尝试使用 pyserial 与直接连接到我的 PC 的 z1 mote 进行通信。我要做的是写入微尘,在收到命令后,微尘应该回复当前的温度读数,例如。

Python 边可以是这样的 (iinm)

import serial
ser = serial.Serial(0)  
ser.write("hello")      # the mote will receive the message and do something 

但我不知道如何在使用 C 的 z1 mote 端接收消息。是否有特殊的方法来接收命令,或者我是否必须创建自己的方法?

非常感谢任何提示和提示。

如果您只想接收以换行符结尾的字符串,Contiki 已经具有相应的功能。只需等待原线程循环中的 serial_line_event_message 事件:

#include "contiki.h"
#include "dev/serial-line.h"

PROCESS(main_process, "main process");
AUTOSTART_PROCESSES(&main_process);

PROCESS_THREAD(main_process, ev, data)
{
    PROCESS_BEGIN();
    for(;;) {
        PROCESS_WAIT_EVENT();

        if (ev == serial_line_event_message && data != NULL) {
           printf("got input string: '%s'\n", (const char *) data);
        }
    }
    PROCESS_END();
}

另一方面,如果您想自定义接收(例如,允许二进制数据,或使用自定义帧,或包含校验和),您需要在单个字符级别处理输入。在右侧 UART 上定义并设置 UART 回调(在 Z1 平台上 USB 连接到 UART 0,但函数的编号和确切名称取决于平台)。串行输入处理函数示例:

static int serial_input_byte(unsigned char c)
{
    printf("got input byte: %d ('%c')\n", c, c);
}

然后将其放入您的初始化代码中:

uart0_set_input(serial_input_byte);