你的RThreshold = 1,当然要接收几次了,不过RThreshold只是个触发的下限,并不是接收到RThreshold个字节就触发。你只有在触发事件里面定义一个静态变量,当消息全部接收完后再处理。或者用定时器代替mscomm的时间,某些情况下更方便。
================================================================
共同学习,共同进步
================================================================

解决方案 »

  1.   

    但是我见同事用的DEPHI的一个三方控件,RThreshold也是为1,但可以接收到完整的消息。
      

  2.   

    但是我见同事用的DEPHI的一个三方控件,RThreshold也是为1,但可以接收到完整的消息。
      

  3.   

    你可以把inputlen设成接收缓冲区的大小,按设置一个定时器,当缓冲区有数的时候触发定时器,检测缓冲区内数据是否有变化,如果没有变化,则说明再没有数据传入,此时你再收数。说明inputlen是一次从接收缓冲区去几个字节的数
      

  4.   

    这是多方面的原因的,比如缓冲不够,发送时连接不好,或者参数不对,
    但是这都是有办法解决的,我做的一个MSCOMM发送和接收文件的工具效果就很好,主要是通过用校验和命令字来控制的。比如开头一定用A开始,结束一定用Z表示结束,并把所有字加起来放在Z后面做较验核。(只是一个比方而以,实际没有那么简单)
      

  5.   

    现在我主要和MODEM打交道,不仅要用AT命令,还要处理短消息中心发送的短消息