Maison >développement back-end >Tutoriel C#.Net >Explication détaillée du code pour lire COM PORT en C#
C# Lire COM PORT
Reportez-vous à l'exemple MSDN :
https://msdn.microsoft.com/en-us/library/system.io.ports.serialport.aspx
Ne fonctionne toujours pas, vous devez ajouter cette ligne de code :
mySerialPort.DtrEnable = true;
Description de l'attribut DtrEnable :
Gets or sets a value that enables the Data Terminal Ready (DTR) signal during serial communication.
Code démo :
public class COMPortListener { private static ILog logger = LogManager.GetLogger(typeof (COMPortListener)); #region single instance private COMPortListener() { } static COMPortListener() { } private static COMPortListener _instance = new COMPortListener(); public static COMPortListener Instance { get { return _instance; } } #endregion public Action98c455a79ddfebb79781bff588e7b37e OnDataReceived; public void SerialPortListenAsync() { if (OnDataReceived == null) { throw new InvalidOperationException("must set callback [OnDataReceived] first."); } Task.Run(() => { var mySerialPort = new SerialPort(ConfigurationManager.AppSettings["COM_PORT"]); mySerialPort.BaudRate = 9600; mySerialPort.Parity = Parity.None; mySerialPort.StopBits = StopBits.One; mySerialPort.DataBits = 8; mySerialPort.Handshake = Handshake.None; mySerialPort.RtsEnable = true; mySerialPort.DtrEnable = true; mySerialPort.ReadTimeout = 500; mySerialPort.ErrorReceived += (sender, args) => { Console.WriteLine("######error"); Console.WriteLine(args.EventType); }; mySerialPort.Open(); logger.Info("####COM PORT opened..."); while (true) { try { string message = mySerialPort.ReadLine(); OnDataReceived(message); Task.Delay(500); } catch (TimeoutException ex) { //do nothing } } }); } }
Ce qui précède est l'explication détaillée de la lecture du code COM PORT en C#. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !