[AVR单片机] 单片机串行通信接收多个VB发送的数据

[复制链接]
1419|6
 楼主| paco_cai 发表于 2014-10-28 16:58 | 显示全部楼层 |阅读模式

如图所示,电机转速PID控制系统。设定转速、比例积分微分系数等四个都是要设定后传送到单片机中的。请问,传送设定转速这个我已经实现,当我要传送不同的四种数据时应该怎么操作?例如ATMEGA48中,如下代码:
if(UCSR0A & (1<<RXC0))
{
data=uart_receive0();
}   
即能接收传送过来的数据,但当我需要传送多个数据时,程序怎么知道我从VB发过来的是设定转速还是PID参数呢?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
joyme 发表于 2014-10-28 17:18 | 显示全部楼层
自己设定一个协议,用一个字节代表数据类型,后面跟着的数据做参数就好
 楼主| paco_cai 发表于 2014-10-28 18:16 | 显示全部楼层
joyme 发表于 2014-10-28 17:18
自己设定一个协议,用一个字节代表数据类型,后面跟着的数据做参数就好

不是很懂??
kingtekharlin 发表于 2014-10-28 23:05 | 显示全部楼层
自己定义通信协议啊!

ATMEL 代理 QQ:1085487223
yklstudent 发表于 2014-10-31 21:28 | 显示全部楼层
比如
AA 55 03 0A 00 01 00 02 00 03 00 04 00 05 checksum
AA 55为帧头
03为功能码
0A为数据长度
00 01 00 02 00 03 00 04 00 05为数据
checksum为校验码
具体可以自己发挥
airwill 发表于 2014-11-3 16:54 | 显示全部楼层
楼上的方案虽然显得烦了一点,但完全可行。
象楼主的这个应用,协议是可以定得更简单一些。
可以只定义一个包(直接包含四个数据),不用去搞功能码,也不要数据长度,帧头也可以简化(最简的方式是空闲一段时间)校验码倒是建议保留。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

27

主题

62

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部