大家好,最近我在使用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