关于单片机串口通讯:上位机发送数据到下位机,单片机保存数据到24c512; 100

(是led的程序,单片机接收上位机数据用以更新显示内容)下载信息命令协议:DataHead+SaveFileCMD+FileNo+Attrib1+Attrib2+Mess... (是led的程序,单片机接收上位机数据用以更新显示内容)
下载信息命令协议:
DataHead+SaveFileCMD+FileNo+Attrib1+Attrib2+MessageSizeH+MessageSizeL +
(Dlay400ms)+…Message…+CheckSumH+CheckSumL+ETX+(Dlay150ms)
其中“Mesage”是数据部分,有很多个字节。该部分需要保存在24c512。现在的问题是 协议不变的情况,如何实现数据的保存呢? 中断内 好像不能进行24c512的读写;如果在主程序中读写的话,不能做到实时更新,而且还需要很大的缓冲区接收上位机数据;
不知道大家是怎么做的? 【有讲述这方面的书籍、资料也可以】bearclaw2012@163.com
展开
 我来答
百度网友5f81806
2013-06-20 · TA获得超过1302个赞
知道小有建树答主
回答量:335
采纳率:100%
帮助的人:304万
展开全部
看你主程序循环时间了,如果比整个数据包接收下来的时间要短的话,你可以建立两个缓冲区,对换进行接收数据。
一个数据包完成后建立一个标志,换一个缓冲接收;主程序一旦查到有标志位被置位,刚把相应缓冲区的内容写到EEPROM,再把标志清零。
程序需要两个缓冲区,一个缓冲标识位和一个接收完成标志位。

一般来说,主程序循环时间太长说明你的程序有些地方处理不好,可以把占用时间较长的函数进行分片处理。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ATF144X
2013-06-20 · TA获得超过1.2万个赞
知道大有可为答主
回答量:5344
采纳率:77%
帮助的人:4657万
展开全部
那没办法,只有查询等待了,上位机一次发送一段数据,单片机接收到后写入24c512,写完后才返回一个应答信号给上位机。而上位机只有收到这信号后才发送下一段数据。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cjj796
2013-06-20 · TA获得超过8709个赞
知道大有可为答主
回答量:1.3万
采纳率:68%
帮助的人:3463万
展开全部
如果数据量很大很多,是不是可以采用分段传输的方式
追问
上位机软件固定,我无法更改协议
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式