2016-04-11 150 views
5

我想發送一些字節到我的arduino MEGA的Serial1。我發送這個byte[] writebuffer = { 1, 2, 3, 4 };,但在arduino中的串行輸出是127 191 247 0。我使用的是DB9,我將GND連接到GND,將Tx連接到Rx1,將Rx連接到Tx1(從DB9連接到arduino)。c#和arduino之間的串行通信

這裏是我的C#代碼:

SerialPort sepo = new SerialPort("COM6", 9600); 
sepo.Open(); 
byte[] writebuffer = { 1, 2, 3, 4 }; 
sepo.Write(writebuffer, 0, writebuffer.Length); 
sepo.Close(); 

這是Arduino的代碼:

void setup() 
{ 
    Serial.begin(115200); 
    Serial1.begin(9600); 
} 
void loop() 
{ 
    if(Serial1.available()) 
    { 
    while(Serial1.available()) 
    { 
     Serial.print((byte)Serial1.read()); 
    } 
    Serial.println(); 
    Serial1.println("recibi datos"); 
    } 
} 
+1

代碼看起來不錯! ...看起來像一個硬件問題。 – Fruchtzwerg

回答

1

我會建議你打開前關閉串口並檢查它是否是開放與否。

此外,您應該使用基於max232或類似的ttl usart轉換器,或者基於ft232或ch340的USB轉串口轉換器。這是因爲arduino有5V ttl串行端口,而桌面有12V端口。

1

由於arduino和PC之間的電壓不同,所以無法連接PC到Arduino的連接,因此無法正常工作。我現在在使用FTDI,並且工作正常。