Полное руководство по получению последовательных портов на C#

Последовательные порты играют решающую роль в обмене данными между компьютерами и внешними устройствами. В C# доступ к последовательным портам и работа с ними упрощается благодаря пространству имен System.IO.Ports. В этой статье мы рассмотрим различные методы получения последовательных портов на C#, а также приведем примеры кода, которые помогут вам понять и эффективно реализовать последовательную связь.

Методы получения последовательных портов:

Метод 1: использование метода GetPortNames()

using System.IO.Ports;
// Retrieve available serial ports
string[] portNames = SerialPort.GetPortNames();
// Display the available ports
foreach (string portName in portNames)
{
    Console.WriteLine(portName);
}

Метод 2: чтение из реестра

using Microsoft.Win32;
// Open the registry key for serial ports
RegistryKey key = Registry.LocalMachine.OpenSubKey("HARDWARE\\DEVICEMAP\\SERIALCOMM");
// Retrieve the value names
string[] valueNames = key.GetValueNames();
// Display the available ports
foreach (string valueName in valueNames)
{
    string portName = (string)key.GetValue(valueName);
    Console.WriteLine(portName);
}
// Close the registry key
key.Close();

Метод 3: использование ManagementObjectSearcher

using System.Management;
// Query for Win32_SerialPort class
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_SerialPort");
// Retrieve serial ports
foreach (ManagementObject port in searcher.Get())
{
    Console.WriteLine(port["DeviceID"]);
}

Метод 4: перечисление класса WMI Win32_PnPEntity

using System.Management;
// Query for Win32_PnPEntity class
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PnPEntity WHERE Caption LIKE '%(COM%)'");
// Retrieve serial ports
foreach (ManagementObject port in searcher.Get())
{
    Console.WriteLine(port["Caption"]);
}

Метод 5. Использование библиотеки SerialPortStream (сторонняя библиотека)

using RJCP.IO.Ports;
// Retrieve available serial ports
string[] portNames = SerialPortStream.GetPortNames();
// Display the available ports
foreach (string portName in portNames)
{
    Console.WriteLine(portName);
}

В этой статье мы рассмотрели различные методы получения последовательных портов в C#. Мы обсудили встроенные методы, такие как использование метода GetPortNames() и чтение из реестра, а также использование библиотек ManagementObjectSearcher и SerialPortStream. Каждый метод обеспечивает свой подход к доступу и отображению доступных последовательных портов. Понимая эти методы и используя тот, который соответствует вашим требованиям, вы сможете эффективно работать с последовательной связью в своих приложениях C#.