首頁 > 後端開發 > C++ > 如何使用WinForms和Visual Studio讀取USB串列裝置的資料?

如何使用WinForms和Visual Studio讀取USB串列裝置的資料?

Mary-Kate Olsen
發布: 2025-01-20 23:47:13
原創
338 人瀏覽過

How Can I Use WinForms and Visual Studio to Read Data from a USB Serial Port Device?

此代碼應適用於 USB 轉串口設備,並且也可能適用於您的體重計。一些連接埠設定是透過下載/安裝 WinCT(RsCom、RsKey 和 RsWeight)找到的。然後,在 Windows 開始功能表中的 A&D WinCT 下,選擇 RsCom 或 RsKey。使用 RsCom 或 RsKey 是檢查 USB 電纜/連接是否正常工作的簡單方法。我在 USB 串行設備上使用了“RsKey”和“RsCom”,它似乎可以工作。

創建一個WinForms 項目

VS 2017:

打開Visual Studio
展開已安裝
展開Visual C#
點選Windows 桌面
選擇Windows 表單應用程式(.NET Framework)
指定項目名稱(名稱:ReadSerialPort)
點選確定

VS 2019:

開啟Visual Studio無程式碼繼續點選
檔案選擇
新建選擇
專案
C# Windows 桌面
Windows點選
下一步指定項目名稱(名稱: ReadSerialPort)
點選
建立

注意:從現在開始,VS 2017 和VS 2019 的過程是相同的。

新增班級: SerialPortDataReceivedEventArgs

注意:此類將與將從序列埠設備接收到的資料傳送給訂閱者的事件一起使用。

在 VS 選單上,選擇

項目選擇
新增類別(名稱: SerialPortDataReceivedEventArgs.cs)

SerialPortDataReceivedEventArgs.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ReadSerialPort
{
    public delegate void SerialPortDataReceivedEventHandler(object sender, SerialPortDataReceivedEventArgs e);

    public class SerialPortDataReceivedEventArgs : System.EventArgs
    {
        public string Data { get; private set; } = string.Empty;

        public SerialPortDataReceivedEventArgs(string data)
        {
            this.Data = data;
        }
    }
}
登入後複製
新增對System.Management 的引用

新增對System.Management 的引用項目選擇
新增引用展開
程序集檢查
System.Ma nagement
確定

新增類別:ComPorts

在VS選單上,選擇

項目選擇
新增類別(名稱:ComPorts.cs)

ComPorts.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ReadSerialPort
{
    public class ComPorts
    {
        public List<ComPortInfo> Ports { get; set; } = new List<ComPortInfo>();
    }

    public class ComPortInfo
    {
        public string Name { get; set; }
        public string PortName { get; set; }

        public ComPortInfo()
        {

        }

        public ComPortInfo(string name, string portName)
        {
            this.Name = name;
            this.PortName = portName;
        }
    }
}
登入後複製


新增類別:HelperSerialPort

在VS 菜單上,選擇

項目


選擇
添加類
(名稱:HelperSerialPort.cs)


HelperSerialPort.cs

//如果使用.NET 5,請安裝NuGet 套件: System.IO.Ports

使用System;
public enum PortBaudRate : int
{
    Baud1200 = 1200,
    Baud2400 = 2400,
    Baud4800 = 4800,
    Baud9600 = 9600,
    Baud14400 = 14400,
    Baud19200 = 19200,
    Baud28800 = 28800,
    Baud38400 = 38400
};

public class HelperSerialPort : IDisposable
{
    public delegate void SerialPortErrorReceivedEventHandler(object sender, SerialErrorReceivedEventArgs e);

    public event SerialPortDataReceivedEventHandler DataReceived;
    public event SerialPortErrorReceivedEventHandler ErrorReceived;

    private string _dataReceived = string.Empty;
    public System.IO.Ports.SerialPort Port { get; private set; }

    public HelperSerialPort()
    {
        //create new instance
        Port = new SerialPort();
    }

    public string Connect(string comPort, PortBaudRate baudRate = PortBaudRate.Baud9600)
    {
        string portName = string.Empty;
        string result = string.Empty;

        if (String.IsNullOrEmpty(comPort))
        {
            System.Windows.Forms.MessageBox.Show("COM port not selected.", "Error - COM Port", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
            return "Error: COM port not selected.";
        }

        try
        {
            if (Port == null)
            {
                //create new instance
                Port = new SerialPort();
            }

            if (!Port.IsOpen)
            {
                Debug.WriteLine("opening port");

                //create new instance
                Port = new SerialPort(comPort);

                //set properties
登入後複製
使用System.Collections.Generic;使用System.Linq;使用System.Text;使用System.Threading.Tasks; 使用System.IO.Ports;使用System.Diagnostics;使用System.Management;命名空間 ReadSerialPort{

以上是如何使用WinForms和Visual Studio讀取USB串列裝置的資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板