社区
网络及通讯开发
帖子详情
串口同步通信阻塞问题
haha0909
2013-05-29 03:08:56
最近在修改一个程序,是串口通信的,现在遇到这样一个问题:运行老版本(没修改前的程序)后,再运行新版本的程序就挂死,必需重启电脑后新版才能正常运行。调试发现 WriteFile(hComm ,&CheckSection, 1, &lrc, NULL ); 这条语句一直等待。貌似老版本占用着COM口未退出,又因为是同步的,所以新版的WriteFile就不能执行,一直等待!请问要怎么使老版本占用的COM退出来呢?
...全文
257
4
打赏
收藏
串口同步通信阻塞问题
最近在修改一个程序,是串口通信的,现在遇到这样一个问题:运行老版本(没修改前的程序)后,再运行新版本的程序就挂死,必需重启电脑后新版才能正常运行。调试发现 WriteFile(hComm ,&CheckSection, 1, &lrc, NULL ); 这条语句一直等待。貌似老版本占用着COM口未退出,又因为是同步的,所以新版的WriteFile就不能执行,一直等待!请问要怎么使老版本占用的COM退出来呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
我不懂电脑
2013-06-03
打赏
举报
回复
在老版本退出时关闭串口用closefile就可以了
「已注销」
2013-06-02
打赏
举报
回复
是方法,不是函数。
「已注销」
2013-06-02
打赏
举报
回复
这个很简单,就是每次执行一条命令就关闭串口。关闭串口的时候条用一个函数,用application.DoEvent();这样就不会发生死锁了。
繁华落尽空
2013-05-31
打赏
举报
回复
加一个PCOM的DLL,用DLL中的sio_close(int port);关闭串口,port为串口号
UART与USART区别 (
串口
同步
通信
和异步
通信
)
UART的
同步
通信
和异步
通信
https://blog.csdn.net/chipsea_mltsum/article/details/83897924 STM32-USART
同步
异步串行通讯 https://wenku.baidu.com/view/fbd1844ad5d8d15abe23482fb4daa58da1111ccc.html UART和USART有区别 https://blog.csdn.net/wofreeo/article/details/100066791 ua..
STM32 HAL库之
串口
详细篇(
阻塞
、扫描、中断、DMA)
一、基础认识 (一) 并行
通信
原理:数据的各个位同时传输 优点:速度快 缺点:占用引脚资源多,通常工作时有多条数据线进行数据传输 8bit数据传输典型连接图: 传输的数据是二进制:11101010,则
通信
使用8条线同时进行数据传输,发送端一次性发送8位数据,接收端一次性接收8位数据。 (二) 串行
通信
原理:数据按位顺序传输 优点:占用引脚资源少 缺点:速度相对较慢,通常工作时只有一条数据线进行数据传输 8bit数据传输典型连接图: 传输的数据是二进制:11101010,则
通信
STM32—
串口
通信
作用:进行数据交互和信息传递条件:两个端,发送端和服务端。
C++使用boost库编写
串口
同步
通信
代码
使用deadline_timer实现超时控制,防止永久
阻塞
。持续读取直到满足停止条件(如检测到换行符)
VC++:
串口
同步
通信
同步
通信
比异步
通信
实现简单,可以适合小数据量的
通信
,但是它在发送数据和接收数据时,会
阻塞
线程,直到数据返回时才会继续运行,所以一般建议用异步
通信
来实现。这就是
串口
调试助手上需要点16进制发送,才能发送成功的原因,其实简单来说就是 “01” 不等于 0x01。比如我们进行modbus发送:01 03 00 00 00 01 84 0A 这个数据,用下面的方式发送是不成功的。应该用下面的方式发送。
网络及通讯开发
1,317
社区成员
8,874
社区内容
发帖
与我相关
我的任务
网络及通讯开发
C++ Builder 网络及通讯开发
复制链接
扫一扫
分享
社区描述
C++ Builder 网络及通讯开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章