dyt2 发表于 2009-12-4 16:33

vc与单片机通信

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协议的,也没说数据量很大,容易丢失数据
主要是软件结构和软件设计思想的问题

winloop 发表于 2009-12-9 09:25

点对点的简单通信还用参考TCP IP,太夸张了吧,还是基本功没练好

wph21ic 发表于 2010-3-10 10:37

领教了,发现自己差的挺远,:'(

sptek 发表于 2010-3-11 23:49

使用双缓冲的方式来处理数据。不知道你有没有写错,如果真是用的USB,必须要有DMA才能保证。
页: [1]
查看完整版本: vc与单片机通信