您好,我想写个VB接收串口的程序,可是出了一些问题,显示不出来接收的数据。您能帮我看看嘛。

PrivateSubCommand1_Click()''DimmsgAsStringCommand1.Caption="串口2已启动"MSComm1.CommPort=3... Private Sub Command1_Click()
''
Dim msg As String
Command1.Caption = "串口2已启动"
MSComm1.CommPort = 3
MSComm1.Settings = "9600,N,8,1"
MSComm1.InputLen = 0
MSComm1.OutBufferSize = 256
MSComm1.InBufferSize = 512
MSComm1.RThreshold = 1
MSComm1.PortOpen = True

''
End Sub

Private Sub Command3_Click()
''
MSComm1.PortOpen = False
Command1.Caption = "启动串口2"

''
End Sub

Private Sub MSComm1_OnComm()
''
Dim Buffer As Variant
Select Case MSComm1.CommEvent
Case comEvReceive
MSComm1.InputLen = 0
MSComm1.InputMode = comInputModeBinary
Buffer = MSComm1.Input
MSComm1.InputMode = comInputModeText
Buffer = MSComm1.Input
Text1.Text = Buffer
Case Else
End Select
''
End Sub
这些是我的代码可以帮我看看嘛
展开
 我来答
zdingyun
2016-05-24 · 知道合伙人软件行家
zdingyun
知道合伙人软件行家
采纳数:15429 获赞数:48174
1982年上海业余工业大学化工系毕业 现退休

向TA提问 私信TA
展开全部

问题出在OnComm事件是以二进制模式读取了MsComm控件的输入,那必须用Byte字节流来处理。

或者注释掉二进制接收模式,以文本接收。

Private Sub MSComm1_OnComm()
    Dim Buffer As Variant
    Select Case MSComm1.CommEvent
    Case comEvReceive
    'MSComm1.InputMode = comInputModeBinary
    'Buffer = MSComm1.Input
    MSComm1.InputMode = comInputModeText
    Buffer = MSComm1.Input
    Text1.Text = Buffer
    End Select
End Sub
追问
您好,按照你这样改了之后还是没有数据这是怎么回事。
追答

这是不可能的,代码经测试通过的。

Private Sub Form_Load()
    MSComm1.RThreshold = 1
    MSComm1.PortOpen = True
End Sub

Private Sub MSComm1_OnComm()
    Dim Buffer As Variant
    Select Case MSComm1.CommEvent
    Case comEvReceive
    MSComm1.InputMode = comInputModeText
    Buffer = MSComm1.Input
    Text1.Text = Buffer
    End Select
End Sub

注意MsComm控件使用的COM口号是否与你机器实际物理COM口一致。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式