如果你想只接受换行终止字符串,半自助旅游旅行社已经拥有的功能了点。只是等待serial_line_event_message
事件在protothread的循环:
#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);
来源
2016-03-25 14:15:59
kfx
谢谢主席先生。我试图实现上面给出的解决方案,但似乎有问题。我认为这是因为我有另一个python代码,它定期从我需要写入的相同串行端口读取。所以当我使用其他代码(写入的代码)实现上述解决方案时,似乎停止了第一个(读取的)连接,并且我停止从z1 mote获取任何输入。他们基本上发生冲突。这是否意味着我需要实现多线程,或者我能做些什么来解决这个问题? –
@ AhmedAl-haddad不,你不需要多线程。您需要向我们展示代码,以了解问题所在。但为此,你应该打开另一个问题。 – kfx
http://stackoverflow.com/questions/36222823/clash-of-connection-between-serial-port-read-and-write-codes我在这里提出了另一个问题。我希望在解决其他问题后再次验证。 –