运行后Text1.text没有反应,通讯不成.那位高手赐教,不胜感激.Option Explicit
Private Sub Command4_Click()
Text1.Text = ""
End SubPrivate Sub Form_Load()
MSComm1.PortOpen = True '打开串口
MSComm1.Settings = "9600,e,7,1" '设置通讯协议
End SubPrivate Sub Command1_Click()
Dim buf$
MSComm1.OutBufferCount = 0
MSComm1.InBufferCount = 0
buf = Chr$(4) + "013302" + Chr$(5) '"013302"为变频器地址"01"和请求参数地址"3302",应该是:buf=04H,30H,31H,33H,33H,30H,32H,05H,不知以上的方法有没有问题.
MSComm1.Output = buf
End SubPrivate Sub Command3_Click()
MSComm1.PortOpen = False
End
End SubPrivate Sub MSComm1_OnComm()
Dim buf$
With MSComm1
Select Case .CommEvent
Case comEvReceive
buf = .Input
Text1.Text = buf
End Select
End With
End Sub
Private Sub Command4_Click()
Text1.Text = ""
End SubPrivate Sub Form_Load()
MSComm1.PortOpen = True '打开串口
MSComm1.Settings = "9600,e,7,1" '设置通讯协议
End SubPrivate Sub Command1_Click()
Dim buf$
MSComm1.OutBufferCount = 0
MSComm1.InBufferCount = 0
buf = Chr$(4) + "013302" + Chr$(5) '"013302"为变频器地址"01"和请求参数地址"3302",应该是:buf=04H,30H,31H,33H,33H,30H,32H,05H,不知以上的方法有没有问题.
MSComm1.Output = buf
End SubPrivate Sub Command3_Click()
MSComm1.PortOpen = False
End
End SubPrivate Sub MSComm1_OnComm()
Dim buf$
With MSComm1
Select Case .CommEvent
Case comEvReceive
buf = .Input
Text1.Text = buf
End Select
End With
End Sub
解决方案 »
- 请问如何让使用一个TEXT1对TREEVIEW进行编辑
- 请教如何用Winsock登陆网站?
- VB runtime运行库的问题 急!!!!!!!!!
- 怎么把一个窗体插入到另外一个窗体???急
- 弟有一问题 : 对N个有几万条数据的表的连接查询如何提高查询速度?
- 在VC++如何实现像在VB中的那些打包,发送等功能,(如何制造安装程序))
- 如何动态终止listview 与 imagelist 的连接?
- 挑战高手,如何在ActiveBar中显示动画(GIF)?
- 一个Connection.execute的简单问题
- 我喜欢编程,有谁能教我用VB
- 如何让Kodak Image Edit Control的ImgEdit控件中图片显示居中而不是左上角
- 怎么从VSFlexGrid控件中返回选中的行?
主动读取数据!
MSComm1.Output = buf你是按文本发的
改成按2进制发dim lb(9) as byte
lb(0)=chr$(4)
lb(1)=&04h
...
lb(9)=Chr$(5)buf = lb
Dim buf$
buf = MSComm1.Input
Text1.Text = buf
End SubPrivate Sub Form_Load()
MSComm1.PortOpen = True '打开串口
MSComm1.Settings = "9600,e,7,1" '设置通讯协议
End SubPrivate Sub Command1_Click()
Dim buf$
Dim lb(7) As Byte
lb(0) = &H4
lb(1) = &H30
lb(2) = &H31
lb(3) = &H33
lb(4) = &H33
lb(5) = &H30
lb(6) = &H32
lb(7) = &H5
MSComm1.OutBufferCount = 0
MSComm1.InBufferCount = 0
buf = lb
MSComm1.Output = buf
End SubPrivate Sub Command3_Click()
MSComm1.PortOpen = False
End
End Sub
MSComm1.CommPort=1
MSComm1.Settings = "9600,e,7,1" '设置通讯协议
msComm1.RThreshold=1
MSComm1.PortOpen = True '打开串口
End Sub
Private Sub Command1_Click()
Dim buf$
MSComm1.OutBufferCount = 0
MSComm1.InBufferCount = 0
buf = Chr$(4) + "013302" + Chr$(5) '"013302"为变频器地址"01"和请求参数地址"3302",应该是:buf=04H,30H,31H,33H,33H,30H,32H,05H,不知以上的方法有没有问题.
MSComm1.Output = buf
End SubPrivate Sub Command3_Click()
MSComm1.PortOpen = False
End
End SubPrivate Sub MSComm1_OnComm()
Dim buf$
With MSComm1
Select Case .CommEvent
Case comEvReceive
buf = .Input
Text1.Text = buf
End Select
End With
End Sub
Private Sub MSComm1_OnComm()
Dim buf
dim i as long
With MSComm1
Select Case .CommEvent
Case comEvReceive
buf = .Input
for i = 0 to ubound(buf)
Text1.Text = buf End Select
End With
End Sub
MSComm1.InputMode = comInputModeBinary '采用二进制传输
MSComm1.NullDiscard = False 'NULL字符从端口传送到接受缓冲区
MSComm1.DTREnable = False 'DTR线无效
MSComm1.EOFEnable = False '不寻找EOF符
MSComm1.RTSEnable = False 'RTS线无效
MSComm1.InBufferCount = 0 '清空接受缓冲区
MSComm1.OutBufferCount = 0 '清空传输缓冲区
MSComm1.SThreshold = 1 '如果传输缓冲区完全空时产生MSComm事件
MSComm1.RThreshold = 0 '不产生MSComm事件
MSComm1.InBufferSize = 1024
MSComm1.PortOpen = True '打开端口----------------------------
Dim MyArray(0 To 10) As Byte
Dim MyArrays() As Byte
Dim strBCD As String
Dim sngTime As Single
Dim MyData As Variant
Dim mTime As Single
Dim i As Integer
mTime = (mWaitTime + 10 * bytNum) / 1000#
strBCD = Trim(Format(lngAddr, "000000"))
MyArray(0) = &HAC
MyArray(1) = &H55 '读
MyArray(2) = &H55
MyArray(3) = Val(Mid(strBCD, 1, 1)) * 16 + Val(Mid(strBCD, 2, 1))
MyArray(4) = MyArray(3)
MyArray(5) = Val(Mid(strBCD, 3, 1)) * 16 + Val(Mid(strBCD, 4, 1))
MyArray(6) = MyArray(5)
MyArray(7) = Val(Mid(strBCD, 5, 1)) * 16 + Val(Mid(strBCD, 6, 1))
MyArray(8) = MyArray(7)
MyArray(9) = bytNum '要读数据的个数
MyArray(10) = bytNum
MSComm1.Output = MyArray ----------发数据
MSComm1.InBufferCount = 0 '清空接收缓冲区
Do
DoEvents
Loop Until MSComm1.OutBufferCount = 0 '
----------------------------------
‘读反馈数据
sngTime = Timer
Do
DoEvents
If Abs(Timer - sngTime) > mTime Then GetData = False: Exit Function '等待100ms
Loop Until MSComm1.InBufferCount = 1 + bytNum * 2
MyData = MSComm1.Input
MyArrays = MyData
If MyArrays(0) = &HAC Then
GetData = True
For i = 1 To bytNum
bytData(i - 1) = MyArrays(2 * i)
If MyArrays(2 * i - 1) <> MyArrays(2 * i) Then GetData = False
Next i
Else
GetData = False
End If