社区
C#
帖子详情
循环读取串口,如何暂停和恢复?
flywolf88
2010-03-29 04:46:45
串口是独占资源,一个程序中可能有多处会使用到串口,假设一个主线程循环读取和发送串口数据,用户根据需要通过界面发送串口指令或读取数据,当用户操作时,串口主线程暂停,让出串口资源,待用户线程完成后,再继续循环,这样的情况用什么方式控制好呢?
...全文
230
9
打赏
收藏
循环读取串口,如何暂停和恢复?
串口是独占资源,一个程序中可能有多处会使用到串口,假设一个主线程循环读取和发送串口数据,用户根据需要通过界面发送串口指令或读取数据,当用户操作时,串口主线程暂停,让出串口资源,待用户线程完成后,再继续循环,这样的情况用什么方式控制好呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
flywolf88
2010-04-16
打赏
举报
回复
问题已解决,采用标志位+延时的办法。
leafold
2010-03-29
打赏
举报
回复
可以连多个设备,这没问题。
应该单个线程操作串口读写,在这个线程中维护一个待发送数据的队列就可以了。
xingyuebuyu
2010-03-29
打赏
举报
回复
参考
http://topic.csdn.net/u/20100319/16/7f8b3bec-0118-4728-8768-499334b7506c.html
flywolf88
2010-03-29
打赏
举报
回复
再顶,SOS!!!!!
flywolf88
2010-03-29
打赏
举报
回复
485总线的方式可以连多个设备,而且就是一个设备的时候,也存在这样的问题,例如:一个线程不断循环读取设备的状态,而用户某些时候要对设备的参数进行设置。
yilaozhuang
2010-03-29
打赏
举报
回复
一个串口就接一根232的线,你怎么连多个设备呢?
flywolf88
2010-03-29
打赏
举报
回复
[Quote=引用 2 楼 flyerwing 的回复:]
还挺复杂,那为什么不多个线程用一个呢。
何必没次都重新能呢。
[/Quote]
如果所有对串口的操作都写在一个方法中,会让这个方法的逻辑非常复杂,而且不利于程序的扩展
flyerwing
2010-03-29
打赏
举报
回复
还挺复杂,那为什么不多个线程用一个呢。
何必没次都重新能呢。
flywolf88
2010-03-29
打赏
举报
回复
自顶,在线等
python
暂停
和
恢复
循环
_python –
暂停
和
恢复
QThread
我正在尝试
暂停
QThread并
恢复
它.所以,我在QThread中有一个RFID
读取
循环
,我想在阅读器获得RFID代码时
暂停
无限
循环
.之后,有一个数据库检查.在检查结束时,我想
恢复
RFID阅读
循环
以获取其他代码.MVCE:def main():global Threadapp = QtGui.QApplication(sys.argv)main = Main()Thread = RFID_Threa...
Python-
读取
串口
接收到的数据
关于使用Python进行
串口
数据的
读取
,以及自定义协议相关的内容。
C#编程实现
串口
数据
读取
详解
htmltable {th, td {th {pre {简介:
串口
通信是IT行业中的一种重要通信方式,尤其在嵌入式系统和工业控制中常见。C#作为.NET框架的主要编程语言,拥有System.IO.Ports命名空间下的SerialPort类,用于支持
串口
操作。本文将详细讲解C#如何
读取
串口
数据,涵盖打开
串口
、监听数据、
读取
数据以及关闭
串口
等关键步骤,包括配置
串口
参数、设置数据接收事件处理以及资源释放等细节。
LabVIEW
串口
数据
读取
与通信实战
htmltable {th, td {th {pre {简介:本案例将深入探讨LabVIEW环境下的RS232
串口
通信实现,介绍LabVIEW中的Serial Toolkit工具包使用、
串口
配置、数据读写操作等关键知识点。同时,还会涉及与单片机通信时需要的协议设计、错误处理和数据解析策略。案例中包含的”labview
串口
数据
读取
与通讯程序.vi”文件将为读者提供一个完整的
串口
通信实例,有助于理解并掌握LabVIEW环境下实现
串口
通信的步骤及实际应用。
stm32f103
串口
接收队列,DMA
循环
模式+空闲中断
串口
通讯最主要的就是要不丢数据,不丢帧,基本设想就是建立一个大的
串口
缓冲区,
串口
接收到的数据使用
循环
队列的方式全部往这个缓冲区放,不过这种方式需要把
串口
缓冲区弄大一点,防止数据覆盖。在stm32中,利用DMA+空闲中断很容易做到这一点。只需要将DMA设置为
循环
模式,如下图: 也就是说,在
循环
模式下,当DMA传输了一个数据,DMA_CNDTRx传输数量寄存器相应减一,当DMA_CNDTRx传输数量寄存器减为0时,DMA_CNDTRx寄存器将
恢复
为相应的初始值,不用软件干预,那么,这不就是
循环
队列的方式吗?
C#
111,119
社区成员
642,554
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章