vb 串口发送数据字节间延时问题

来源:百度知道 编辑:UC知道 时间:2024/05/16 04:45:42
大家好,问题是这样的,我用串口发一串数据,比如是一个数组A( 1 TO 10)分别是1到10的10个数据,如果我直接往串口发送缓存中放数(MSComm1.Output =A),那么它会不断的把数发送出去,现在因为发数太快,下边的机器收不及会丢数,我要求是发第一个数之间要有20ms的延时,随了用定时器定时,一个一个的发的话,还有没有别的办法呢。串口控件有没有这个属性设置的,谢谢指教!!
兄弟首先谢谢你的回答!!你的那个不是我想要的那种方法,我的意思是要发一个数组里的数,数据里的数不只是一个,有10个,如果我不把数组里的数一个一个发,要怎么做才会在每个字节 之间延时,你那里只是分别发两个数是,我用定时器想要发几个都 可以!!!!!!!!!!!

LZ:你通信协议要求的发送延迟未说明白。
究竟是在接收到数据后须延迟20ms再发送10字节数据?还是这10字节数据间每个延迟20ms?

不是接收,接收的话pc机控制不了,就是你说的,10个字节数据间每个延迟20ms,呵呵,还是兄弟你理解我啊

LZ:你通信协议要求的发送延迟未说明白。
究竟是在接收到数据后须延迟20ms再发送10字节数据?还是这10字节数据间每个延迟20ms?
利用Break 属性
设置或清除中断信号的状态。
Option Explicit
Dim Duration As Single
Dim Dummy
Dim sj(0) As Byte
Private Sub Command1_Click()
Timer1.Enabled = True
End Sub

Private Sub Form_Load()
MSComm1.PortOpen = True
Timer1.Enabled = False
Timer1.Interval = 1
End Sub

Private Sub Timer1_Timer()
MSComm1.Break = True
' 设定20ms的期限。
Duration = Timer + 0.02
'等待期限过去。
Do Until Timer > Duration
Dummy = DoEvents()
Loop
' 清除 Break 状态。
MSComm1.Break = False
sj(0) = sj(0) + 1
'sj(0) = &H32
MSComm1.Output = sj
If sj(0) >= 10 Then
Timer1.Enabled = False
End If
End Sub

sub Waitting(byval n as single) 'n秒
dim t As single
t = Timer
do until timer - t > n
doevents
loop
end sub