Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menggunakan WinForms dan Visual Studio untuk Membaca Data daripada Peranti Port Bersiri USB?
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!