我不明白Contiki OS的core/dev/serial-line.c文件中使用的函数“process_poll(&serial_line_process);”的含义。我在wiki 页面上读到它在进程控制块中设置了 needspoll 变量,使内核能够在发生中断时轮询该进程。如果有人可以阐明如何以及何时调用此过程,我将非常感激。
我在尝试使用 wiki 页面上解释的 contiki 特定机制读取串行输入时遇到了这个问题。从串口读取字符,我验证程序控制已到达 process_poll( &serial_line_process) ; 函数 int serial_line_input_byte(unsigned char c) 中的语句;在文件 serial-line.c 中。这已设置为平台的串行输入驱动程序的回调。但在那之后什么都没有发生。似乎进程 serial_input_process 最初执行 PROCESS_YIELD(); 声明,从那时起就没有被调用过。以下是我用于测试的过程的代码。
#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();
}