2016-04-11 25 views
5

Arduino MEGA'mn Serial1'ine bazı baytlar göndermeye çalışıyorum. Bu byte[] writebuffer = { 1, 2, 3, 4 }; gönderiyorum ama arduino seri çıktı 127 191 247 0 olduğunu.C# ve arduino arasında seri haberleşme

Bir DB9 kullanıyorum, GND'yi GND'ye, Rx - Rx1'e ve Rx'den Tx1'e (DB9'dan arduino'ya bağlantılar) bağladım.

İşte benim C# kodu:

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

Ve bu arduino kodudur:

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

Kod iyi görünüyor! ... Donanım sorununa benziyor. – Fruchtzwerg

cevap

1

Sana açmadan önce seri port kapatmak ve açık ya da değil olup olmadığını kontrol etmek önerir.

Ayrıca, ft232 veya ch340 tabanlı max232 veya benzeri veya seri dönüştürücüye dayalı ttl usart dönüştürücüyü kullanmalısınız. Bunun nedeni, arduino'nun 5V ttl seri portuna sahipken, masaüstünde 12V portu bulunuyor.

1

Arduino ve PC arasındaki voltajlar farklı olduğu için düz bir PC Arduino bağlantısı seri bağlantısı mümkün değildir, çalışmaz. Şimdi FTDI kullanıyorum ve mükemmel çalışıyor.