Работа с COM-портом в C#


руководство по работе с COM PORT / UART с примерами кода и интеграцией с Arduino

Работа с COM-портом в C#

Введение


Последовательная связь между компьютером и внешними устройствами, такими как микроконтроллеры, часто зависит от порта COM. В этой статье мы рассмотрим, как работать с COM-портом на языке программирования C#. Кроме того, мы предоставим практический пример, демонстрирующий, как отправлять и получать данные между приложением C# и платой Arduino Uno.

Предварительные требования:


Чтобы следовать примерам кода в этой статье, вам потребуется:

-Базовые знания языка программирования С#.
-Плата Arduino Uno.
-Arduino IDE, установленная на вашем компьютере.
-USB-кабель для подключения платы Arduino Uno к компьютеру.

Настройка платы Arduino Uno


Прежде чем погрузиться в код C#, давайте сначала настроим плату Arduino Uno для связи с нашим приложением C#.

  1. Подключите плату Arduino Uno к компьютеру с помощью USB-кабеля.
  2. Запустите Arduino IDE и откройте новый скетч.
  3. Введите следующий код в 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…

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *