Общение 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");
}
}