将波特率调高以后,如设成"9600,e,8,1",能传输更多的数据,大约能传输6000Byte,似乎VB5.0 Mscomm的数据传输是定时的,在规定的时间内(大约有几秒钟)不能将OutBuffer中的数据传输完,Mscomm就要将Outbuffer清除,而不是将数据传输完, 奇怪!。

解决方案 »

  1.   

    是不是你的程序的问题? 没有传完就又向OutBuffer写数据?
      

  2.   

    我是用的一台机器调试,将输出线和输入线短接,所以波特率和机器应该没问题。
    我是针对这一问题专门调试OutBuffer,在数据传输完之前没有再输数据。
      

  3.   

    要设置流控制,RTS或Xon/Xoff,一般Xon/Xoff比较好,
    不过需要软件控制,比较麻烦,但灵活性大!
      

  4.   

    这个问题我在用DELPHI编程时也遇到过,设置为"9600,N,8,1"时最多只能接收到6000个字节左右的数据,其余连续发送的数据被忽略.所以我估计MSCOMM控件的数据发送和接收是限时操作的!
      

  5.   

    RTS或XON/XOFF是比较好,但是对方是一台监控设备,在设计前对方没有任何握手协议。
    其次,我想握手协议只是检测与对方通信状态,其确定的是数据是否发送,以及数据在何时发送,对于OUTBUFFER的处理应该没有影响。
      

  6.   

    DELPHI也有类似情况,难道WINDOWS API的是这样设计的?
      

  7.   

    无MODEM,流控就没用了。
    将发送缓冲区容量设大一些,如2K.
    不要一次写入,可一次写入1K byte, 下次写时
    检测一下发送缓冲区内未发送的字节数,
    根据情况再次写入!
      

  8.   

    感谢大家!现在问题已基本解决,我用了一个循环,每次向缓冲区送一个字节,也就是在系统清除缓冲区已前,保证缓冲区的数据全部传送完毕(大约有4-5秒时间),这样就不会出现数据丢失,虽然程序实现不是令人非常满意。但毕竟不失为一种方法。
    API方法,用文件传输的思想去实现,我还未尝试,希望大家有空继续探讨!
      

  9.   

    可以的,只要两端通信格式一样就可以了。我用机连过,没问题的!m使之为一,S为零 ,但由于RS232为负逻辑,显示的波形相反!! 有问题可以和我联系
      

  10.   

    sorry  粘错了   very very sorry!!^O^