C#与VisionPro联合开发——串口通信

串口通信

串口通信是一种常见的数据传输方式,通过串行接口(串口)将数据以串行比特流的形式进行传输。在计算机和外部设备之间,串口通信通常是通过串行通信标准(如RS-232)来实现的。串口通信可以用于连接各种设备,如打印机、传感器、单片机等。

在串口通信中,数据按照位的顺序依次传输,一个字节(8位)的数据通常包括起始位、数据位、校验位和停止位。串口通信的优点包括连接简单、传输距离较远、可靠性高等特点,但传输速率一般较低。

串口调试助手(软件)

在这里插入图片描述
在这里插入图片描述

使用代码编写
在这里插入图片描述

1、使用代码编写串口通信

using System;
//支持串口通信的
using System.IO.Ports;
using System.Text;
using System.Windows.Forms;namespace _3.串口通信 {public partial class Form1 : Form {public Form1() {InitializeComponent();}//描述一个支持串口通信的对象,SerialPort属于.net里面封装号的一个类SerialPort sp;//声明一个委托public delegate void ShowMSGdele(string str);//2//声明委托对象ShowMSGdele showMSGdele;private void ShowMSG(string msg) {//1textBox1.Text += msg;}//建立串口的链接private void Form1_Load(object sender, EventArgs e) {//为委托赋值showMSGdele = ShowMSG;//为串口实例化sp = new SerialPort();//配置串口信息sp.PortName = "COM2";//设置波特率sp.BaudRate = 9600;//校验sp.Parity = Parity.None;//数据位sp.DataBits = 8;//停止位sp.StopBits = StopBits.One;//接收数据的事件,接收的逻辑是系统封装好的sp.DataReceived += Sp_DataReceived;//打开串口sp.Open();//plc中会提供串口连接数据}//接收数据的事件private void Sp_DataReceived(object sender, SerialDataReceivedEventArgs e) {//1.接收对方发送的字节数大小int size = sp.BytesToRead;//2.准备一个字节数组,用size初始化byte[] buffer = new byte[size];//3.读取数据//参数1:把读取的数放到字节数组中//参数2:从第几个字节开始读取//参数3:是buffer的长度sp.Read(buffer, 0, size);//4.把接收到的字节转成stringstring msg = Encoding.Default.GetString(buffer);//分线程不能刷新ui//textBox1.Text = msg;//MessageBox.Show(msg);textBox1.BeginInvoke(showMSGdele, msg);}//发送消息private void button1_Click(object sender, EventArgs e) {sp.Write(textBox2.Text);}}
}

2、使用winfrom控件编写串口通信

SerialPort 控件是Windows Forms中提供的串口通信控件,可以用于实现串口通信功能。
该控件有三个事件
1、DataRecived:该事件是每次从SerialPort接收数据时触发的
2、ErrorReceived:该事件是每次从SerialPort接收错误触发的
3、PinChanged:该事件是每次SerialPort的pin更改时触发的

代码展示(注意要修改serialPort控件的PortName属性)

using System;
//引入命名空间
using System.IO.Ports;
using System.Text;
using System.Windows.Forms;namespace _4.组件串口通信 {public partial class Form1 : Form {public Form1() {InitializeComponent();}private void Form1_Load(object sender, EventArgs e) {//打开窗口的时候打开串口serialPort1.Open();}private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e) {//获取接收缓冲区中数据的字节数int size = serialPort1.BytesToRead;byte[] buffer = new byte[size];serialPort1.Read(buffer, 0, size);string msg = Encoding.Default.GetString(buffer);textBox1.BeginInvoke(new Action<string>(str => {textBox1.Text += str;}), msg);}private void button1_Click(object sender, EventArgs e) {//判断组件是否正常运行if (serialPort1.IsOpen) {serialPort1.Write(textBox2.Text);}}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/701936.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解析OOM的三大场景,原因及实战解决方案

目录 一、什么是OOM 二、堆内存溢出&#xff08;Heap OOM&#xff09; 三、方法区内存溢出&#xff08;Metaspace OOM&#xff09; 四、栈内存溢出&#xff08;Stack OOM&#xff09; 一、什么是OOM OOM 是 Out Of Memory 的缩写&#xff0c;意思是内存耗尽。在计算机领域…

每日OJ题_牛客JZ39 数组中出现次数超过一半的数字

目录 牛客JZ39 数组中出现次数超过一半的数字 解析代码 牛客JZ39 数组中出现次数超过一半的数字 数组中出现次数超过一半的数字_牛客题霸_牛客网 解析代码 摩尔投票法&#xff1a;摩尔投票法&#xff0c;时间O(N)&#xff0c;空间O(1)。 可以理解成混战极限一换一&#xff…

算法沉淀——动态规划之简单多状态 dp 问题(上)(leetcode真题剖析)

算法沉淀——动态规划之简单多状态 dp 问题上 01.按摩师02.打家劫舍 II03.删除并获得点数04.粉刷房子 01.按摩师 题目链接&#xff1a;https://leetcode.cn/problems/the-masseuse-lcci/ 一个有名的按摩师会收到源源不断的预约请求&#xff0c;每个预约都可以选择接或不接。在…

神经网络系列---常用梯度下降算法

文章目录 常用梯度下降算法随机梯度下降&#xff08;Stochastic Gradient Descent&#xff0c;SGD&#xff09;&#xff1a;随机梯度下降数学公式&#xff1a;代码演示 批量梯度下降&#xff08;Batch Gradient Descent&#xff09;批量梯度下降数学公式&#xff1a;代码演示 小…

基于Pytorch的猫狗图片分类【深度学习CNN】

猫狗分类来源于Kaggle上的一个入门竞赛——Dogs vs Cats。为了加深对CNN的理解&#xff0c;基于Pytorch复现了LeNet,AlexNet,ResNet等经典CNN模型&#xff0c;源代码放在GitHub上&#xff0c;地址传送点击此处。项目大纲如下&#xff1a; 文章目录 一、问题描述二、数据集处理…

[HTML]Web前端开发技术29(HTML5、CSS3、JavaScript )JavaScript基础——喵喵画网页

希望你开心,希望你健康,希望你幸福,希望你点赞! 最后的最后,关注喵,关注喵,关注喵,佬佬会看到更多有趣的博客哦!!! 喵喵喵,你对我真的很重要! 目录 前言 上一节的课后练习

docker运行onlyoffice,并配置https访问【参考仅用】

官方说明&#xff1a; Installing ONLYOFFICE Docs for Docker on a local server - ONLYOFFICEhttps://helpcenter.onlyoffice.com/installation/docs-developer-install-docker.aspx 一、容器端口、目录卷映射 sudo docker run --name容器名称 --restartalways -i -t -d -p…

#FPGA(基础知识)

1.IDE:Quartus II 2.设备&#xff1a;Cyclone II EP2C8Q208C8N 3.实验&#xff1a;正点原子-verilog基础知识 4.时序图&#xff1a; 5.步骤 6.代码&#xff1a;

零样本带解释性的医学大模型

带解释性的医学大模型 提出背景解法拆解方法的原因对比以前解法 零样本带解释性的医学大模型如何使用CLIP模型和ChatGPT来进行零样本医学图像分类用特定提示查询ChatGPT所生成的医学视觉特征描述相似性得分在不同症状上的可视化&#xff0c;用于解释模型的预测注意力图的可视化…

公众号回复idea能给出下载链接。

你可以使用字典来存储这些数据&#xff0c;然后在接收到消息时根据消息内容在字典中查找对应的回复内容。 这样做不仅可以更优雅地管理多组数据&#xff0c;还可以轻松地扩展和维护。msg parse_message(message) reply_dict {"idea": "https://pan.baidu.com/…

【数据结构】时间复杂度(加法乘法规则、渐近时间复杂度、循环时间复杂度总结

2.2 时间复杂度 什么是时间复杂度&#xff1f; 评估算法时间开销 T ( n ) O ( f ( n ) ) T(n)O(f(n)) T(n)O(f(n)) 在实际求解中&#xff0c;只留表达式中最高阶的部分&#xff0c;丢弃其他部分。 如何求解&#xff1f; 求解步骤 1.找到一个最深层的基本操作&#xff1b; 2.分…

03|分页查询优化

1. 根据自增且连续的主键排序 使用条件&#xff1a;主键连续且自增 & 结果按照主键排序 select * from employees limit 90000,5;理论上应该走主键索引, 为什么现在type是 all呢? ● 查询第9w行数据开始的5条数据时属于深度分页。 ● limit 90000 5工作原理就是先读取前面…

mac下使用jadx反编译工具

直接执行步骤&#xff1a; 1.创建 jadx目录 mkdir jadx2.将存储库克隆到目录 git clone https://github.com/skylot/jadx.git 3. 进入 jadx目录 cd jadx 4.执行编译 等待片刻 ./gradlew dist出现这个就代表安装好了。 5.最后找到 jadx-gui 可执行文件&#xff0c;双击两下…

C/C++暴力/枚举/穷举题目(刷蓝桥杯基础题的进!)

目录 前言 一、百钱买百鸡 二、百元兑钞 三、门牌号码&#xff08;蓝桥杯真题&#xff09; 四、相乘&#xff08;蓝桥杯真题&#xff09; 五、卡片拼数字&#xff08;蓝桥杯真题&#xff09; 六、货物摆放&#xff08;蓝桥杯真题&#xff09; 七、最短路径&#xff08;蓝…

Unity中URP实现水体效果(泡沫)

文章目录 前言一、给水上色1、我们在属性面板定义两个颜色2、在常量缓冲区申明这两个颜色3、在片元着色器中&#xff0c;使用深度图对这两个颜色进行线性插值&#xff0c;实现渐变的效果 二、实现泡沫效果1、采样 泡沫使用的噪波纹理2、控制噪波效果强弱3、定义_FoamRange来控制…

自定义神经网络二之模型训练推理

文章目录 前言模型概念模型是什么&#xff1f;模型参数有哪些神经网络参数案例 为什么要生成模型模型的大小什么是大模型 模型的训练和推理模型训练训练概念训练过程训练过程中的一些概念 模型推理推理概念推理过程 总结 前言 自定义神经网络一之Tensor和神经网络 通过上一篇…

yolov8添加注意力机制模块-CBAM

修改 在tasks.py&#xff08;路径&#xff1a;ultralytics-main/ultralytics-main - attention/ultralytics/nn/tasks.py&#xff09;文件中&#xff0c;引入CBAM模块。因为yolov8源码中已经包含CBAM模块&#xff0c;在conv.py文件中&#xff08;路径&#xff1a;ultralytics-…

业务流程管理系统(BPMS):一文掌握,组织业务流程优化必备。

大家好&#xff0c;我是大美B端工场&#xff0c;本期继续分享商业智能信息系统的设计&#xff0c;欢迎大家关注&#xff0c;如有B端写系统界面的设计和前端需求&#xff0c;可以联络我们。 一、什么是BPMS系统 BPMS是Business Process Management System&#xff08;业务流程管…

学习Python分支结构不走弯路

1.单分支语句 """ 语法&#xff1a; if 表达式:执行语句 执行流程&#xff1a;当表达式成立的时候&#xff0c;执行语句&#xff0c;否则不执行 """age int(input(请输入你的年龄&#xff1a;)) if age > 18:print(欢迎光临&#xff01;) …

二进制部署k8s集群之cni网络插件

目录 k8s的三种网络模式 pod内容器之间的通信 同一个node节点中pod之间通信 不同的node节点的pod之间通信 flannel网络插件 flannel的三种工作方式 VxLAN host-GW UDP Flannel udp 模式 Flannel VXLAN 模式 flannel插件的三大模式的总结 calico网络插件 k8s 组网…