通过设置RThreshold可以指定收到多少字节就触发一次OnComm事件,再OnComm事件中把数据取走,不会溢出的啊。

解决方案 »

  1.   

    这么说吧, 我的下位机是个超市里的扫描枪。 按一下就会扫描条码, 扫描成功返回一个字符串(大概10个字符串吧)。 
    这部分是没有问题的。 厂家提供了一个发送指令A, 发送过去可以把当前的照片以jpg的形式发过来。 我的需求是, pc端接受到字符串后, PC立刻发送厂家提供的指令A到扫描枪, 扫描枪以16进制发送jpg到pc。 (发送也是没问题的)我接受的时候问题就来了, 因为这里有两种接受, 一种是条码的字符串, 一种是图片的16进制。 图片的会溢出。 接受的时候get_input会产生1008错误。 我就不确定如果我用循环get_input会不会继续读第二个buffer里面的数据。 谢谢。 
      

  2.   

    get_input是什么?VB直接用MSComm控件啊。
    贴代码
      

  3.   

    支持! 
    RThreshold 属性
          在 MSComm 控件设置 CommEvent 属性为 comEvReceive 并产生 OnComm 之前,设置并返回的要接收的字符数。语法object.Rthreshold [ = value ]Rthreshold 属性语法包括下列部分:部分 描述 
    object 对象表达式,其值是“应用于”列表中的对象。 
    value 整型表达式,说明在产生 OnComm 事件之前要接收的字符数。 
    说明当接收字符后,若 Rthreshold 属性设置为 0(缺省值)则不产生 OnComm 事件。例如,设置 Rthreshold 为 1,接收缓冲区收到每一个字符都会使 MSComm 控件产生 OnComm 事件。数据类型Integer