руководство по работе с COM PORT / UART с примерами кода и интеграцией с Arduino
Введение
Последовательная связь между компьютером и внешними устройствами, такими как микроконтроллеры, часто зависит от порта COM. В этой статье мы рассмотрим, как работать с COM-портом на языке программирования C#. Кроме того, мы предоставим практический пример, демонстрирующий, как отправлять и получать данные между приложением C# и платой Arduino Uno.
Предварительные требования:
Чтобы следовать примерам кода в этой статье, вам потребуется:
-Базовые знания языка программирования С#.
-Плата Arduino Uno.
-Arduino IDE, установленная на вашем компьютере.
-USB-кабель для подключения платы Arduino Uno к компьютеру.
Настройка платы Arduino Uno
Прежде чем погрузиться в код C#, давайте сначала настроим плату Arduino Uno для связи с нашим приложением C#.
- Подключите плату Arduino Uno к компьютеру с помощью USB-кабеля.
- Запустите Arduino IDE и откройте новый скетч.
- Введите следующий код в Arduino IDE:
void setup() {
Serial.begin(9600);
}
void loop() {
if (Serial.available()) {
String receivedData = Serial.readString();
Serial.println("Received from C#: " + receivedData);
// Process the received data or perform actions based on it
}
}
Выберите правильную плату и порт в меню «Инструменты» в Arduino IDE.
Нажмите кнопку «Загрузить», чтобы загрузить скетч на плату Arduino Uno.
Теперь, когда у нас есть подготовленная плата Arduino Uno, давайте перейдем к реализации C#.
Работа с COM-портом в C#
Для работы с COM-портом в C# мы будем использовать пространство имен System.IO.Ports, которое предоставляет необходимые классы и методы для последовательной связи. Вот пошаговое руководство:
Добавьте следующий оператор using в начало кода C#:
using System;
using System.IO.Ports;
Объявите объект SerialPort для связи с COM-портом. Вам необходимо указать имя порта (например, «COM3») и скорость передачи данных (например, 9600).
static SerialPort serialPort;
В методе Main инициализируйте объект SerialPort и подпишитесь на событие DataReceived.
serialPort = new SerialPort("COM3", 9600);
serialPort.DataReceived += SerialPort_DataReceived;
Реализуйте обработчик событий SerialPort_DataReceived для обработки входящих данных с платы Arduino Uno.
static void SerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
string receivedData = serialPort.ReadLine();
Console.WriteLine("Received from Arduino: " + receivedData);
}
Реализуйте метод SendToArduino для отправки данных на плату Arduino Uno.
static void SendToArduino(string data)
{
serialPort.WriteLine(data);
Console.WriteLine("Sent to Arduino: " + data);
}
В методе Main откройте COM-порт, прочитайте пользовательский ввод и вызовите метод SendToArduino для отправки данных на плату Arduino Uno.
serialPort.Open();
Console.WriteLine("COM port opened. Enter 'quit' to exit.");
while (true)
{
string input = Console.ReadLine();
if (input.ToLower() == "quit")
break;
SendToArduino(input);
}
Закройте COM-порт, когда закончите.
serialPort.Close();
Пример приложения — отправка и получение данных с помощью Arduino Uno
Теперь давайте создадим простое консольное приложение C#, которое отправляет данные и получает данные от платы Arduino Uno.
using System;
using System.IO.Ports;
class Program
{
static SerialPort serialPort;
static void Main()
{
serialPort = new SerialPort("COM3", 9600);
serialPort.DataReceived += SerialPort_DataReceived;
try
{
serialPort.Open();
Console.WriteLine("COM port opened. Enter 'quit' to exit.");
while (true)
{
string input = Console.ReadLine();
if (input.ToLower() == "quit")
break;
SendToArduino(input);
}
}
catch (Exception ex)
{
Console.WriteLine("Error: " + ex.Message);
}
finally
{
serialPort.Close();
}
}
static void SerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
string receivedData = serialPort.ReadLine();
Console.WriteLine("Received from Arduino: " + receivedData);
}
static void SendToArduino(string data)
{
serialPort.WriteLine(data);
Console.WriteLine("Sent to Arduino: " + data);
}
}
Обязательно замените «COM3» в коде C# на соответствующее имя COM-порта для вашей платы Arduino Uno. Запустите приложение, и вы сможете ввести текст, чтобы отправить его на плату Arduino Uno. Arduino получит данные, обработает их (при необходимости) и отправит ответ обратно в приложение C#. Приложение C# отобразит полученные данные от Arduino.
Заключение:
Работа с COM-портом в C# обеспечивает двунаправленную связь между вашим компьютером и внешними устройствами, такими как Arduino Uno. Используя пространство имен System.IO.Ports и предоставленные классы и методы, вы можете легко отправлять и получать данные. В этой статье мы рассмотрели основы работы с COM-портом в C# и предоставили пример, демонстрирующий связь между приложением C# и платой Arduino Uno. Обладая этими знаниями, вы теперь можете включать последовательную связь в свои проекты C# и взаимодействовать с различными внешними устройствами.
Читать также:
Работа с COM-PORT в Delphi…
Работа с COM-PORT в Python…