小女子求救:打开文件并发送出去需要用时5分钟?
'打开文件
FileName = App.Path & "\nnn.mcs "
Open FileName For Input As #1
Do While Not EOF(1) '循环至文件尾
'读出一行数据放入one_line中
Line Input #1, one_line
'得到一行数据,然后串口发送处理
MSComm1.Output = one_line
'延时10ms
Sleep (10)
DoEvents
Loop
‘关闭文件
Close #1
上面是我的一段打开文件并发送出去的程序,文件的大小为800kb,先不说按握手协议发,单就上面读一行马上发送出去,把这个文件发送出去就需要5分钟,我想问问高手有没有什么更快的方法,最好控制在1分钟左右,我想到延时不用,可是下位机收到的数据就会出错,我现在用的波特率是38.4kb/s,再高了下位机收到的数据也会出错,请高手指点一下,谢谢!!
[解决办法]
按照38.4Kbps的波特率,传送800KB的数据,至少得要166.67秒(约2.78分钟),1分钟是传不完的。
800(KByte) * 8(bit/Byte) / 38.4(Kbps) = 166.67
[解决办法]
Private Declare Function GetTickCount Lib "kernel32 " Alias "GetTickCount " () As Long
Dim tt As Long
FileName = App.Path & "\nnn.mcs "
Open FileName For Input As #1
Do While Not EOF(1) '循环至文件尾
'读出一行数据放入one_line中
Line Input #1, one_line
'得到一行数据,然后串口发送处理
MSComm1.Output = one_line
tt = GetTickCount() + 10
Do While MSComm1.OutBufferCount
DoEvents
If tt < GetTickCount() Then Exit Do
Loop
Loop
‘关闭文件
Close #1
[解决办法]
GetTickCount是一个api函数
Private Declare Function GetTickCount Lib "kernel32 " () As Long
'调用api实现延迟200ms
Private Function Delay(MSceond As Long)
Dim i As Long
If MSceond < 2 Then Exit Function
i = GetTickCount
Do While GetTickCount - i < MSceond
DoEvents
Loop
End Function
private sub form_load()
delay(200) '200即为参数200毫秒
end sub