2016-04-11 21 views
5

Sto provando ad inviare alcuni byte al Serial1 del mio arduino MEGA. Sto inviando questo byte[] writebuffer = { 1, 2, 3, 4 }; ma l'output di Serial in arduino è 127 191 247 0.Comunicazione seriale tra C# e arduino

Utilizzo un DB9, ho collegato GND a GND, Tx a Rx1 e Rx a Tx1 (connessioni da DB9 a arduino).

Ecco il mio codice C#:

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

E questo è il codice di 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

Il codice sembra OK! ... Sembra un problema hardware. – Fruchtzwerg

risposta

1

io suggerisco di chiudere la porta seriale prima di aprire e controllare se è stato aperto o meno.

Inoltre, è necessario utilizzare il convertitore di ttl usart basato su max232 o simile, o convertitore da USB a seriale basato su ft232 o ch340. Questo perché arduino ha una porta seriale da 5V ttl, mentre il desktop ha una porta da 12 V.

1

Una connessione seriale Seriale a Arduino non è possibile perché le tensioni tra arduino e PC sono diverse, non funzionerà. Sto usando un FTDI ora e funziona perfettamente.