在做工控程序时需要将MSCOMM控件的SETTINGS校验位属性手动设为M,再改为S.比如:
MSCOMM1.PORTOPEN = FALSEMSCOMM1.SETTINGS = "9600,8,S,1"MSCOMM1.PORTOPEN = TRUE......但测试到每开关一次串口需要大约15毫秒的时间,怎样可以提高到1毫秒以内或微秒级?

解决方案 »

  1.   

    跟你外接硬件的频率和程序的Timer有关系.
      

  2.   

    用控件方式切换连接协议的确很慢。用 API 则快很多。
      

  3.   

    "用控件方式切换连接协议的确很慢。用 API 则快很多。"大哥能给个代码吗?我好测试一下.我是用VB和51单片机进行通讯的.下位机接口是485.用一个转换接口连接到主机232接口上.需要先将SETTINGS的校验位属性设为M,然后向下位机发送一个地址,比如1,同时将SETTINGS的校验位属性设为S,等待下位机回传地址.下位机收到地址后立刻将收到的地址1返回到主机.由于51单片机回传是微秒级.而我估计VB在设置串口属性时太慢,导致回收不到数据.所以在单片回传上加了一个延时,开始加了50微秒,没收到.继续,5毫秒,10毫秒,15毫秒才收到回传的数据.还有不明白的一点是MSCOMM.SETTINGS的属性改变时,需要将PORTOPEN属性设为FALSE,改变属性后再打开呢,还是不用关闭串口可以立刻设置立刻使用? 呵呵,PLUS AND PLAY ?各位大哥有没有好的方法指导一下,小弟感激不尽!
      

  4.   

    呵呵,Windows不是实时操作系统,1毫秒以下的响应速度对于Windows不太可能实现,另外:要重新设定MSCOMM.SETTINGS属性,必须要先关闭串口。
      

  5.   

    不知道你获取时间的方法是否够精确,你可以尝试一下这种计时方法:
    最后得到的是以秒为单位的值。或者用API函数 GetTickCount() ,达到的效果一样。--------------------------------------------------
    dim sngTmr as singleMSCOMM1.PORTOPEN = FALSEMSCOMM1.SETTINGS = "9600,8,S,1"sngtmr=timerMSCOMM1.PORTOPEN = TRUEdebug.print timer- sngtmr'这样可以得到打开端口花费的时间-----------------------------------------------