用VB写了个串口调试小软件。有几个问题请教各位!
1、文件格式为bin 的十六进制文件,大小为1K-100K之间,VB怎么用串口控件把该文件正确发送出去?怎么准确计算该bin文件的字节数?
2、用串口发送文件时,进度条怎么做?该调用哪个控件?
希望各位不啬赐教。先谢谢了!
1、文件格式为bin 的十六进制文件,大小为1K-100K之间,VB怎么用串口控件把该文件正确发送出去?怎么准确计算该bin文件的字节数?
2、用串口发送文件时,进度条怎么做?该调用哪个控件?
希望各位不啬赐教。先谢谢了!
解决方案 »
- vb打包相关问题: cannot find database dll
- 重新问报表的字段范围问题
- 求救高手:vb中如何使用哪个API将Form上添加IE控件的边框消除?请提供例程。在线等待,谢谢!!
- 高分求教,急急急急
- kernel32.dll非法页面错误的问题,很有挑战性呀!高手请进。
- 3年未解决的问题!!VB加载ACTIVESKIN皮肤后,其他VB控件不显示!!
- VB基础问题
- 数据量过大?才几千个记录啊!
- access数据库存储长文本
- VB:当FormRisize时,将窗体有关控件的尺寸改变时,有闪烁现象
- combo与sql的问题
- 如何优化从文本中读取数据的速度啊???…………(急!急!)在线等!
CreateFile
ReadFile
WriteFile
就能发送了
点击打开文件按钮时所打开文件装入发送文本框程序如下:
Private Sub Command7_Click()
CommonDialog1.Filter = "文本文件(*.txt)|*.txt|Word文件(*.doc)|*.doc|16进制文件(*.hex)|*.hex|(*.bin)|*.bin|所有文件(*.*)|*.*"
CommonDialog1.FilterIndex = 1
CommonDialog1.ShowOpen
TextSend.LoadFile CommonDialog1.FileName, 1
End Sub
上面程序发送文本框只能正确显示装入的*.txt、*.hex文件。请教各位怎么才能正确的把*.doc、*.bin文件装入发送文本框并且显示正确?
Private Sub Command2_Click()
Dim datalong, datasend As Long
datalong = Len(TextSend.Text) '计算待发送的文件长度
On Error GoTo err:
For datasend = 1 To datalong Step 2
If Option6.Value = True Then '十六进制发送
byteout(0) = "&H" & Mid(TextSend.Text, datasend, 2)
MSComm1.Output = byteout()
ElseIf Option5.Value = True Then '十进制发送
byteout(0) = Val(Mid(TextSend.Text, datasend, 2))
MSComm1.Output = byteout()
ElseIf Option4.Value = True Then '文本发送
byteouttext(0) = Mid(TextSend.Text, datasend, 1)
MSComm1.Output = byteouttext(0)
datasend = datasend - 1
End If
SendCount = SendCount + 1
Label8.Caption = SendCount
Next
If Loopsend = 1 Then
Timer2.Interval = Val(TextDelay.Text)
Timer2.Enabled = True
Else
Timer2.Enabled = False
End If
Exit Sub
err:
SendCount = 0
Label8.Caption = "发送的数据"
MsgBox "数据类型错误,请选择正确的发送模式!", vbInformation, "提示"
If Check2.Value = 1 Then '自动发送
Timer2.Enabled = False
Loopsend = 0
Check2.Value = 0
End If
End Sub
上面程序能正确发送*.txt、*.hex文件,能正确计算出该文件的字节数。请教各位该怎么正确的计算出比如*.doc、*.bin文件字节数?并且正确的把该文件发送出去???
Option Explicit
Dim i As Long
Dim sj() As Byte
Dim jlcd As IntegerPrivate Sub cmdOpen_Click() '检测文件长度
CommonDialog1.ShowOpen
Open CommonDialog1.FileName For Binary As #1
jlcd = LOF(1)
Close
Text2 = jlcd
ReDim sj(jlcd - 1)
Text1 = UBound(sj)
End SubPrivate Sub CmdBIn_Click() '将文件读到BYTE数组
Open CommonDialog1.FileName For Binary As #1
For i = 1 To jlcd
Get #1, i, sj(i - 1)
Next
Close #1
End Sub
http://topic.csdn.net/u/20071114/16/de3ade11-509e-43eb-a638-0dac7bcef821.html
至于如何正确接收和发送,“可找人民邮电出版社”的“VLSUAL BISIC 串口通信工程实例导航”一书的“第七章 双机互联”文章及代码参考。
Dim Buff() As Byte, I As Long
Open "\\?\COM1" For Binary As #1 '在此之前先设置好串口
Open "XXXX.DOC" For Binary As #2 '二进制打开目标文件
ReDim Buff(LOF(2) - 1) '分配缓冲区
Get #2, , Buff '读进内存
Put #1, , Buff '一次写到串口
'由于我没有串口,所以无法测试上面一次写入会不会有问题.
'所以如果不行,就自己用循环,一个字节一个字节写入吧.
' For I = 0 To UBound(Buff)
' Put #1, , Buff(I)
' '这里可以添加发送进度统计的代码
' Next I
Close #2
Close #1
End Sub如果要看看从串口里返回的内容,应该是用GET就可以取回了.
谢谢你的答复.我是在问具体问题,让提问简单明了.难道我在提问前要把我程序的整体思想和我所做的项目阐述出来,证明我对通讯很有研究?
鄙人在电子行业混了十余年,上市的产品数量不下100万件.从来都是低调做人.不喜欢你这般口气回答别人的提问!! 望你好自为之!!