最近写了一个烧录程序,是给短信猫传输升级补丁用的,用的是XModem协议(只支持XModem协议,改用其他协议的建议暂时不讨论)
现在已经可以正常使用了,就是传输速度很慢,大概只有超级终端传文件的1/3(不是波特率问题,都是用115200的波特率)我的具体做法是,先把文件转换成流,再通过CopyForm函数按128字节一份将文件流拆分好,每一份按照XModem协议加上头,序号,序号反码,和校验之后,放进一个2维数组里面(在传输前已经做好拆分文件和打包,不会在传输过程中做这些动作).启动传输后,先传第一个数据包过去,等收到应答后再传第二个包,如此一直到传完最后一个包.文件是可以顺利传输过去,就是速度是问题,一个70多K的包超级终端10秒左右就能传完,我做的程序却需要30秒,不知道问题出在那里,望高手指教...是不是程序本来的设计就有问题?

解决方案 »

  1.   

    协议是基本上都理解了,经过对硬件的测试得知发过去的数据包都是正确的
    因为XModem需要等待接收方的数据包正确确认符,所以只能是同步的发送方式
    波特率是打开串口是已经设定好了,难道是传输过程中变了??
      

  2.   

    按理说串口不具备协调通信速度的能力。70KB 加上起始位和停止位 大约:70*1024*10 ≈ 716800 bits716800 bits / 115200ps ≈ 7s按照128B分包, 70KB 分为 8*70个包,每个包要有应答,每个应答猜测为2~4Byte,
    每次应答考虑到XModem判断延时,win32消息延时,我取 应答+延时为 8Byte时间70KB + 8*70*8B ≈ 71KB 那么可以估计出 停等应答时间约为 1s最快可以到:8~9s传输完成从时间上看,你的肯定有问题,从你说的我还是判断不出来