本專案是一個很簡單的應用 , 利用USB to UART 溝通界面 , 讓Arduino 與 bb-xM作字串傳輸,
如下圖所示:
而這裡的測試方法是由 , Arduino 每一秒發送一次字串訊號 ,
然後由bb-xM 的Read task thread 來作接受的動作 . 下列是分別的程式碼,
Arduino:
char incomingByte = 0; // for incoming serial data void setup(){ Serial.begin(9600); delay(2000); } void loop(){ Serial.println('a'); delay(1000); }
這裡要非常注意 , 一開始我只用Serial.print('a') 或是 Serial.write('a') , 但這樣會沒辦法正常送出去 , bb-xM也無法正常收到 , 後來我改用 在字元後面加一個換行符號 , 也就是改用Serial.println('a') 才能正常傳收。
為什麼會這個樣子呢?
Beagleboard-xM (部份c code , 其中一個Thread)
void *ReadFrom_Arduino_by_USB(void *argu) { int res; char buf[256]; while(1){ if((uart_init_is_OK == YES) && (usb_init_is_OK == YES)){ /*receive from usb*/ res = read(fd_usb, buf, 255); buf[res]=0; printf("Arduino response:%s",buf); } /*else do not somthing*/ } return NULL; }
收到字串之結果如下圖(bb-xM的畫面):
沒有留言:
張貼留言