对Tapdcomport控件,想问一个问题:在接收数据时,不在Trigger事件里处理,因为我的数据有一定的规律,我需要按照我的规律,一部分一部分得接收数据,也就是说我想接收多少个字节来处理都可以,处理完我需要的数据,把没用的数据抛弃,如何做?

解决方案 »

  1.   

    Tapdcomport没用过,是串口通讯的吗? 我一般用spcomm ,
    接受到缓冲区后,你想怎么处理不久怎么处理吗? 干么非的一部分一部分接受呢? 那要不我想就控制发送端吧,一次发送多少字节.
      

  2.   

    我的意思是让你搞个全局变量,把所有的数据都接到这个变量中,然后截取分析。因为OnTrigger事件反应速度及快,可能一条指令数据还没有完全收齐就已经触发了此事件,即收到了半截指令,并且有可能继续收取的数据中除了下半截指令外,还有下一条指令的前半截。我做的东西协议也很复杂,指令长度不同,格式不同,就是这样做的。--------------------------------------------------------------------------通讯协议制定好后,一切将以通讯协议为中心。一套协议中的所有指令可能长度都是统一的,也有可能是长短不同的,并且在OnTrigger事件中实际反应速度及快,可能一条指令数据还没有完全收齐就已经触发了此事件,即收到了半截指令,并且有可能继续收取的数据中除了下半截指令外,还有下一条指令的前半截,如何处理?
    我在做这种处理时是利用全局变量,将串口收到的所有数据都收到该串中,然后按指令格式进行截取,发现不合法指令做一下特殊处理(如要求重发)或抛弃。
    如收到的数据串为:
    #**0000012000**%#**0000000343#**000000540560**%#**0002200000**%
    分段截为:
    #**0000012000**%
    #**0000000343
    #**000000540560**%
    #**0002200000**%
    四条指令,其中:#**0000000343不完整,检测到后进行抛弃处理。兄弟,真的没法再详细了,这是我给别人解答时的所有经验:
    http://218.56.11.178:8020/web/technology/chuangkou.htm大家都是这样解决了的。