Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menggunakan WinForms dan Visual Studio untuk Membaca Data daripada Peranti Port Bersiri USB?

Bagaimanakah Saya Boleh Menggunakan WinForms dan Visual Studio untuk Membaca Data daripada Peranti Port Bersiri USB?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-20 23:47:13342semak imbas

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

Kod ini harus berfungsi dengan peranti port USB ke port bersiri dan ia juga mungkin berfungsi dengan skala anda. Beberapa tetapan port ditemui dengan memuat turun/memasang WinCT (RsCom, RsKey & RsWeight). Kemudian, dalam menu Mula Windows di bawah A&D WinCT, pilih sama ada RsCom atau RsKey. Menggunakan RsCom atau RsKey ialah cara mudah untuk memeriksa sama ada kabel/sambungan USB anda berfungsi. Saya menggunakan kedua-dua "RsKey" dan "RsCom" dengan peranti bersiri USB saya, dan ia nampaknya berfungsi.

Buat projek WinForms

VS 2017:

Buka Visual Studio
Kembangkan Dipasang
Kembangkan Visual C#
Klik Windows Desktop
Pilih Windows Forms App (.NET Framework)
Nyatakan nama projek (nama: ReadSerialPort)
Klik OK

VS 2019:

Buka Visual Studio
Klik Teruskan tanpa kod
Klik Fail
Pilih Baharu
Pilih Projek
C# Windows Desktop
Klik Windows Forms App (.NET Framework)
Klik Seterusnya
Nyatakan nama projek (nama: ReadSerialPort)
Klik Buat

Nota: Dari sudut ini ke hadapan, prosesnya adalah sama untuk kedua-dua VS 2017 dan VS 2019.

Tambah kelas: SerialPortDataReceivedEventArgs

Nota: Kelas ini akan digunakan dengan acara yang menghantar data yang diterima daripada peranti port bersiri kepada pelanggan.

Pada menu VS, pilih Projek
Pilih Tambah Kelas (nama: 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;
        }
    }
}

Tambah Rujukan pada System.Management VS

pilih menu Projek
Pilih Tambah Rujukan
Kembangkan Perhimpunan
Semak Pengurusan Sistem
Klik OK

Tambah kelas: ComPorts

Pada menu VS, pilih Projek
Pilih Tambah Kelas (nama: 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;
        }
    }
}

Tambah kelas: HelperSerialPort

Pada menu VS, pilih Projek
Pilih Tambah Kelas (nama: HelperSerialPort.cs)

HelperSerialPort.cs

//jika menggunakan .NET 5, pasang Pakej NuGet: System.IO.Ports

menggunakan Sistem ;
menggunakan System.Collections.Generik;
menggunakan System.Linq;
menggunakan System.Teks;
menggunakan System.Threading.Tasks;
menggunakan System.IO.Ports;
menggunakan System.Diagnostics;
menggunakan System.Management;

ruang nama ReadSerialPort
{

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

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan WinForms dan Visual Studio untuk Membaca Data daripada Peranti Port Bersiri USB?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn