VB.NET中串口通讯延时程序

本文讨论了在VB.NET中进行串口通讯时遇到的延时问题,探讨了使用Sleep() API和Timer组件的影响。作者指出,Sleep()可能导致程序在延时期间无法响应其他事件,而Timer则可以保持消息循环。建议根据具体需求选择合适的方法,并提出了串口通讯协议设计的建议,以防止数据丢失。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

大家好,最近我在使用VB.NET开发串口通讯的一点内容,在使用VB.NEI对嵌入式控制器编程,给下位机通讯发命令数据的时候,发现有时候发一次,下位机没有收到,为了增强程序的可靠性,我想延时100毫秒,在发送一次,不知道怎样些延时程序,使用定时器还是有专门的API函数调用,希望有经验的师傅可以给点指点,最好些清楚点,怎样在窗体开头生命API以及如何在需要使用延时程序的地方调用,谢谢

你好,如果我用Sleep() API做延时程序使用,那这种演示会不会影响我在程序中使用的定时器,我要用定时器适时的接收串口数据,另外,如果我要使用Sleep() API,应该怎样在窗体中声明他,谢谢

但我试验了一下,如果用Sleep的时间有阻塞调用(比如用MessageBox.Show("!")却不点击确定按钮),则程序流程很不好。不建议使用Sleep。
现在,我还没看懂你希望的流程。不过我觉得新开一个Timer就差不多了。

你好,在我的程序中有串口的发送和接收,在程序中,我用定时器每隔10毫秒采集一次串口数据,如果我使用Thread.Sleep(100)做延时程序,会不会对我的接收串口数据有影响啊?或者说在延时时间内,我的定时器是不工作的

跟定时器一毛钱关系都没有。
如果你所有对串口的操作在某个按钮方法中写的,你sleep,休眠的是主线程,button的click不退出就不会继续的执行消息循环,也就不会执行到wndproc,而windows.forms.timer这个定时器的原理是有一个中断,到时间就给程序发一个WM_TIMER消息,如果你按钮的事件没退出,不执行消息循环,自然无法处理WM_TIMER消息,窗体是不响应任何操作的。这才是“影响”的原因。
不知道你timer做什么用的。你的思路可能会不太对。

我如果使用sleep延时,如果我延时了1秒钟,那一秒钟内别的事件我都不能响应处理,只能等待一秒钟过后,才能去处理其他的事件,如果在1秒钟内,我又单击了按钮控件,岂不是按钮控件得不到及时的响应啊?
有没有方法让既可以延时,又可以在来了其他的事件的时候,可以跳出延时结构去处理我要处理的事件啊?
我在网络上看到过Thread.Sleep(1000) 
DoEv

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值