你没有发出东西啊,所以buf为空,所以你就收不到东西了。

解决方案 »

  1.   

    如何设置延时?已经发出东西,可是仍为空。WHY?
      

  2.   

    我在txtsend 里写东西了,可是接收端就是收不到,老说“empty”
    如何设置延时?这么点东西不用延时也可以吧?
      

  3.   

    请问你的串口是怎样连接的,是com1到com2还是com1的2,3对接?
    如果是com1到com2则你的程序要用两个MSComm控件.用Mscomm2接收.
    如果是com1的2,3对接,不可能会出现你这种情况.
      

  4.   

    你这个程序还差很多东西呢,首先你要确定你已正确设置了MSCOMM控件的属性或相关调用的DLL文件,然后要确定的是串口已打开。此外还有关于发送与接收缓冲的问题,你最好先到相应的网站上下载一个串口调试软件试一下。
      

  5.   

    人家的串口早已打开了:
    Private Sub Form_Load() 
       MSComm1.PortOpen = True
    End Sub
      

  6.   

    程序是对的,按turbochen(Θ程序员) 说的做吧。
      

  7.   

    VERSION 5.00
    Object = "{648A5603-2C6E-101B-82B6-000000000014}#1.1#0"; "MSCOMM32.OCX"
    Begin VB.Form Form1 
       Caption         =   "Form1"
       ClientHeight    =   4350
       ClientLeft      =   60
       ClientTop       =   345
       ClientWidth     =   7800
       LinkTopic       =   "Form1"
       ScaleHeight     =   4350
       ScaleWidth      =   7800
       StartUpPosition =   3  '窗口缺省
       Begin VB.CommandButton cmdOpen 
          Caption         =   "Open"
          Height          =   315
          Left            =   4590
          TabIndex        =   4
          Top             =   3315
          Width           =   1230
       End
       Begin VB.CommandButton cmdSend 
          Caption         =   "Send"
          Height          =   330
          Left            =   5955
          TabIndex        =   2
          Top             =   3300
          Width           =   1245
       End
       Begin VB.ListBox ListRevive 
          Height          =   1680
          Left            =   315
          TabIndex        =   1
          Top             =   1530
          Width           =   6900
       End
       Begin VB.TextBox txtSend 
          Height          =   315
          Left            =   315
          TabIndex        =   0
          Top             =   795
          Width           =   4155
       End
       Begin MSCommLib.MSComm MSComm1 
          Left            =   4920
          Top             =   630
          _ExtentX        =   1005
          _ExtentY        =   1005
          _Version        =   393216
          DTREnable       =   -1  'True
       End
       Begin VB.Label lblSend 
          AutoSize        =   -1  'True
          Caption         =   "Label1"
          Height          =   180
          Left            =   315
          TabIndex        =   3
          Top             =   1200
          Width           =   540
       End
    End
    Attribute VB_Name = "Form1"
    Attribute VB_GlobalNameSpace = False
    Attribute VB_Creatable = False
    Attribute VB_PredeclaredId = True
    Attribute VB_Exposed = False
    Private Sub cmdOpen_Click()
        MSComm1.CommPort = 1
        MSComm1.InputMode = comInputModeBinary
        MSComm1.RThreshold = 1
        MSComm1.PortOpen = True
        MSComm1.RThreshold = 1
        cmdOpen.Enabled = False
    End SubPrivate Sub cmdSend_Click()
        Dim OutByte() As Byte
        Dim tmpstr As String
        Dim i As Integer
        
        If txtSend.Text = "" Then
            MsgBox "请输入要发送的数据!", vbExclamation, "提示"
            txtSend.SetFocus
        End If
        
        OutByte = StrConv(txtSend.Text, vbFromUnicode)
        
        tmpstr = ""
        For i = LBound(OutByte) To UBound(OutByte)
            tmpstr = tmpstr & Hex(OutByte(i)) & " "
        Next i
        lblSend.Caption = tmpstr
        
        MSComm1.Output = OutByte
    End SubPrivate Sub Form_Unload(Cancel As Integer)
        If MSComm1.PortOpen Then MSComm1.PortOpen = False
    End SubPrivate Sub MSComm1_OnComm()
        Select Case MSComm1.CommEvent
            Case comEventBreak '收到中断讯号
            Case comEventCDTO '
            Case comEventCTSTO
            Case comEventDSRTO
            Case comEventFrame
            Case comEventOverrun '数据遗失
            Case comEventRxOver '接收缓冲区漫溢
            Case comEventRxParity '极性错误
            Case comEventTxFull '传送缓冲区漫溢
            Case comEventDCB '未预期错误
            Case comEvCD
            Case comEvCTS
            Case comEvDSR
            Case comEvRing
            Case comEvReceive '收到字符
                Dim InByte() As Byte
                Dim i As Integer
                Dim buf As String
                
                InByte = MSComm1.Input
                
                buf = ""
                For i = LBound(InByte) To UBound(InByte)
                    buf = buf & Hex(InByte(i)) & " "
                Next i
                ListRevive.AddItem buf
            Case comEvSend
            Case comEvEOF
        End Select
    End Sub
    试试这个
      

  8.   

    请问你的电脑有几个com口?
    你确定你的25Pin的串口是com1吗?
      

  9.   

    老的确实是25pin你仔细看,有标号的,2与3
      

  10.   

    我只是想看一下vb通信方面的,对别的不懂,
    请问:
    Object = "{648A5603-2C6E-101B-82B6-000000000014}#1.1#0"; "MSCOMM32.OCX"  
    代表什么意思?
      

  11.   

    是MSCOMM32.OCX控件在VB上的注册信息。
      

  12.   

    把我的程序放到一个空文件中,然后命名为ff.frm
    用VB打开就知道了