简体   繁体   中英

Serial communication between c# and arduino

I'm trying to send some bytes to the Serial1 of my arduino MEGA. I'm sending this byte[] writebuffer = { 1, 2, 3, 4 }; but the output of Serial in arduino is 127 191 247 0 .

I'm using a DB9, i have connected the GND to GND, Tx to Rx1 and Rx to Tx1 (connections from DB9 to arduino).

Here is my C# code:

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

And this is the arduino code:

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");
  }
} 

I will suggest you to close serial port before opening and check if it was open or not.

Also you should use ttl usart converter based on max232 or similar, or usb to serial converter based on ft232 or ch340. This is because arduino has 5V ttl serial port, while desktop has 12V port.

A straight PC Serial to Arduino connection is not possible because voltages between arduino and PC are different, it won't work. I'm using a FTDI now and it's working perfectly.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM