Maison > développement back-end > C++ > Comment puis-je utiliser WinForms et Visual Studio pour lire des données à partir d'un périphérique à port série USB ?

Comment puis-je utiliser WinForms et Visual Studio pour lire des données à partir d'un périphérique à port série USB ?

Mary-Kate Olsen
Libérer: 2025-01-20 23:47:13
original
338 Les gens l'ont consulté

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

Ce code devrait fonctionner avec un périphérique USB vers port série, et il peut également fonctionner avec votre balance. Certains paramètres de port ont été trouvés en téléchargeant/installant WinCT (RsCom, RsKey et RsWeight). Ensuite, dans le menu Démarrer de Windows sous A&D WinCT, sélectionnez RsCom ou RsKey. Utiliser RsCom ou RsKey est un moyen simple de vérifier que votre câble/connexion USB fonctionne. J'ai utilisé à la fois "RsKey" et "RsCom" avec mon périphérique série USB, et cela a semblé fonctionner.

Créer un projet WinForms

VS 2017 :

Ouvrez Visual Studio
Développez Installé
Développez Visual C#
Cliquez sur Windows Desktop
Sélectionnez Application Windows Forms (.NET Framework)
Spécifiez le nom du projet (nom : ReadSerialPort)
Cliquez OK

VS 2019 :

Ouvrir Visual Studio
Cliquez sur Continuer sans code
Cliquez sur Fichier
Sélectionner Nouveau
Sélectionnez Projet
C# Windows Desktop
Cliquez sur Application Windows Forms (.NET Framework)
Cliquez sur Suivant
Spécifiez le nom du projet (nom : ReadSerialPort)
Cliquez sur Créer

Remarque : À partir de maintenant, le processus est le même pour VS 2017 et VS 2019.

Ajouter une classe : SerialPortDataReceivedEventArgs

Remarque : Cette classe sera utilisée avec un événement qui envoie les données reçues du périphérique de port série à un abonné.

Dans le menu VS, sélectionnez Projet
Sélectionnez Ajouter une classe (nom : 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;
        }
    }
}
Copier après la connexion

Ajouter une référence à System.Management

Dans le menu VS, sélectionnez Projet
Sélectionner Ajouter une référence
Développez Assemblages
Vérifiez System.Management
Cliquez sur OK

Ajouter classe : ComPorts

Dans le menu VS, sélectionnez Projet
Sélectionnez Ajouter une classe (nom : 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;
        }
    }
}
Copier après la connexion

Ajouter une classe : HelperSerialPort

Dans le menu VS, sélectionnez Projet
Sélectionnez Ajouter une classe (nom : HelperSerialPort.cs)

HelperSerialPort.cs

//if à l'aide de .NET 5, installez le package NuGet : System.IO.Ports

en utilisant System;
en utilisant System.Collections.Generic;
en utilisant System.Linq;
en utilisant System.Text;
en utilisant System.Threading.Tasks;
en utilisant System.IO.Ports;
en utilisant System.Diagnostics;
à l'aide de System.Management;

espace de noms 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
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal