如果你想只接受換行終止字符串,半自助旅遊旅行社已經擁有的功能了點。只是等待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我在這裏提出了另一個問題。我希望在解決其他問題後再次驗證。 –