VC串口发送HEX资料(内容要一行一行的发,每发一行,必需问接收端,是否准备好,发送方收到准备好信号后,才发送一行)

VC串口发送HEX文件(内容要一行一行的发,每发一行,必需问接收端,是否准备好,发送方收到准备好信号后,才发送一行)
VC串口发送HEX文件(内容要一行一行的发,每发一行,必需问接收端,是否准备好,发送方收到准备好信号后,才发送一行,还要实现断电,断点续传)。我已做好整个文件内容的收发了。现在就差自己定协议,完成括号中的内容。亲,看你们的呢!高手在哪!
------解决方案--------------------
你上面说的内容,就是你定的协议。
------解决方案--------------------
写配置文件记录你传输的信息,在断电后读取配置文件接着发送。
至于协议你的思路已经可以了,就是细化。
------解决方案--------------------
    考虑到字节对齐方式,不用结构:
    报文头(0XAABB)+命令(0X01:起始帧;0X02:连继帧;0X03:结束帧)+长度(1个字节,是数据内容的长度)+数据内容+CRC(校验,简单点,从报文头开始累加和,1个字节);这就是一个简单的协议. 
    开始先发:0XAA 0XBB 01 0XF(15个数据) 0x01 0x02 0x03 ...0x0f 0xad(假设是计算的CRC值,从0XAA开始累加,直到0f)
    第二行及以后的倒数第二行报文:
     0XAA 0XBB 02 0XF(15个数据) 0x01 0x02 0x03 ...0x0f 0xad(假设是计算的CRC值,从0XAA开始累加,直到0f)
    最后一行报文:
     0XAA 0XBB 03 0XF(15个数据) 0x01 0x02 0x03 ...0x0f 0xad(假设是计算的CRC值,从0XAA开始累加,直到0f)
    当下位们位机收到第三个字节是03时,就认为数据传完他,这是最后一帧的数据。
     如果还觉得不可靠,可以再加一个字节的行号:
     报文头(0XAABB)+命令(0X01:起始帧;0X02:连继帧;0X03:结束帧)+行号+长度(1个字节,是数据内容的长度)+数据内容+CRC(校验,简单点,从报文头开始累加和,1个字节);


------解决方案--------------------
    应答帧:就一个字节:0X55表示接收成功;0XCC表示接收失败。
    当收到0XCC时,就再次重发上一次的数据。如果连接三次都接收失败,说明上位机有问题,终止发送。记下当前已发送的数据,等排除下位机故障后,再接着发送数据,直到发送完成
    还可以再加上文件校验报文件:
    报文头(0XAABB)+命令(0X01:起始帧;0X02:连继帧;0X03:结束帧;0X04:校验文件)+行号(固定为0)+长度(固定为0)+数据内容(无,也就是不发,直接发CRC)+CRC(校验,简单点,从报文头开始累加和,1个字节);
    这相校验报文是当所有数据都发完后发的报文,下位机收到这个报文后进行文件校验(比如还是从第一个数据开始到最后数据的累加和,这是比较简单的)然后把这个CRC值发上来,上位机和它进行对比,如果一致,就说明下位机接收的文件是完整的。否则就重新发送。
    这时应答帧再改成这样:
    应答帧:就2个字节:0X01(接收状态)+0X55表示接收成功;0X01+0XCC表示接收失败;0X02+一个字节的数据(比如0XAB)表示下位机上传文件的CRC,0XAB就是文件的CRC;



------解决方案--------------------
上面说的我都知道,都是具体到程序中我就不会了。现在我,用完while(file.ReadString(s)){},再用UpdateData,结果什么都没有。谁能帮我
------解决方案--------------------
上面的新问题解决了,现在的问题:VC中如何保持原先EDIT中的内容不被UpdateData()更新掉
------解决方案--------------------
就是在原先EDIT中的内容,再增加一些内容,UpdateData(false),会把原先的内容更新掉。回答这一问题,我这个贴子就结贴,亲加由,会给分

------解决方案--------------------
你为什么用UpdateData,是不是把读出的数据发送的同时再显示出来,要是这样,你就用一个CRichEdit这个控件来显示,定义一个CStrig str;
file.ReadString(s);
str+=s;
richedit.SetWindowText(str);
这样就显示出来了
------解决方案--------------------
我现在用m_ctrlSend.SetDlgItemText(IDC_send,strText);
结果要按2下EDIT框才有内容
之前只用UpdateData(false),按一下就行了。我想将上面改为按一下就可以的,
用m_ctrlSend.UpdateWindow();还是不能立即生效
回答完,我就结贴给分

------解决方案--------------------
我做好,谢谢了
------解决方案--------------------
我已做好,谢谢大家了
------解决方案--------------------
为啥不分享,只知道索取。