第2次发的时候就把前面没发完的发过来了
比如我要发"ww12345678"
第一次收到"ww123456"
第2次就收到"78ww123456"
请问是怎么回事呀?

解决方案 »

  1.   

    感谢您使用微软产品。根据您的描述,您似乎没有考虑数据传输的时间.事实上,数据的传送是需要时间的,如果您是以同步的方式接收数据,您需要使用一个循环来接收.具体的代码,您可以参考以下文档:
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/comm98/html/vbobjcommx.asp?frame=true 另外,您还可以使用MSComm的OnComm事件来异步接收数据.您可以参考以下文档中的示例代码:
    INFO: Receiving Data Using the MSComm Control's OnComm Event
    http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q194922 - 微软全球技术中心 VB技术支持本贴子以“现状”提供且没有任何担保,同时也没有授予任何权利。具体事项可参见使用条款(http://support.microsoft.com/directory/worldwide/zh-cn/community/terms_chs.asp)。为了为您创建更好的讨论环境,请参加我们的用户满意度调查(http://support.microsoft.com/directory/worldwide/zh-cn/community/survey.asp?key=(S,49854782))。
      

  2.   

    感谢您使用微软产品。根据您的描述,您似乎没有考虑数据传输的时间.事实上,数据的传送是需要时间的,如果您是以同步的方式接受数据,您需要使用一个循环来接收.具体的代码,您可以参考以下文档:
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/comm98/html/vbobjcommx.asp?frame=true 另外,您还可以使用MSComm的OnComm事件来异步接受数据.您可以参考以下文档中的示例代码:
    INFO: Receiving Data Using the MSComm Control's OnComm Event
    http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q194922 - 微软全球技术中心 VB技术支持本贴子以“现状”提供且没有任何担保,同时也没有授予任何权利。具体事项可参见使用条款(http://support.microsoft.com/directory/worldwide/zh-cn/community/terms_chs.asp)。为了为您创建更好的讨论环境,请参加我们的用户满意度调查(http://support.microsoft.com/directory/worldwide/zh-cn/community/survey.asp?key=(S,49854782))。
      

  3.   

    设置
    mscomm1.RThreshold = 需要接受的字节长度
      

  4.   

    dyx(天火)
    谢谢
    现在好像以前的问题可以解决了
    但是好像每次接收数据完以后
    缓冲区好像还有数据,怎么才能把这些数据清除掉啊?
      

  5.   

    MSComm1.InputLen=8
    设置每次由串行端口读入的字符串长度或字节个数。
    如果缓冲区有大于8个的字符,则只读入8个字符,其它的等到下次
    如果小于8个,则一次全部读入。
    所以如果你接收的是固定长度的字符,直接设置该属性即可
    如果是变长的,则需要一些额外的技巧
      

  6.   

    visualtree(梦想依旧) 
    我要接收的是变长度的呀
    并且要把串口读入的字符一次全部读完
    不要有余下的放在缓冲区
    请问要怎么办呢?
      

  7.   

    visualtree(梦想依旧) 
    我要接收的是变长度的呀
    并且要把串口读入的字符一次全部读完
    不要有余下的放在缓冲区
    请问要怎么办呢?