接收缓冲数组
uint8 idata Rece_Buf0[9]; //接收缓冲数组
Rece_Buf0[9] = [0,1,2,3,4,5,6,7,8]
Rece_Buf0[0] = 0x43 是帧头的信息,必须等于0x43
Rece_Buf0[1] = 0x14 是下位机执行的命令,通过switch,case语句来判断Rece_Buf0[1]的值,对应值在命令表里面。关键语句:
1
2
3
switch(Rece_Buf0[1])
case 0x14:
Work_Flag=1; //采集标志位
Rece_Buf0[2:7] = [8,2,2,1,1] 的值先给他设定为返回全部通道的数值
Rece_Buf0[2,3,4,5,6]里面放的是下行数据,5个字节。
当 Rece_Buf0[2]==1||Rece_Buf0[2]==2||Rece_Buf0[2]==3||Rece_Buf0[2]==4 会返回对应通道的电信号。
Rece_Buf0[2]==5,Rece_Buf0[2]==6,Rece_Buf0[2]==7, Rece_Buf0[2]==8 分别返回5 6 7 8 路电位
Rece_Buf0[3]==1 Rece_Buf0[3]==2 分别返回 1 2 路光量子
Rece_Buf0[4]==1 Rece_Buf0[4]==2 返回Rt
Rece_Buf0[5]==1 返回 t
Rece_Buf0[6]==1 返回 H
根据接受来的Rece_Buf0[2,3,4,5,6]值,来执行对应的发送数据请求。根据下面的函数可以看出来返回的数值。
1 | if(Work_Flag==1) |
Rece_Buf0[7] = XOR 数组第1位到第6位,6个数值的异或和
Rece_Buf0[8] = 0x44 帧尾
然后创建Send_Buf0[36]数组进行数据发送
串口助手返回的值
注意:在计算6个数的XOR的时候,原始数据是16进制的,要转换为10进制在计算。
input: 43,14,8,2,2,1,1,1c,44
output:
[1] : 41 14 80 FF 80 FF 80 FF 80 FF 80 FF 80 FF 80 FF 80 FF 00 00 00 00 00 FF 00 FF 00 FF 00 FF 14 42
[2] : 41 14 80 FF 80 FF 80 FF 80 FF 80 FF 80 FF 80 FF 80 FF 04 30 04 30 04 30 04 30 04 30 04 30 14 42
tip:
我重启串口助手 再点击发送数据
返回 给我的数据不一样。
41 14 80 FF 80 FF 80 FF 80 FF 80 FF 80 FF 80 FF 80 FF 05 99 05 99 05 99 05 99 05 99 05 99 14 42
41 14 80 FF 80 FF 80 FF 80 FF 80 FF 80 FF 80 FF 80 FF 05 40 05 40 05 40 05 40 05 40 05 40 14 42
航空插头
5芯航空插头 是不是需要给前置放大传感器 供电??
之前测量前置放大器的时候,记得是有电压的。。。
原来系统里前置放大器的电压是拿来的?希望不是班子给供电。。。