利用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, 没调试,有错误自己修修把
意法半导体(中国)投资有限公司
2023-06-12 广告
2023-06-12 广告
单片机,即单片微控制器,也称为单片微型计算机,是将中央处理器(CPU)、存储器(ROM,RAM)、输入/输出接口和其他功能部件集成在一块 在一个小块的集成电路上,从而实现对整个电路或系统的数字式控制。单片机不是完成某一个逻辑功能的芯片,而是...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
展开全部
太阳雨多年积攒极其珍贵的原创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.更送虚拟串口调试软件, 帮助你在没有串口的电脑上也能正常调试...
你在淘宝搜索“太阳雨串口资料”就可以找到,希望可以帮助到你。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询