我买了台带串口的机器,附带一个测试小程序,现在想把控制功能整合到另外一个程序中,我发现vb中有个mscomm的控件,用这个可以做吗,怎么做呢

解决方案 »

  1.   

    需有带串口的机器的通信协议,利用MsComm的控件通过串口与下位机通信。
      

  2.   

    vb的mscomm完成串口通信是一点问题都没有的,硬件上连接对,协议对了就OK了!
      

  3.   

    呵呵.这个我知道.正好最近在写这个东东.
    给你一段我写的CODE吧.首先定义COM口的连接,
    ------------------------
    先说下控件属性
    CommPort 设置并返回通讯端口号。 
    Settings 以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。 
    PortOpen 设置并返回通讯端口的状态。也可以打开和关闭端口。 
    Input 从接收缓冲区返回和删除字符。 
    Output 向传输缓冲区写一个字符串。
    ------------------------
    COM口连接和打开.
    Private Sub Form_Load()
        With MSComm1
            .CommPort = 3                    '定义COM口
            .Settings = "9600,n,8,1"         '"BBBB,P,D,S"BBBB 为波特率,P 为奇偶校验,D 为数据位数,S 为停止位数
            .InBufferCount = 0               '清除输入缓存
            .OutBufferCount = 0              '清除输入缓存
            .InputMode = comInputModeText    '数据接收方式
            .InputLen=1                      '定义在接收多少个字节后触发OnComm事件,这个很重要.如果这个数值过大.接收的数据不够的话.是不会触发OnComm事件的.而数据只会存到下面的数据缓存中
            .InBufferSize = 20               '数据缓存大小
            If .PortOpen = False Then        '判断COM口是否打开.如果未打开就打开它.如果出错就弹出错误代码
                .PortOpen = True
                If Err.Number Then
                    MsgBox "Cann't connect to COM3,The Error No. is" & Err.Number
                    Exit Sub
                End If
            End If
        End With
    End Sub
    -------------------------------
    发送数据
    Private Sub Command1_Click()            '定义一个按钮
        If MSComm1.PortOpen = False Then    '判断COM口是否打开
           MsgBox "串口未打开!"
           Exit Sub
        End If
        MSComm1.Output = "要发送的数据" & vbCr  '发送数据.记得要用&VBCR结束.(也就是回车)
    END SUB
    --------------------------------
    接收数据
    Private Sub mscomm1_OnComm()        'OnComm事件.当接收到的数据到InputLen的大小后就会触发这个事件
        Dim code1 As String             '定义一个数组.接收缓存中的数据
        With MSComm1
            Select Case .CommEvent      '事件状态.
                Case comEvReceive       '当MSCOMM1.COMMEVENT的值为COMEVRECEIVE时(也就是为接收状态时,我不知道是不是可以这样理解).就把缓存中的数据存到CODE1里,
                    code1 = .Input
                    Text1.Text = Text1.Text & vbCrLf & code1    '打印数据
            End Select
        End With
    End Sub
    --------------------------------
    完了...
    这是我前两天写的一个小程序测试用的.
    如果你觉得这些写得不够清楚的话.顺便给点参考资料:
    http://dev.yesky.com/347/2636847.shtml
    我就是看这写的.顺便说一句.我是新手...
    --------------------------------
    第一次回别人的技术贴.给点分吧啊...
      

  4.   


    好象写错了点.INPUTLEN不是触发OnComm的条件.而是.Rthreshold.在这里面没有设置.参见
    http://dev.yesky.com/347/2636847.shtml 
      

  5.   

    我是VB专家
    目前正在做围棋人工智能9段,解决世界巅峰难题想进入高手,高高手行列的加我QQ:184324486
    Mobile:13693481232
      

  6.   

    我是VB本家
    目前正在做围棋人工智能10段,解决世界巅峰难题想进入更高手,更高高手行列的加我QQ:37918751
    Mobile:13582426162
      

  7.   

    3楼的代码中应再增加.RThreshold=1
      

  8.   

    有哪为能够提供串口通信的控件,MsComm32.ocx,连同注册文件一起。多谢了