我正在尝试使用pyserial
与直接连接到我的电脑的z1微尘进行通信。我要做的是写入微尘,并且在收到命令后,微尘应该回复当前的温度读数。
Python方面可以是这样的(iinm)
import serial
ser = serial.Serial(0)
ser.write("hello") # the mote will receive the message and do something
但我不知道如何在使用C的z1 mote侧接收消息。是否有一种特殊的方法来接收命令或者我是否必须创建自己的命令?
非常感谢任何提示和提示。
答案 0 :(得分:2)
如果您只想接收以换行符结尾的字符串,Contiki已经具备了该功能。只需等待protothread循环中的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);