vb串口通信问题

cuilu 2003-10-15 10:47:29
现有一程序要求将电子秤上的显示数据通过串型接口显示在相应的vb程序中,程序也可以数据进行处理后回显在电子秤上,我是个初学者,只知道用mscomm控件,具体不会,谁能帮助我,有没有具体的类似原代码给参考一下,谢谢!
...全文
156 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
AresChen 2003-10-18
  • 打赏
  • 举报
回复
这是我以前为我们的硬件工程师作的一个简单串口测试程序,临时用的,所以没有说明,你凑活看吧。

Private Function Hex2Str(ByVal b As Byte) As String
Dim strHex As String
Dim strRet As String


strHex = "0123456789ABCDEF"
strRet = Mid$(strHex, Int(b / 16) + 1, 1)
strRet = strRet & Mid$(strHex, b - Int(b / 16) * 16 + 1, 1)

Hex2Str = strRet
End Function
Private Sub btnOpen_Click()
On Error Resume Next

With mscCom
.CommPort = 1
.Settings = "9600,n,8,1"
.InputMode = comInputModeBinary
.PortOpen = True
End With

If Err.Number = 0 Then
MsgBox "Comm Port Opened!", vbInformation
Else
MsgBox "Comm Port Open Failed!", vbExclamation
End If
End Sub
Private Sub btnTest_Click()
On Error GoTo errHandle

Dim b() As Byte
Dim v As Variant
Dim i As Integer
Dim b1 As Byte

With mscCom
.InputLen = 0

ReDim b(2 + Combo1.ItemData(Combo1.ListIndex))
b(0) = &HC1
b(1) = Combo1.ItemData(Combo1.ListIndex)

b1 = 0
For i = 1 To Combo1.ItemData(Combo1.ListIndex)
b(1 + i) = i
b1 = b1 Xor i
Next i

'XOR
b(2 + Combo1.ItemData(Combo1.ListIndex)) = b1

v = b
.Output = v

For i = 0 To 2 + Combo1.ItemData(Combo1.ListIndex)
txtSend.Text = txtSend.Text & Hex2Str(b(i)) & " "
Next i
txtSend.Text = txtSend.Text & vbNewLine
End With

Exit Sub

errHandle:
MsgBox Err.Description, vbExclamation
End Sub

Private Sub Command1_Click()
On Error GoTo errHandle

Dim b() As Byte
Dim v As Variant
Dim i As Integer

With mscCom
.InputLen = 0

ReDim b(2)
b(0) = &HC3
b(1) = 0
b(2) = 0

v = b
.Output = v

For i = 0 To 2
txtSend.Text = txtSend.Text & Hex2Str(b(i)) & " "
Next i
txtSend.Text = txtSend.Text & vbNewLine
End With

Exit Sub

errHandle:
MsgBox Err.Description, vbExclamation
End Sub

Private Sub Command2_Click()
On Error GoTo errHandle

Dim b() As Byte
Dim v As Variant
Dim i As Integer
Dim b1 As Byte
Dim s As String

With mscCom
.InputLen = 0

ReDim b(10)
b(0) = &HC2
b(1) = 8

s = Format(Val(Text1.Text), "0000.00")
b(2) = Val(Mid(s, 1, 1)) * 16 + Val(Mid(s, 2, 1))
b(3) = Val(Mid(s, 3, 1)) * 16 + Val(Mid(s, 4, 1))
b(4) = Val(Mid(s, 6, 1)) * 16 + Val(Mid(s, 7, 1))

b(5) = 1
b(6) = 2
b(7) = 3
b(8) = 4
b(9) = 5

b1 = 0
For i = 2 To 9
b1 = b1 Xor b(i)
Next i

'XOR
b(10) = b1

v = b
.Output = v

For i = 0 To 10
txtSend.Text = txtSend.Text & Hex2Str(b(i)) & " "
Next i
txtSend.Text = txtSend.Text & vbNewLine
End With

Exit Sub

errHandle:
MsgBox Err.Description, vbExclamation
End Sub


Private Sub Command3_Click()
txtRecv.Text = ""
txtSend.Text = ""
End Sub

Private Sub Form_Load()
With Combo1
.Clear

.AddItem "运营卡增量": .ItemData(.NewIndex) = 16
.AddItem "非运营卡减量": .ItemData(.NewIndex) = 19
.AddItem "油站操作卡": .ItemData(.NewIndex) = 16
.AddItem "保修加油卡": .ItemData(.NewIndex) = 16
.AddItem "设备代号修改卡": .ItemData(.NewIndex) = 16
.AddItem "机动加油卡": .ItemData(.NewIndex) = 13
.AddItem "加油控制卡": .ItemData(.NewIndex) = 16
.AddItem "采集控制卡": .ItemData(.NewIndex) = 12
End With

Text1.Text = ""
End Sub

Private Sub mscCom_OnComm()
Dim b() As Byte
Dim v As Variant
Dim i As Integer

If mscCom.InBufferCount > 0 Then
v = mscCom.Input
b = v
For i = 0 To UBound(b)
txtRecv.Text = txtRecv.Text & Hex2Str(b(i)) & " "
Next
End If
End Sub

cuilu 2003-10-18
  • 打赏
  • 举报
回复
我现在接受已经可以了,在程序中已经可以显示了,但把接受到的信息处理后再显示在秤上该怎么做啊?单单用mscomm1.output="字符串",好象不能显示的,没有反应,谁能帮帮我啊!!万分感谢
golden24kcn 2003-10-17
  • 打赏
  • 举报
回复
你的称是什么型号的,看看产品说明,其实很容易,不过有是二进,有的是十六进,不过是RS232的接收了发送问题.
SuperZhou 2003-10-17
  • 打赏
  • 举报
回复
用www.google.com搜索
ppcust 2003-10-17
  • 打赏
  • 举报
回复
网上好多例子
找个看看就行了
xiaoyu4446312 2003-10-17
  • 打赏
  • 举报
回复
请教OSYLL(),如果把信息发到大屏幕上该怎么做(最好有事例代码),谢谢
xiaoyu4446312 2003-10-17
  • 打赏
  • 举报
回复
这个不是要通过协议吗?如果是传到一个屏幕上该怎么办呢
cryptonym 2003-10-15
  • 打赏
  • 举报
回复
有没有高错。msdn里面就有丫,先找找老帖子吧。
OSYLL 2003-10-15
  • 打赏
  • 举报
回复
'把串口的2,3脚连起来,可实现自发自收,通过测试以下程序可用.
'在新建窗体中放一个COMMAND,两个TEXTBOX,一个MSCOMM控件
Private Sub Command1_Click()
MSComm1.Output = Text1.Text 'SEND
End Sub

Private Sub Command2_Click()
MSComm1.PortOpen = False '关闭串口和程序
End
End Sub

Private Sub Form_Load()
MSComm1.CommPort = 2 '使用第二个串口
If MSComm1.PortOpen = False Then MSComm1.PortOpen = True '打开串口

MSComm1.RThreshold = 2
MSComm1.Settings = "1200,e,8,1"
MSComm1.InputMode = 0
MSComm1.OutBufferCount = 0
MSComm1.InBufferCount = 0
MSComm1.SThreshold = 1
MSComm1.Handshaking = comXOnXoff
End Sub

Private Sub MSComm1_OnComm()
Dim aa As String
MSComm1.InputLen = 0
aa = CStr(Trim(MSComm1.Input)) 'receive
Text2.Text = aa
End Sub

cuilu 2003-10-15
  • 打赏
  • 举报
回复
我找过了,没有!帮帮忙来,我急着用!谢谢了!!

1,451

社区成员

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

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