C# 中的 SerialPort
简介
C# 中的
SerialPort类提供了对串行端口(如 COM 端口)进行通信的功能。通过SerialPort类,你可以打开、关闭端口,读取和写入数据以及设置通信参数等。下面是对SerialPort类的一些详细解释:
创建 SerialPort 对象
SerialPort serialPort = new SerialPort("COM1", 9600);创建了一个名为
serialPort的串口对象,并指定了端口名称"COM1"和波特率9600。
设置串口参数
serialPort.BaudRate = 9600; serialPort.Parity = Parity.None; serialPort.DataBits = 8; serialPort.StopBits = StopBits.One;除了在构造函数中设置外,你还可以通过上述属性来设置串口的波特率、奇偶校验位、数据位和停止位等参数。
打开和关闭串口
serialPort.Open(); // 在完成通信后记得关闭串口 serialPort.Close();使用
Open方法打开串口,使用Close方法关闭串口。
读取数据、写入数据
byte[] buffer= new byte[1024] int bytesRead = serialPort.Read(buffer, 0, buffer.Length);使用
Read方法从串口读取数据到指定的缓冲区中。byte[] data = { 0x01, 0x02, 0x03 }; serialPort.Write(data, 0, data.Length);使用
Write方法将数据写入串口发送出去。using System; using System.IO.Ports;class SerialCommunication {static void Main(){// 创建串口对象,并指定串口号和波特率SerialPort serialPort = new SerialPort("COM1", 9600);try{// 打开串口serialPort.Open();// 设置要发送的数据byte iWay = 0x01; // 数据1byte tempLight = 100; // 数据2byte tempEnd = ((byte)(0x24 ^ iWay ^ tempLight)); // 计算校验位byte[] sendtemp = new byte[] { 0x24, iWay, tempLight, tempEnd }; // 组装要发送的数据// 向串口写入数据serialPort.Write(sendtemp, 0, sendtemp.Length);Console.WriteLine("数据发送成功!");}catch (UnauthorizedAccessException e){Console.WriteLine(e.Message);}catch (IOException e){Console.WriteLine(e.Message);}finally{// 关闭串口serialPort.Close();}} }
事件处理
serialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);private static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e) {SerialPort sp = (SerialPort)sender;string indata = sp.ReadExisting();Console.WriteLine("Data Received:");Console.WriteLine(indata); }你可以注册
DataReceived事件来处理从串口接收到的数据。using System; using System.IO.Ports;class SerialCommunication {static void Main(){// 创建串口对象,并指定串口号和波特率SerialPort serialPort = new SerialPort("COM1", 9600);try{// 打开串口serialPort.Open();// 设置数据接收事件处理程序serialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);Console.WriteLine("开始接收数据,按任意键退出...");Console.ReadKey();}catch (UnauthorizedAccessException e){Console.WriteLine(e.Message);}catch (IOException e){Console.WriteLine(e.Message);}finally{// 关闭串口serialPort.Close();}}private static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e){SerialPort sp = (SerialPort)sender;string indata = sp.ReadExisting();Console.WriteLine("接收到的数据: " + indata);} }在接收数据的示例中,我们通过
DataReceived事件来异步接收数据,并在DataReceivedHandler事件处理程序中处理接收到的数据。
相关文章:
C# 中的 SerialPort
简介 C# 中的 SerialPort 类提供了对串行端口(如 COM 端口)进行通信的功能。通过 SerialPort 类,你可以打开、关闭端口,读取和写入数据以及设置通信参数等。下面是对 SerialPort 类的一些详细解释: 创建 SerialPort 对…...
2022年06月 Python(五级)真题解析#中国电子学会#全国青少年软件编程等级考试
Python等级考试(1~6级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 Python中 print(“八进制{: o}”.format(12)) 正确的输出结果是?( ) A: 八进制:O B: 八进制:O14 C: 八进制14O D: 八进制14 答案:D 字符串的format()格式。 第2题 下列的程…...
YOLO图像识别
YOLO(you only look once),指只需要浏览一次就可以识别出图中的物体的类别和位置。 也因为只需要看一次,YOLO被称为Region-free方法,相比于Region-based方法,YOLO不需要提前找到可能存在目标的Region。 与…...
2023NewStarCTF
目录 一、阳光开朗大男孩 二、大怨种 三、2-分析 四、键盘侠 五、滴滴滴 六、Include? 七、medium_sql 八、POP Gadget 九、OtenkiGirl 一、阳光开朗大男孩 1.题目给出了secret.txt和flag.txt两个文件,secret.txt内容如下: 法治自由公正爱国…...
计算机网络的发展及应用
计算机网络是计算机技术和通信技术高度发展并相互结合的产物。一方面,通信系统为计算机之间的数据传送提供最重要的支持;另一方面,由于计算机技术渗透到了通信领域,极大地提高了通信网络的性能。计算机网络的诞生和发展࿰…...
K-means(K-均值)算法
K-means(k-均值,也记为kmeans)是聚类算法中的一种,由于其原理简单,可解释强,实现方便,收敛速度快,在数据挖掘、聚类分析、数据聚类、模式识别、金融风控、数据科学、智能营销和数据运…...
网络安全自学
前言 一、什么是网络安全 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 无论网络、Web、移动、桌面、云等哪个领域,都有攻与防…...
加速mvn下载seatunnel相关jar包
seatunnel安装的时候,居然要使用mvnw来下载jar包,而且是从https://repo.maven.apache.org 下载,速度及其缓慢,改用自己本地的mvn下载。 修改其安装插件相关脚本,复制install-plugin.sh重命名为install-plugin-mvn.sh …...
【函数讲解】botorch中的函数 is_non_dominated():用于计算非支配(non-dominated)前沿
# 获取训练目标值,计算Pareto前沿(非支配解集合),然后从样本中提取出Pareto最优解。train_obj self.samples[1]pareto_mask is_non_dominated(train_obj)pareto_y train_obj[pareto_mask] 源码 这里用到了一个函数 is_non_dom…...
LeetCode题94,44,145,二叉树的前中后序遍历,非递归
注意:解题都要用到栈 一、前序遍历 题目要求 给你二叉树的根节点 root ,返回它节点值的 前序 遍历。 示例 1: 输入:root [1,null,2,3] 输出:[1,2,3]示例 2: 输入:root [] 输出:[…...
Python 框架学习 Django篇 (九) 产品发布、服务部署
我们前面编写的所有代码都是在windows上面运行的,因为我们还处于开发阶段 当我们完成具体任务开发后,就需要把我们开发的网站服务发布给真正的用户 通常来说我们会选择一台公有云服务器比如阿里云ecs,现在的web服务通常都是基于liunx操作系统…...
Git 服务器上的 LFS 下载
以llama为例: https://huggingface.co/meta-llama/Llama-2-7b-hf Github # 1. 安装完成后,首先先初始化;如果有反馈,一般表示初始化成功 git lfs install # 2. 如果刚刚下载的那个项目没啥更改,重新下一遍&#x…...
Canvas和SVG:你应该选择哪一个?
如果你是一个Web开发者,你可能已经听说过Canvas和SVG。这两种技术都可以用来创建图形和动画,但它们有什么区别?在这篇文章中,我们将探讨Canvas和SVG的区别以及它们的应用场景,帮助你决定哪种技术更适合你的项目。 什么…...
openGauss学习笔记-122 openGauss 数据库管理-设置密态等值查询-密态支持函数/存储过程
文章目录 openGauss学习笔记-122 openGauss 数据库管理-设置密态等值查询-密态支持函数/存储过程122.1 创建并执行涉及加密列的函数/存储过程 openGauss学习笔记-122 openGauss 数据库管理-设置密态等值查询-密态支持函数/存储过程 密态支持函数/存储过程当前版本只支持sql和P…...
BEVFormer 论文阅读
论文链接 BEVFormer BEVFormer,这是一个将Transformer和时间结构应用于自动驾驶的范式,用于从多相机输入中生成鸟瞰(BEV)特征利用查询来查找空间/时间,并相应地聚合时空信息,从而为感知任务提供更强的表示…...
Centos批量删除系统重复进程
原创作者:运维工程师 谢晋 Centos批量删除系统重复进程 客户一台CENTOS 7系统负载高,top查看有很多sh的进程,输入命令top -c查看可以看到对应的进程命令是/bin/bash 经分析后发现是因为该脚本执行时间太长,导致后续执…...
VUE组件的生命周期
每个 Vue 组件实例在创建时都需要经历一系列的初始化步骤,比如设置好数据侦听,编译模板,挂载实例到 DOM,以及在数据改变时更新 DOM。在此过程中,它也会运行被称为生命周期钩子的函数,让开发者有机会在特定阶…...
【Git系列】Github指令搜索
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
【OpenCV】用数组给Mat图像赋值,单/双/三通道 Mat赋值
文章目录 5 Mat赋值5.1 Mat(int rows, int cols, int type, const Scalar& s)5.2 数组赋值 或直接赋值5.2.1 3*3 单通道 img5.2.2 3*3 双通道 img5.2.3 3*3 三通道 img5 Mat赋值 5.1 Mat(int rows, int cols, int type, const Scalar& s) Mat m(3, 3, CV_8UC3,Scalar…...
Doris:读取Doris数据的N种方法
目录 1.MySQL Client 2.JDBC 3. 查询计划 4.Spark Doris Connector 5.Flink Doris Connector 1.MySQL Client Doris 采用 MySQL 协议,高度兼容 MySQL 语法,支持标准 SQL,用户可以通过各类客户端工具来访问 Doris。登录到doris服务器后&a…...
调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...
基于当前项目通过npm包形式暴露公共组件
1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹,并新增内容 3.创建package文件夹...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...
Swagger和OpenApi的前世今生
Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章,二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑: 🔄 一、起源与初创期:Swagger的诞生(2010-2014) 核心…...
【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...
IP如何挑?2025年海外专线IP如何购买?
你花了时间和预算买了IP,结果IP质量不佳,项目效率低下不说,还可能带来莫名的网络问题,是不是太闹心了?尤其是在面对海外专线IP时,到底怎么才能买到适合自己的呢?所以,挑IP绝对是个技…...
TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?
在工业自动化持续演进的今天,通信网络的角色正变得愈发关键。 2025年6月6日,为期三天的华南国际工业博览会在深圳国际会展中心(宝安)圆满落幕。作为国内工业通信领域的技术型企业,光路科技(Fiberroad&…...
