我想做一个与单片机通信的驱动 用脚本驱动开发工具一直没有做出来 也没有头绪
下面是我的通信方式 请高手帮忙
通信方式
一、 通信格式要求:
通信方式 RS232 波特率 9600 和校验 (一位)
二、 数据包格式:
数据为16进制(两字节的数据 先传送高八位,后传送低八位)
上位机 到 下位机
传输数据包格式
名称 数据包头 指令标志 工作段段号 功率值 工作时间(分) 控制指令 校验位
EBAA
字节数 2 1 1 2 2 1
数据位 0 1 2 3 4 5 6 7 8 9
1、 初始值数据包 指令标志:F0(分为8个工作段)
每次只发送一个工作段的初始值数据包。如果有第二个工作段则等第一个工作段传送结束后,得到下位机的第一个工作段处理完毕的确认信息后,才发送第二个工作段初始值数据包。多工作段,依次类推。
工作段包括
1) 升温功率值(两字节16位 范围 100~~1000 )
2) 工作定时(两字节16位 范围 0~~9999分)
2、控制指令。指令标志:F1 数据包格式第8位。
控制指令真值表,
指令 停止 暂停 运行 电机I -正 电机I -反 电机II -正
值 C0 C1 C2 C3 C4 C5
CF查询命令下去,下位机不执行任何动作,只返回相应数据值。
名称 指令标志F1 指令
字节数 1 1
数据位 2 8
3、当前工作段时间更改,指令标志:F2
数据包格式的第6 7位
名称 指令标志F2 时间(分)
字节数 1 2
数据位 2 6 7
三条的指令在上位机传送到下位机时,使用相同的数据位数,不同的数据包,指令标志不同。每次传送9个字节的数据下去。三条数据指令的有效位置如下。0x0x表示有效位,进行和校验。不属于该数据包的其他位置的数据使用0xff填充,并且不计入和校验。
校验位的判断方法:
除去包头EBAA,对有效的数据位,求和,舍去高位,保留最后一位数为校验位。
各个指令数据格式包的红色波浪线为有效位置。
第一条指令为初始值数据包指令举例
名称 数据包头 指令标志 工作段段号 升温功率值 工作时间 (分) 指令 校验位
EBAA
字节数 2 1 1 2 2 1 &nbs
楼主最近还看过