Общение Arduino с ПК через COM порт
- Войдите на сайт для отправки комментариев
Чт, 10/07/2014 - 15:25
Пишу проверку на подключение Arduino Mega2560 к компьютеру на C#. При нажатии на кнопку в программе, она получает список всех доступных COM портов и посылает на каждый запрос - строку "crfSPC". Arduino должна получить этот запрос и в ответ на него отправить согласие - "cfSPCa". Почему-то после того, как программа отправляет запрос и читает ответ, она зависает (на 32 строке).
Код программы:
//crfSPC - Connection Request From Stanislav-PC //cfSPCa - Connection From Stanislav-PC Allowed using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO.Ports; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Arduino { public partial class Form1 : Form { private SerialPort arduinoPort; public SerialPort SearchPort() { SerialPort __arduinoPort = new SerialPort(); string[] __ports = SerialPort.GetPortNames(); foreach (string __name in __ports) { __arduinoPort.PortName = __name; __arduinoPort.BaudRate = 9600; __arduinoPort.DtrEnable = true; __arduinoPort.Open(); __arduinoPort.WriteLine("crfSPC"); string DeviceAnswer = __arduinoPort.ReadLine(); if (DeviceAnswer == "cfSPCa\r") { __arduinoPort.Close(); return __arduinoPort; } __arduinoPort.Close(); } return null; } public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { } private void button1_Click(object sender, EventArgs e) { arduinoPort = SearchPort(); if (arduinoPort != null) { this.Text = "Arduino - Подключено к " + arduinoPort.PortName; } else this.Text = "Arduino - Нет подключения"; } } }
Код Arduino:
String serialReadLine(){ String __line = ""; while(Serial.available()){ __line += (char)Serial.read(); } return __line; } void setup(){ Serial.begin(9600); } void loop(){ if(Serial.available()){ if(serialReadLine() == "crfSPC") Serial.println("cfSPCa"); } }