打印

vc与单片机通信

[复制链接]
2168|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dyt2|  楼主 | 2009-12-4 16:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
VC通过USB与单片机通信,单片机对于上位机发送的数据进行判定,如果是要的字符则进行相应的处理,这个是动态的。波特率是9600,发送的是字符,上位机每50ms对单片机发送一次数据。
     而现在的问题是:某个时刻需要发送的数据量太大,导致数据丢失,该如何处理?(我曾测试过,上位机一次最多发八位时能正常被下位机识别)

相关帖子

沙发
mohanwei| | 2009-12-4 16:55 | 只看该作者
定义一个完整的帧:帧头,addr,datalen,data[],CRC16,帧尾。
单片机收到完整的帧,再进行校验、处理。

使用特权

评论回复
板凳
chunyang| | 2009-12-4 17:56 | 只看该作者
丢失数据是因为你的下位机程序结构不合理导致处理能力太差所致,下位机要用中断模式,中断服务程序仅做数据转移存储和设定标志,主程序根据标志进行后续处理。通讯的过程要保证可靠性需引入适当的协议,Modbus的思想可以借鉴。

使用特权

评论回复
地板
因特网用户| | 2009-12-4 18:09 | 只看该作者
数据量太大是什么意思?一次发送多少?
参考tcp/IP的思想吧,上层应用的数据发送要分帧发送,数据链路层把上层来的数据打包成层,物理层也就是uart发送只管传送字节就可以了
见过在用串口线来跑http协议的,也没说数据量很大,容易丢失数据
主要是软件结构和软件设计思想的问题

使用特权

评论回复
5
winloop| | 2009-12-9 09:25 | 只看该作者
点对点的简单通信还用参考TCP IP,太夸张了吧,还是基本功没练好

使用特权

评论回复
6
wph21ic| | 2010-3-10 10:37 | 只看该作者
领教了,发现自己差的挺远,:'(

使用特权

评论回复
7
sptek| | 2010-3-11 23:49 | 只看该作者
使用双缓冲的方式来处理数据。不知道你有没有写错,如果真是用的USB,必须要有DMA才能保证。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

1

粉丝