VB串口通讯问题
Private Sub Command1_Click()Dim a1 As Byte
a1 = Val(Text1.Text)
MSComm1.Output = Chr(a1) + Text2.Text + Text3.Text + _
Text4.Text + Text5.Text + Text6.Text + _
Text7.Text + Text8.Text + Text9.Text
End Sub
Private Sub Command2_Click()
Text10.Text = MSComm1.Input
End Sub
Private Sub Form_Load()
MSComm1.CommPort = 1
MSComm1.Settings = "9600,n,7,1"
MSComm1.PortOpen = True
End Sub
上面程序是VB对FX2N-485BD通信,当填入
05 00 FF BW 0 Y0000 05 10011 26,空格为隔开填到文本框的数据,目的是使Y0-Y4 按照10011动作,动作正常,FX2N-485BD回应灯也闪烁,但按按钮2时,始终为空白,不知问题出在那里.谢谢.
--------------------编程问答-------------------- 使用MSComm控件的OnComm事件捕获和处理这些通信事件。
Private Sub MSComm_OnComm()--------------------编程问答-------------------- LS说得对,使用MsComm控件的OnComm事件来接收,此时须设置
Dim S() As Byte
Dim SS(1024) As Byte
Static N As Long
Static T As Variant
If (MSComm.CommEvent = comEvReceive) Then
S = MSComm.Input '只要有数据就收进来,哪怕只是一个
If (Timer - T > 0.01) Then '间隔10MS以上就认为是一个新的包
text1="" 'text1用于搜集和显示接收(HEX格式)
N = 0
End If
T = Timer
For i = 0 To UBound(S) '一个数据包可能产生若干个oncomm事件
Text1.Text = Text1.Text & Right("0" & Hex(S(i)) & "H", 3) + " "
SS(N+i)=S(i) '接收数据包缓存于SS()
N=N+UBound(S)
Next i
End If
End Sub
MSComm1.RThreshold = 1或待接收的字节数
LS代码中是按2进制方式接收的,但你代码的数据位是7位,建议按字符方式接收.
Option Explicit--------------------编程问答-------------------- 2楼 你倒是是个干啥的 学生还是老师 怎么这么闲? 天天混论坛!!
Dim strSj As String
Private Sub Form_Load()
MSComm1.CommPort = 1
MSComm1.Settings = "9600,n,7,1"
MSComm1.RThreshold = 1
MSComm1.InputMode = comInputModeText
MSComm1.PortOpen = True
End Sub
Private Sub MSComm1_OnComm()
Select Case MSComm1.CommEvent
Case 2
strSj = strSj & MSComm1.Input
Text10.Text = strSj
'请加数据处理代码
End Select
End Sub
可惜你这个串口混了这么长时间了 也没有混明白
补充:VB , 非技术类