C# 232端口侦听

2024-08-24 08:38
文章标签 c# 端口 .net 232 netcore 侦听

本文主要是介绍C# 232端口侦听,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

当需要编程操纵硬件时会遇到过这样的问题,就是通过串口来接收硬件发来的数据,或是通过串口向硬件发送某种格式的命令。在C#平台上,可以通过 System.IO.Ports 命名空间下的SerialPort 类来实现。

  下面是我做过的一个简单的示例,首先获取本机关联的串行端口列表,然后获取配置文件中配置的COM端口,检查是否在本机串行端口列表中,若在列表中则进一步实例化串口对象,并为串口对象指定数据接收事件来实现监听,示例代码如下:

 

复制代码
using System.IO.Ports;
namespace SerialTest
{public class SerialTest{#region 串口监听private SerialPort serialPort = null;/// <summary>/// 开启串口监听/// </summary>private void StartSerialPortMonitor(){List<string> comList = GetComlist(false); //首先获取本机关联的串行端口列表            if (comList.Count == 0){DialogForm.Show("提示信息", "当前设备不存在串行端口!");System.Environment.Exit(0); //彻底退出应用程序   
            }else{string targetCOMPort = ConfigurationManager.AppSettings["COMPort"].ToString();//判断串口列表中是否存在目标串行端口if (!comList.Contains(targetCOMPort)){DialogForm.Show("提示信息", "当前设备不存在配置的串行端口!");System.Environment.Exit(0); //彻底退出应用程序   
                }serialPort = new SerialPort();//设置参数serialPort.PortName = ConfigurationManager.AppSettings["COMPort"].ToString(); //通信端口serialPort.BaudRate = Int32.Parse(ConfigurationManager.AppSettings["BaudRate"].ToString()); //串行波特率serialPort.DataBits = 8; //每个字节的标准数据位长度serialPort.StopBits = StopBits.One; //设置每个字节的标准停止位数serialPort.Parity = Parity.None; //设置奇偶校验检查协议serialPort.ReadTimeout = 3000; //单位毫秒serialPort.WriteTimeout = 3000; //单位毫秒//串口控件成员变量,字面意思为接收字节阀值,//串口对象在收到这样长度的数据之后会触发事件处理函数//一般都设为1serialPort.ReceivedBytesThreshold = 1;serialPort.DataReceived += new SerialDataReceivedEventHandler(CommDataReceived); //设置数据接收事件(监听)try{serialPort.Open(); //打开串口
                }catch (Exception ex){DialogForm.Show("提示信息", "串行端口打开失败!具体原因:" + ex.Message);System.Environment.Exit(0); //彻底退出应用程序   
                }}}/// <summary>/// 串口数据处理函数/// </summary>/// <param name="sender"></param>/// <param name="e"></param>public void CommDataReceived(Object sender, SerialDataReceivedEventArgs e){try{//Comm.BytesToRead中为要读入的字节长度int len = serialPort.BytesToRead;Byte[] readBuffer = new Byte[len];serialPort.Read(readBuffer, 0, len); //将数据读入缓存//处理readBuffer中的数据,自定义处理过程string msg = encoding.GetString(readBuffer, 0, len); //获取出入库产品编号DialogForm.Show("接收到的信息", msg);}catch(Exception ex){DialogForm.Show("提示信息", "接收返回消息异常!具体原因:" + ex.Message);}}/// <summary>/// 关闭串口/// </summary>private void Stop(){serialPort.Close();}/// <summary>/// 获取本机串口列表/// </summary>/// <param name="isUseReg"></param>/// <returns></returns>private List<string> GetComlist(bool isUseReg){List<string> list = new List<string>();try{if (isUseReg){RegistryKey RootKey = Registry.LocalMachine;RegistryKey Comkey = RootKey.OpenSubKey(@"HARDWARE\DEVICEMAP\SERIALCOMM");String[] ComNames = Comkey.GetValueNames();foreach (String ComNamekey in ComNames){string TemS = Comkey.GetValue(ComNamekey).ToString();list.Add(TemS);}}else{foreach (string com in SerialPort.GetPortNames())  //自动获取串行口名称  
                        list.Add(com);}}catch{DialogForm.Show("提示信息", "串行端口检查异常!");System.Environment.Exit(0); //彻底退出应用程序   
            }return list;}  #endregion 串口监听}
}

