Привет! Есть такая задача - сделать программу на визуал студио, для управления ардуино через сериал порт. Нашёл шаблон с кодом и комментариями(http://www.vr-online.ru/content/rabota-s-rs-232-portom-v-c-571) Написал для ардуино скетч. Код (C++): void setup() { pinMode(2,1); Serial.begin(9600); } void loop() { if (Serial.available() > 0) { int incomingByte = Serial.read(); tone (2,incomingByte); // под рукой была пищалка Serial.print(incomingByte); } } Пищалка пищит через стандартный монитор порта из Arduino IDE, но с формами на С# работать не хочет. Есть кто поопытней, в чём может быть проблема? Или посоветуйте готовое решение для нубов (важно не принимать и отправлять данные, а управлять кнопочками с компьютера) =)
Давно запускал, что-то аналогичное. Вероятнее в инициализации Serial porta порта, моя инициализация для VS2010 c .Net 3.5 Код (C++): ArduinoSerialPort.PortName = "COM25"; ArduinoSerialPort.BaudRate = 115200; ArduinoSerialPort.Parity = Parity.None; ArduinoSerialPort.DataBits = 8; ArduinoSerialPort.StopBits = StopBits.One; ArduinoSerialPort.Encoding = Encoding.UTF8; ArduinoSerialPort.NewLine = "\n"; ArduinoSerialPort.RtsEnable = false; ArduinoSerialPort.DtrEnable = true; Готового решения не подскажу, погуглите, примеров тьма. К примеру этот - http://www.instructables.com/id/Interfacing-your-arduino-with-a-C-program/?ALLSTEPS. Начинал от сюда - http://playground.arduino.cc/Interfacing/Csharp. Там в низу есть ссылки на примеры, работа с Serial - http://bravomofo.blogspot.com.by/2010/03/serial-talk.html.
Если контроллер принимает байты, то и отправлять нужно байты. А если отправляете строку, то контроллер должен принимать строку и парсить ее в число. Если хотите просто посылать команды с компа, то делайте так: На ПК: Код (C++): SerialPort port = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One); port.Open(); ... byte command = 5; port.Write(new byte[] { command }, 0, 1); На ардуино: Код (C++): if (Serial.available() > 0) { int incomingByte = Serial.read(); Serial.print(incomingByte); switch(incomingByte) { case 1: // выполнение команды 1 break; ... case 10: // выполнение команды 10 break; } } Не забудьте подставить нужное имя порта и скорость.