2013年11月25日 星期一

Arduino 與 Beagleboard-xM 之溝通 (USB to UART interface)


本專案是一個很簡單的應用 , 利用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的畫面):

沒有留言:

張貼留言