这篇关于C# 232端口侦听的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1101992

相关文章

C#实现千万数据秒级导入的代码

《C#实现千万数据秒级导入的代码》在实际开发中excel导入很常见,现代社会中很容易遇到大数据处理业务,所以本文我就给大家分享一下千万数据秒级导入怎么实现,文中有详细的代码示例供大家参考,需要的朋友可... 目录前言一、数据存储二、处理逻辑优化前代码处理逻辑优化后的代码总结前言在实际开发中excel导入很

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1

C#实现一键批量合并PDF文档

《C#实现一键批量合并PDF文档》这篇文章主要为大家详细介绍了如何使用C#实现一键批量合并PDF文档功能,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言效果展示功能实现1、添加文件2、文件分组(书签)3、定义页码范围4、自定义显示5、定义页面尺寸6、PDF批量合并7、其他方法

C#下Newtonsoft.Json的具体使用

《C#下Newtonsoft.Json的具体使用》Newtonsoft.Json是一个非常流行的C#JSON序列化和反序列化库,它可以方便地将C#对象转换为JSON格式,或者将JSON数据解析为C#对... 目录安装 Newtonsoft.json基本用法1. 序列化 C# 对象为 JSON2. 反序列化

C#文件复制异常:"未能找到文件"的解决方案与预防措施

《C#文件复制异常:未能找到文件的解决方案与预防措施》在C#开发中,文件操作是基础中的基础,但有时最基础的File.Copy()方法也会抛出令人困惑的异常,当targetFilePath设置为D:2... 目录一个看似简单的文件操作问题问题重现与错误分析错误代码示例错误信息根本原因分析全面解决方案1. 确保

基于C#实现PDF转图片的详细教程

《基于C#实现PDF转图片的详细教程》在数字化办公场景中,PDF文件的可视化处理需求日益增长,本文将围绕Spire.PDFfor.NET这一工具,详解如何通过C#将PDF转换为JPG、PNG等主流图片... 目录引言一、组件部署二、快速入门:PDF 转图片的核心 C# 代码三、分辨率设置 - 清晰度的决定因

C# LiteDB处理时间序列数据的高性能解决方案

《C#LiteDB处理时间序列数据的高性能解决方案》LiteDB作为.NET生态下的轻量级嵌入式NoSQL数据库,一直是时间序列处理的优选方案,本文将为大家大家简单介绍一下LiteDB处理时间序列数... 目录为什么选择LiteDB处理时间序列数据第一章:LiteDB时间序列数据模型设计1.1 核心设计原则

Nginx中配置使用非默认80端口进行服务的完整指南

《Nginx中配置使用非默认80端口进行服务的完整指南》在实际生产环境中,我们经常需要将Nginx配置在其他端口上运行,本文将详细介绍如何在Nginx中配置使用非默认端口进行服务,希望对大家有所帮助... 目录一、为什么需要使用非默认端口二、配置Nginx使用非默认端口的基本方法2.1 修改listen指令

Linux实现查看某一端口是否开放

《Linux实现查看某一端口是否开放》文章介绍了三种检查端口6379是否开放的方法:通过lsof查看进程占用,用netstat区分TCP/UDP监听状态,以及用telnet测试远程连接可达性... 目录1、使用lsof 命令来查看端口是否开放2、使用netstat 命令来查看端口是否开放3、使用telnet

C#高效实现Word文档内容查找与替换的6种方法

《C#高效实现Word文档内容查找与替换的6种方法》在日常文档处理工作中,尤其是面对大型Word文档时,手动查找、替换文本往往既耗时又容易出错,本文整理了C#查找与替换Word内容的6种方法,大家可以... 目录环境准备方法一:查找文本并替换为新文本方法二:使用正则表达式查找并替换文本方法三:将文本替换为图