2017-04-10 44 views
0

Hy, 我讀過幾篇關於如何在我的zolertia z1的UART0(rx)端口上接收數據的文章,但是我無法做到這行得通。我的代碼:serial_line_event_message不起作用(contiki,zolertia z1)

#include "contiki.h" 
#include <stdio.h>/* For printf()*/ 
#include "dev/leds.h" 
#include "dev/serial-line.h" 
#define PERIOD (CLOCK_SECOND*10) 

//----------------------------------------------------------------- 

PROCESS(simple_uart, "read and write"); 
AUTOSTART_PROCESSES(&simple_uart); 
static struct etimer et; // Define the timer 
//----------------------------------------------------------------- 
PROCESS_THREAD(simple_uart, ev, data) 
{ 
    PROCESS_BEGIN(); 
    static struct etimer et; 
    uart0_init(BAUD2UBR(57600)); 
    etimer_set(&et,PERIOD); 
    { 
      while(1) 
      { 
      PROCESS_WAIT_EVENT(); 
      if(ev ==serial_line_event_message) 
      { 
      leds_toggle(LEDS_RED); 
      }  
      if(etimer_expired(&et)) 
      { 
      printf("sys get ver\r\n"); 
      leds_toggle(LEDS_GREEN); 
      etimer_reset(&et); 
      } 
      } 
    } 
    PROCESS_END(); 
} 

寫入部分正在工作,但是讀取部分不是。serial_line_event_message從不被調用。 我評論的半自助旅遊旅行社-Z1-主文件這些行:

//#if !NETSTACK_CONF_WITH_IPV4 && !NETSTACK_CONF_WITH_IPV6 
    uart0_set_input(serial_line_input_byte); 
    serial_line_init(); 
//#endif 

有誰知道哪裏是我的錯誤?謝謝!

+0

嗨。我是'contiki'的初學者。如何學習'contiki'的圖書館和編程? – sarina

+0

嗨,在我看來,最好的方法是首先了解一下Contiki如何工作(https://github.com/contiki-os/contiki/wiki/Processes,..)。然後開始查看示例目錄(hello-world,...)中的一些示例,並嘗試編寫您自己的應用程序。當你得到這個,你可以更深入地瞭解可用的驅動程序,圖書館。將解釋如https://github.com/contiki-os/contiki/wiki/Input-and-output與應用解釋結構的驅動程序進行比較是很好的。當你得到這個,你已經準備好開始寫更復雜的代碼(驅動程序,庫,..)。 –

+0

這對我有用:)我希望它會有所幫助。 –

回答

0

問題解決了(我在編程時做了一些改動)。爲了使這個代碼有效,我簡單地用主版本替換了主文件。