Dim temp(1) As Single
Private Sub Cmdsend_Click()
    varbuffer = "S"
    MSComm1.Output = varbuffer
    Timer1.Enabled = True
End SubPrivate Sub Cmdquit_Click()
   MSComm1.PortOpen = False
   Unload Me
End SubPrivate Sub Form_Load()
    MSComm1.Settings = "9600,n,8,1"          '设置数据传输率和发送字符格式
    MSComm1.CommPort = 5                    '设置通讯端口
    MSComm1.InputLen = 0                    '设置或返回一次从接收缓冲区中读取字节数,0表示一次读取所有数据
    MSComm1.InBufferSize = 512              '设置接收缓冲区512Byte
    MSComm1.InBufferCount = 0
    MSComm1.OutBufferSize = 512             '设置发送缓冲区512Byte
    MSComm1.OutBufferCount = 0
    MSComm1.RThreshold = 1
    MSComm1.SThreshold = 1
    MSComm1.PortOpen = True
    
End Sub
Private Sub MSComm1_OnComm()
  Select Case MSComm1.CommEvent
         Case comEvReceive
           Inputsignal = MSComm1.Input
           TextReceive.Text = Asc(Inputsignal)
         Case Else
  End Select
End SubPrivate Sub Text_Change()End SubPrivate Sub Timer1_Timer()
  Outputsignal = Str(Textsend.Text)
  temp(1) = CByte(Outputsignal)
  varbuffer = temp
  MSComm1.Output = varbuffer
  Timer1.Enabled = False
  
End Sub

解决方案 »

  1.   

    6X(8BA4N(M@VAX_@1A`(W(4是这个图像
      

  2.   

     MSComm1.CommPort = 5 '设置通讯端口实时错误13 ,是无效的端口号吧
    那个电脑现在有串口5啊??
    改成用串口1试一下
    现在电脑一般都只有一个串口,默认是COM1
      

  3.   

    我外接设备是com5口,这个应该没有问题
      

  4.   

    一,没有说明出错时的语句是哪一行.二,实时错误13,是类型不匹配.注意一下所有显式与隐式类型转换的赋值语句,比如:TextReceive.Text = Asc(Inputsignal)
    Outputsignal = Str(Textsend.Text)
    temp(1) = CByte(Outputsignal)三,很多变量都没有声明类型,那就算解决了类型不匹配问题,也有可能因为类型的原因造成最后工作的不正常.
    建议"工具--->选项--->要求变量声明"勾上,强制对每一个所使用的变量都要进行确定的类型声明.
      

  5.   

    唉,人迷糊了啊,明明是实时错误8005才是无效的端口号啊。
    13是类型不匹配。。这里:你的inputsignal是什么类型?
    MSCOMM貌似只能以二进制,或文本格式进行数据传输吧?
    Inputsignal = MSComm1.Input
    TextReceive.Text = Asc(Inputsignal)
      
    同上:你的outputsignal,是什么类型呢?
    你定义的temp(1)是single格式
    但是接受时,cbyte函数是转换成byte类型。。
    格式都不统一啊。
      Outputsignal = Str(Textsend.Text)
      temp(1) = CByte(Outputsignal)
      varbuffer = temp
      MSComm1.Output = varbuffer
      

  6.   

    会让你的程序以更确定的方式运行.VB6里面有很多的容错,比如未声明的变量它会默认使用variant类型来对待.而这个类型是万能类型,可存放VB6里所有其它确定类型变量的内容.但是在不同的类型的内容赋值时,如果你没注意到这一点,就容易出错了.另外,如果敲代码时把变量名输错了,而此时并未使用强制变量声明,则VB6会把这个打错的变量当成一个新的变量来对待,里面的值就是0或其它初始值(依当前使用这个变量的语句而定),而不是之前本应该输入的变量应有的值.这种情况在工程大了的时候也是很难查的.所以使用强制变量声明对于程序整体的把握与除错等都有帮助.
      

  7.   

    你选的是缺省的文本模式吧?Private Sub MSComm1_OnComm()
      Select Case MSComm1.CommEvent
      Case comEvReceive
      TextReceive.Text =  MSComm1.Input
      End Select
    End SubPrivate Sub Timer1_Timer()  MSComm1.Output = Textsend.Text
      Timer1.Enabled = False
       
    End Sub