c#中能否用MSCOMM控件,如果能求详细用法,控件还需要下载吗

解决方案 »

  1.   

    仪表是连续发送数据的,每秒十几次,所以导致软件的textbox中一直闪来闪去
    怎么用serialport控制当仪表数据发生变化时才变化捏仪表是托利多的金鸟仪表
      

  2.   


    我以前做过电子秤称重的数据自动发送到PC端,刚开始用的C#里面的serialport,后来觉得还是VB6里面的MSCOMM好用,
      

  3.   

    可以这样试一下:
    private System.IO.Ports.SerialPort serialPort1;
    serialPort1.Open();
    serialPort1.Write(DataBuffer, 0, sendLen);
    serialPort1.Close();
      

  4.   

    我将代码贴出来你看看,如果你懂VB就好办了,我上班不能上QQ(上市公司,避免资料外泄):Private Function OpenPort() As Boolean
        With MSComm1
            .CommPort = 1 'Int(TXTCOM.Text)            '使用COM2
            .Settings = "9600,N,8,1"                   '设置通信端口参数
            .InBufferSize = 40                         '设置MSCOMM1接收缓冲区为40字节
            .OutBufferSize = 14                        '设置MSCOMM1发送缓冲区为2字节
            .InputMode = comInputModeText              '设置接收数据模式为二进制形式
            .InputLen = 8                              '设置Input一次从接收缓冲区读取字节数为1
            .SThreshold = 14                           '设置Output一次从发送缓冲区读取字节数为13
            .InBufferCount = 0                         '清除接收缓冲区
            .OutBufferCount = 0                        '清除发送缓冲区
           
            .RThreshold = 8                            '设置接收8个字节产生这个事件
     
           On Error Resume Next                        
           Err.Clear
           
           If .PortOpen = False Then                   '判断通信端口是否打开
                .PortOpen = True                       '打开
                If Err Then                             
                     MsgBox "Open Com Port Error!"
                     'TXTERR.Caption = "Open Com Port Error!"
                     OpenPort = False
                     On Error GoTo 0
                     Exit Function
                End If
            End If
        End With
        OpenPort = True
        On Error GoTo 0
    End Function这里就是给文本框赋值了,这个值就是来自电子秤上面称重得到的重量数据,我没有全部贴出来,因为逻辑关系有点复杂,我怕你看晕了。Private Sub MSComm1_OnComm()
     
     On Error Resume Next
     
     'For i = 0 To 999999: Next 
      Dim recstr As String
        recstr = ""
        With MSComm1
             Select Case .CommEvent                     
                    Case comEvReceive                     
                        recstr = recstr + .Input                       
                        
                        If Trim(Me.Text1.Text) = "" Then
                             recstr = recstr + .Input
                             Me.Text1.Text = Replace(Replace(Replace(Me.Text1.Text + recstr, "+", ""), "S", ""), "G", "")
                            
                             
      

  5.   


    我本来不是搞VB的,所以那代码写的有点乱,你将就看一下,现在的效果就是用户将一个产品放到电子秤上面,这个时候电子秤上面的数据会不停的闪动,
    当这个重量稳定以后就不会再继续闪了,这个时候PC端的程序就接收到这个数据了,你试试吧。
      

  6.   

    先保存到一个变量里,然后和上一次历史数据的比较,如果不同或者超过范围(可自定义)再赋给textbox。