利用VB串口通信控件MSComm,以二进制方式传输一个900KB左右的文件
发送程序:Dimb()AsByteDimxAsByteDimlAsLong'定义要用到的一些变量Open"c:\a.dat"ForBinaryAs#1‘打开a.DAT文件...
发送程序: Dim b() As Byte
Dim x As Byte
Dim l As Long '定义要用到的一些变量
Open "c:\a.dat" For Binary As #1 ‘打开a.DAT文件
For i = 0 To LOF(1)
Get #1, i + 1, x '读出给X
ReDim Preserve b(l) As Byte
b(l) = x 'x再赋给数组b
l = l + 1
Next i
Close #1
MSComm1.PortOpen = True '打开串口
MSComm1.Output = b '将数组b发送出去
Do
DoEvents
Loop Until MSComm1.OutBufferCount = 0
MSComm1.PortOpen = False '关闭串口
接收程序: Private Sub MSComm1_OnComm()
Dim buffer As Variant
Dim a() As Byte
Dim i
Dim filen As Integer
filen = FreeFile
Select Case MSComm1.CommEvent
Case comEvReceive
buffer = MSComm1.Input
For i = LBound(buffer) To UBound(buffer)
a = buffer '将接收到的数据存入数组a
Next i
Open "d:\b.dat" For Binary As #filen ' 以二进制方式打开
Put #filen, , a() '将a()写入
Close #filen
End Select
End Sub
问题描述:接收到的数据非常大,大概有12M,是发送文件中某一段数据的来回重复。不知道问题出在哪里了 ,但我自己估计问题出现在这两个方面,但我不会改:1.发送方数据量太大,我在想是不是应该分段发,控制一下发送的节奏。2.接收程序中,在将存有接收到数据的数组a以二进制形式写入文件时,不应该放在MSComm1_OnComm()事件中?
哪位高手帮我看看吧 谢谢! 展开
Dim x As Byte
Dim l As Long '定义要用到的一些变量
Open "c:\a.dat" For Binary As #1 ‘打开a.DAT文件
For i = 0 To LOF(1)
Get #1, i + 1, x '读出给X
ReDim Preserve b(l) As Byte
b(l) = x 'x再赋给数组b
l = l + 1
Next i
Close #1
MSComm1.PortOpen = True '打开串口
MSComm1.Output = b '将数组b发送出去
Do
DoEvents
Loop Until MSComm1.OutBufferCount = 0
MSComm1.PortOpen = False '关闭串口
接收程序: Private Sub MSComm1_OnComm()
Dim buffer As Variant
Dim a() As Byte
Dim i
Dim filen As Integer
filen = FreeFile
Select Case MSComm1.CommEvent
Case comEvReceive
buffer = MSComm1.Input
For i = LBound(buffer) To UBound(buffer)
a = buffer '将接收到的数据存入数组a
Next i
Open "d:\b.dat" For Binary As #filen ' 以二进制方式打开
Put #filen, , a() '将a()写入
Close #filen
End Select
End Sub
问题描述:接收到的数据非常大,大概有12M,是发送文件中某一段数据的来回重复。不知道问题出在哪里了 ,但我自己估计问题出现在这两个方面,但我不会改:1.发送方数据量太大,我在想是不是应该分段发,控制一下发送的节奏。2.接收程序中,在将存有接收到数据的数组a以二进制形式写入文件时,不应该放在MSComm1_OnComm()事件中?
哪位高手帮我看看吧 谢谢! 展开
2个回答
展开全部
你的代码问题太多了。
Open "c:\a.dat" For Binary As #1 ‘打开a.DAT文件
ReDim b(LOF(1))
Get #1, , b
Close #1
''''''''''''''''''''''''
Private Sub MSComm1_OnComm() ‘数据大了会被多次触发,
Dim buffer As Variant
Dim a() As Byte
buffer = MSComm1.Input
a=buffer
call 存储(a)
end sub
Private Sub 存储(a() as byte)
Open "d:\b.dat" For Binary As #filen
Put #filen, LOF(1), a()
Close
end sub
'电脑没按VB, 没调试,有错误自己修修把
Open "c:\a.dat" For Binary As #1 ‘打开a.DAT文件
ReDim b(LOF(1))
Get #1, , b
Close #1
''''''''''''''''''''''''
Private Sub MSComm1_OnComm() ‘数据大了会被多次触发,
Dim buffer As Variant
Dim a() As Byte
buffer = MSComm1.Input
a=buffer
call 存储(a)
end sub
Private Sub 存储(a() as byte)
Open "d:\b.dat" For Binary As #filen
Put #filen, LOF(1), a()
Close
end sub
'电脑没按VB, 没调试,有错误自己修修把
展开全部
太阳雨多年积攒极其珍贵的原创VB串口通信技术资料V3.0(800M)
1.VB串口通信编程源码200个,多种行业多种应用...
2.VB串口通信技术文章160篇,详尽地对VB串口通信的诠释...
3.VB串口通信电子书籍16部,工业通信名家著作,经典细致...
4.VB串口通信控件16个,简化串口通信编码,提高开发效率...
5.VB串口视频教程46个,两套完整视频教程,讲解直观,更快掌握...
6.OSI网络模型教程48M,帮助你学习网络通讯基础...
7.串口硬件层知识资料包24M,对RS232,RS422,RS485等串行接口的完美解释...
8.串口调试工具80个,应用于各种串口调试与校验计算...
9.程序员发展类文章和书籍12部,帮助您的成长,健康和发展....
10.更送虚拟串口调试软件, 帮助你在没有串口的电脑上也能正常调试...
你在淘宝搜索“太阳雨串口资料”就可以找到,希望可以帮助到你。
1.VB串口通信编程源码200个,多种行业多种应用...
2.VB串口通信技术文章160篇,详尽地对VB串口通信的诠释...
3.VB串口通信电子书籍16部,工业通信名家著作,经典细致...
4.VB串口通信控件16个,简化串口通信编码,提高开发效率...
5.VB串口视频教程46个,两套完整视频教程,讲解直观,更快掌握...
6.OSI网络模型教程48M,帮助你学习网络通讯基础...
7.串口硬件层知识资料包24M,对RS232,RS422,RS485等串行接口的完美解释...
8.串口调试工具80个,应用于各种串口调试与校验计算...
9.程序员发展类文章和书籍12部,帮助您的成长,健康和发展....
10.更送虚拟串口调试软件, 帮助你在没有串口的电脑上也能正常调试...
你在淘宝搜索“太阳雨串口资料”就可以找到,希望可以帮助到你。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询