VB:如何使用MSComm1发送文件到串口?

baiyongming 2008-10-16 09:16:18
我想把配置文件发送到打印机,如何发送?
有没有最简单的例子?
...全文
424 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Thomsi 2008-10-29
  • 打赏
  • 举报
回复
也正在找这个,谢谢!
muleleqwe 2008-10-28
  • 打赏
  • 举报
回复
我都注册了 没有没有给我注册码?
baiyongming 2008-10-17
  • 打赏
  • 举报
回复
感谢zdingyun,确实是用二进制的方式发数组,现在成功了。
但我感觉缺陷是我用intConfigFileLen固定了文件长度,如何获得文件的真实长度呢?
用FileLen吗?


Dim intConfigFileLen As Integer: intConfigFileLen = 3000
Dim byteConfig() As Byte
ReDim byteConfig(1 To intConfigFileLen)
Dim i As Integer: i = 0

Open strConfigFolder & strConfigFilename For Binary As #1
Do While Not EOF(1)
i = i + 1
If i > intConfigFileLen Then GoTo FAIL
Get #1, , byteConfig(i)
Loop

MSComm1.Output = byteConfig

Close #1
zdingyun 2008-10-17
  • 打赏
  • 举报
回复

Private Sub Command1_Click()
CommonDialog1.Flags = cdlOFNHideReadOnly
' 设置过滤器
CommonDialog1.Filter = "All Files (*.*)|*.*|"
' 指定缺省的过滤器
'CommonDialog1.FilterIndex = 2
' 显示“打开”对话框
CommonDialog1.ShowOpen
Open CommonDialog1.FileName For Binary As #1
MsgBox LOF(1)
Close
End Sub
zdingyun 2008-10-16
  • 打赏
  • 举报
回复
[Quote=引用楼主 baiyongming 的帖子:]
我想把配置文件发送到打印机,如何发送?
有没有最简单的例子?
[/Quote]
用2进制方式读全部文件内容给BYTE数组
然后使用MSCOMM控件发送。
打死不掉牙 2008-10-16
  • 打赏
  • 举报
回复
你先把文件转换成数组啊,再发数组!
zdingyun 2008-10-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zdingyun 的回复:]
引用楼主 baiyongming 的帖子:
我想把配置文件发送到打印机,如何发送?
有没有最简单的例子?

用2进制方式读全部文件内容给BYTE数组
然后使用MSCOMM控件发送。
[/Quote]
上述考虑欠妥。应该是先将配置文件读入字符串变量,然后将其转换为字节(BYTE)数组。采用控制发送节奏的方式来保证发送的数据正确。
详细代码如下:

Option Explicit
Dim data As Variant
Dim Temp1 As String
Dim m As Integer
Dim strData As String
Dim bytInput() As Byte
Dim sj() As Byte
Dim i As Integer
Dim j As Integer
Dim sTemp As String
Dim yTemp() As Byte
Dim Hsum As Integer
Dim Ulen As Long
Dim Llen As Long
Dim for_Sum As Long
Dim Yu_sum As Integer
Dim strfFleName As String

Private Sub cmdSend_Click()
Dim strData As String
Dim str1 As String
Dim NextLine As String
Dim Txt_sj As String
CommonDialog1.ShowOpen
Text1 = ""
strfFleName = CommonDialog1.FileName
Open strfFleName For Input As #1
Do While Not EOF(1)
Input #1, str1
sTemp = sTemp & str1 & Chr(13) & Chr(10)
Loop
Close
Text1 = sTemp
Text1.Refresh
yTemp = StrConv(sTemp, vbFromUnicode)
Hsum = UBound(yTemp)
Text2 = Hsum
Text2.Refresh
yTemp = StrConv(sTemp, vbFromUnicode)
Hsum = UBound(yTemp)
Text2 = Hsum + 1
Ulen = 128
Llen = 0
Yu_sum = (Hsum + 1) Mod Ulen
for_Sum = (Hsum + 1) \ Ulen
Print "字节长= "; Hsum + 1; "循环次数= "; for_Sum; "余数= "; Yu_sum
DoEvents
ReDim sj(Ulen - 1)
Text7 = Timer
Text7.Refresh
If (Hsum + 1) Mod Ulen = 0 Then
For i = 0 To Ulen - 1
sj(i) = yTemp(i + Ulen * j)
If i >= Ulen Then
Exit For
End If
Next i
MSComm1.Output = sj
ElseIf (Hsum + 1) Mod Ulen <> 0 Then
For j = 0 To for_Sum - 1
For i = 0 To Ulen - 1
sj(i) = yTemp(i + Ulen * j)
If i >= Ulen Then
Exit For
End If
Next i
MSComm1.Output = sj
Next j
ReDim sj(Yu_sum - 1)
For i = 0 To Yu_sum - 1
sj(i) = yTemp(i + Ulen * for_Sum)
Next
MSComm1.Output = sj
ElseIf (Hsum + 1) < Ulen Then
MSComm1.Output = yTemp
End If
End Sub

Private Sub Form_Load()
MSComm1.CommPort = 1
MSComm1.InBufferSize = 1024
MSComm1.OutBufferSize = 512
MSComm1.Settings = "9600,n,8,1"
MSComm1.PortOpen = True
Text1 = ""
Text2 = ""
Text3 = ""
Text4 = ""
Text5 = ""
Text7 = ""
End Sub

7,766

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