问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

上位机1个串口通讯用加锁吗为什么

发布网友 发布时间:2023-02-07 09:40

我来回答

2个回答

热心网友 时间:2024-11-29 13:18

上位机1个串口通讯用加锁,在使用c#用串口和下位机通信的时候,为了不让io阻塞ui进程,都会新开个线程来处理串口io。在多个线程同时读取串口的情况下,经过测试,需要加锁,否则会出现各种各样奇奇怪怪的运行时异常。SerialPort本身的实现是线程不安全的。

热心网友 时间:2024-11-29 13:19

昵称: 一半春风
园龄: 3年5个月
粉丝: 1
关注: 3
+加关注
搜索
 找找看
 谷歌搜索
常用链接
我的随笔
我的评论
我的参与
最新评论
我的标签
随笔分类
C#(1)
上位机(1)
随笔档案
2022年12月(1)
2022年2月(1)
阅读排行榜
1. 上位机-串口通信详解(以RS232为例))(4579)
2. 替代if esle 的高级方法(16)
上位机-串口通信详解(以RS232为例))
1、什么是串口通信?
写这个的时候我在想应该怎么解释串口通信,因为串口通信很多朋友不了解的原因是涉及到硬件的知识,对于没有相关专业知识的朋友很难理解串口通信。所以我这里只做部分的解释,需要了解更多硬件相关信息的朋友可以看这篇博文:详解 | 还不懂串口通信?看这篇! - 专注it - 博客园 (cnblogs.com)
串口通信在百度词条上的解释是:
串口通信(Serial Communications)的概念非常简单,串口按位(bit)发送和接收字节的通信方式。
简单的解释就是:两个人说话,一个人说,一个人听。
是的,就是这个么简单。如果不需要了解硬件,那么我们只需要了解通信,串口不需要理解,那是硬件工程师需要考虑的事情。我们今天讲的是上位机与串口通信,重点是通信。
2、串口通信协议
所谓通信协议是指通信双方的一种约定。约定包括对数据格式、同步方式、传送速度、传送步骤、检纠错方式以及控制字符定义等问题做出统一规定,通信双方必须共同遵守。
串口通信协议中,很多朋友很疑惑,RS232,RS485这些协议怎么用?
但实际上这些准确来说,是一种标准。我们可以直接使用这种标准进行通信,完全没有任何问题。
还有一种自定义通信协议,顾名思义,自定义通信协议是基于需求编写的,符合RS232等标准的协议。
这部分对于上位机来说,我们只需要得到第三方提供的自定义通信协议,根据其中的内容进行编程即可,具体的功能实现是由硬件工程师实现。
在通信协议中,最重要的是端口(com)、波特率、数据位、校验位、停止位。
3、实现一个demo
通过上面的了解,上位机工程师应该有一个概念,上位机与串口的通信重点是通信,常用的通信可以直接使用标准的完成,但是如果是属于自定义通信协议的,需要提供自定义的通信协议。
1)首先我们实现一个界面,如下:


2)配置串口参数-打开串口


3)发送数据


4)接收数据
1、使用异步接收数据


2、如果需要写完之后直接读,参考以下方法:


5)效果图:


6)基于自定义协议的通信(发送和接收都使用16进制进行)
首先自定义一个通信协议:
1、使用RS232进行通信,设定如下:
波特率:9600
数据位:8
停止位:1
奇偶校验:无
2、通信协议内容:
1) 寄存器1 置1 执行 功能1 地址 0b
2) 寄存器2 置1 执行 功能2 地址 1b
3)crc校验: 将数据+地址等通过与或等操作生成的一个值(一般自定义的都会进行校验)
4)开始位:01
5)结束位: 05
6)地址位:0a(根据不同寄存器决定)
7)结果位:0e ( 成功0e,失败00)
发送例子:执行功能1
01 0b 01 00 00 00 00 00 00 00 06 0e 05
解析:
01是开始位,0b是对应寄存器1的地址,数据长度是8,没有数据的置00,
06是crc校验生成值,0e是结果位,05 是结束位。
返回成功
01 0b 01 00 00 00 00 00 00 00 06 0e 05
返回失败
01 0b 01 00 00 00 00 00 00 00 07 00 05

以上是我们自定义的一个最简单的一个自定义协议,非常简略的协议。通信流程如下:
1、上位机发送数据
2、下位机接收到数据
3、下位机做crc校验,如果失败,那么不做反应。
4、下位机crc校验成功,执行功能。并反馈结果。
5、上位机接收到数据,做crc校验,如果成功,认为数据正确。否则认为数据错误,执行失败。
6、完成通信
实现:
1、模拟寄存器处理上位机发送的指令:


2、指令正确返回(与协议中对应)


3、指令错误返回(与协议中对应)


以上便是上位机与串口通信的全面解析,如果有错误请各位帮忙指正!
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
考研可以查试卷的各题得分吗 如何看到自己的考研试卷 考研成绩可以查各题得分吗 原神机关棋谭双风双岩队伍怎么玩_机关棋谭双风双岩队伍推荐 原神双风阵容怎么搭配 原神魈双风阵容怎么搭配-魈双风阵容搭配推荐 Java有发展潜力还是C#有发展潜力 兴智联和电信什么关系 玫瑰花酱做法二 武汉兴智联科技服务有限公司怎么样 跪求破解优化大师注册码! 哪位兄弟帮忙下 QQ自由幻想在哪学挖矿,买锄头? QQ自由幻想怎么挖矿 钓鱼? QQ自由幻想如何获得矿石? qq自由幻想铁矿石在哪里挖?怎么合成铁矿石? 双人版小鸡登山跳延迟很高 爬山鸡大好还是小好 我把洗衣液倒在衣服上,结果被染成蓝色了,请问一下怎么才能洗掉? “芳林新叶催陈叶,流水前波让后波”是什么意思? ...主板市场还有比这些股票总市值更小的非ST股票吗? 世界上有没有会食人的淡水鱼啊? wps导出图片去除上下左右图标 脸书使用者多,还是微信使用者多? 在速冻蛋挞食品厂上班车间冷吗 武汉蛋挞厂上班怎么样 东莞广隆蛋挞工厂怎么样 菜地能不能在地图上标注 面上粉刺怎样祛除? dnf史诗和粉装哪个好? dnf传承和粉 为啥算工资按21.75 苹果换屏后要重装系统吗 妈妈生宝宝的时候怎么画 妈妈变成人形生宝宝是什么样子 奥迪a4l怎么松手刹 奥迪A6手刹车要怎么操作,位置在哪里?拉手刹跟放手刹有什么提示标志... 奥迪车停车刹车在哪 淄博向东脱毛技术咋样? 小寨靓丽脱毛美容店地址 恋大自然是骗子公司吗 智能电饭煲的密封条使用久了要换的吗 饭在电饭锅里坏了,密封条腐蚀了,还能用吗? 鱿鱼如何烤才好吃 用烤箱怎样做鱿鱼好吃 唱吧绑定银行卡可以提现礼物的钱吗 清除了实名认证冻结了还能在另一个绑定吧? 纸上圆珠笔字怎么去掉,又不弄坏纸 成华区双建路二手房80平米多少钱 成都天祥街蓝色港湾为啥便宜 成华区万年场大棚菜市二手房房价多少