关于在VB中进行2串口通讯的问题,可能涉及WINDOWS的消息机制,请高手指教(100分)

  • 主题发起人 主题发起人 daisyrose
  • 开始时间 开始时间
D

daisyrose

Unregistered / Unconfirmed
GUEST, unregistred user!


本人使用VB的MSCOMM控件编制串口通讯程序,有一部分的实现要求是这样的:每隔20毫秒向对方单片机发送一帧数据(1帧为36个字节)(单片机收到后将其播放,由于要完整播放,所以对实时要求较强),本人使用循环语句每隔20毫秒(TIMER控件控制)向串口发送一帧数据,在发送过程中不做其它任何工作,同时关闭了WINDOWS的其它应用程序,但是仍难以做到实时控制,使用示波器监视发现从PC机串口发出的数据任意两帧间距均不相等,估计与WINDOWS的消息机制有关(VB 的指令消息级别很低),请教各位有什么解决的办法,多谢
 
改用 Sleep API延时,类似做法:
<1>发一条指令;
<2>Sleep(20);//延时20毫秒
<3>发下一条指令;
、、、、
 
TIMER控件应该是没错的,时间不准应该也不在于它,后来我把TIMER关闭单纯循环地发数据
从串口发出的数据间的间隔仍然不定,可见不是TIMER控制时间的问题
gettickcount我也用过了,循环发送用的是do while.....loop,其结果差不多,接收设备是没有缓冲池的,只能靠我方控制。
我想能不能用API实现呢?然而在VB里用API实现对串口初始化、发送、接收数据这方面的资料我没有查到,也不知该怎么做?倒是DELPHI这方面的资料到处都是,可惜需要窗口句柄,
我将其移植到VB好象不可行。
 
能不能不用MSComm控件,改用其他的?
 
如果条件允许的情况下可以改用其他的延时函数;sleep函数使用是所有进程都要停下来,根据需要选取。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部