我在comport的onrxChar事件中,写了一句readstr(str,count),显然当串口收到数据时,就开始读。但我不管设count为多少,readstr总是一次随机读入几个字符到str中,分多次读完,一般是8的倍数个。我想有没有办法,一次将所有输入的字符读入str中?

解决方案 »

  1.   

    用的什么控件??
    如果是mscomm则设置inputlen为0即可
      

  2.   

    我也有这个问题。
    不论我怎么设线程接收时间,还是其他参数,好像都没有用。
    后来改成了SPCOMM,倒没有这样的问题了。真是想不通。
    和楼主一起关注!
      

  3.   

    comport是不是过滤了0呀,我在程序中发了“RC”(我们自定义的)后就会返回长充为64字节长度
    的数据,可是每次收到的数据都没有64,而在其他的调试工具里(串口调试助手V2.2)却能收到64位
    长度的数据,我发现在在DELPHI中的数据,没有一个为零的,而在调试工具里却有很多为0的数据,不知道是为什么,comport不能接收为0的吗?在comport的onrxChar事件中COUNT的长度不包括为0
    的数据的长度吗?
      

  4.   

    cport.EvenChar属性是不是#0?
    如果是,CPORT收到0就会认为要收数据了,会触发接收事件的。你改成#255或其他的字符试试。
      

  5.   

    cport.EvenChar是#0啦,可是还是收不到为0的数据,
      

  6.   

    dinglinger(叮当) 谢谢你的提醒啦,ComPort.DiscardNull := false;
    就可以收到为0的数据了!