我们每包数据为644个字节,以0xFF0xFF开头,以0XAA0XAA结尾,,如:有10包数据,我用一个循环来做每次发0x020x420x420x03命令开始读一包数据,处理后再发下一个0x020x420x420x03可在发下一次前我要Sleep(2000)才能正确收到一包不然数据就是乱,(数率是9600),请问问题出在哪是我程序读数据慢还是单片机送数据慢还是其它原因?

解决方案 »

  1.   

    是通讯速度慢
    9600/(8+1)=1700Byte
    近1/3秒发送完毕,这其间你不能串口写操作
      

  2.   

    window串口事件驱动,不用Sleep(2000)。设置读数据长度,读完10包数据后停止即可。
    如要提高速度,将波特率设置为19200或更高。
      

  3.   

    TO nanjianhui(nan) ( ) :我没有示波器,但如单片机可能用的时间要长一些,因为如果我用计算机连续自发自收只要中间Sleep(10)就行了,请问这种情况如何解决!TO liu_swallow(swallow):我想你可能是对如果我用计算机连续自发自收只要中间Sleep(10)就行了,我想这10MS个等待可能就是,使我不要向串口进行写操作,可为什么与单片机要等那么久,有什么解决方法
    TO 3jaja(3++输入法) ( ) :我用就是事件驱动,不过现在功能上要求读一包就要停下来处理一下数据再读下一包,现在就是读完第一包后,如不等2000,再向串写一个命令串,所读下一包数据就是错的但我自发自收就不要等这么久,请教如何解决!
      

  4.   

    有一个问题就是:在读一包数据时,我用的是事件驱动,可是单片机发来的数据会解发几次事件,如每一次发来10字(ComStat.cbInQue=10),下一事件又发来100(ComStat.cbInQue=100),我是根据一包的长度将几次的结果组成一包,请问这种现象对吗为什么不是发一包触发一个事件一次就是接收到一包,数据,是因为单片机慢吗?