2019-10-16 01:30发布
xucao514 发表于 2016-12-15 16:05 你先别搞那么复杂, 先发个控制指令过去, 等那边返回一个字符串到串口就行了。 证明你这个流程没问题。 再 ...
最多设置5个标签!
我现在就是弄了一个USART1的发送和串口中断接收的程序,假如我调试助手发送1,就回复1,这个没有问题。
字节号 1 2 3 4 5 6 \ n-4 n-3 n-2 n-1 n
值(HEX) 7B 7C XX XX XX XX XX XX XX XX 7C 7D
意义 头 长度 命令 数据 校验 尾
一、 通信波特率:9600,8位数据位,一个停止位,无奇偶较验,
二、 命令前两字节为命令头,分别为ASSII码:{、|;
三、 所有字节为十六进制数,每字节的最大值为 0x63;
四、 命令第3、4字节为命令长度,其值等于 命令码 + 数据码;
设长度命令长度为: L,BYTE3表示第三字节,BYTE4表示第四字节,……,那么:
L = BYTE3 * 100 + BYTE4=BYTE5 + BYTE6 + BYTE(….) + BYTE(n);
五、 第5字节为命令码;
六、 第6 ~ n-4 字节为数据;
七、 第n-3、n-2字节为校验码,由命令码与数据字节按异或运算而来;
设BYRE5~ BYTE(n-4) 分别为第 5 ~ n-4 字节,那么:
BYTE(n-3) * 100 + BYTE(n-2) =BYTE5 XOR BYTE6 XOR BYTE(….) XOR BYTE(n-4);
八、 第n-1、n字节为命令尾,分别为ASSII码:|、};
{
switch( *(CL+4) )
{
case 0x0A:
break;
case 0x0B:
break;
case 0x0C:
break;
case 0x0D:
break;
default:
return 0;
}
return 1;
}
一周热门 更多>