开始程序从main函数里面执行,进入配置硬件GPIO端口,串口。之后就不断的执行while()循环,打开相应的引脚,扫描整个板子,关闭引脚。发送帧号(2字节),发送效验位(1字节),发送信息位(4字节,s_x 1字节、e_x 1字节、s_y 2字节),最后发送停止位(1字节)
1、发送帧号(2字节):由于用两个字节来表示,第一个字节表示高位,第二个字节表示低位,所以当大于等于256时(x= scandtime/256>=1),x表高位,小于256时(y=scandtime%256),y表低位。
2、发送效验位:(1字节)通过cal_crc()方法。
3、发送信息位:形参(采用传递地址的方式)。通过循环(每次循环后指针都后移一位,指向下一个地址)。有多少连续的按钮数据位影响着发送的次数(循环次数/发送次数:senddatacounter*sizeof(DataTypeDef)的大小)。所以发送信息位所占的字节和循环次数一样。
4、发送停止位(1字节):有信息位(按钮有按下)的时候发送FF(senddatacounter!=0), 反之则发送5F。
注意:
1、senddatacounter*sizeof(DataTypeDef) 表示发送数据总的所占空间的字节数。
2、信息位的采集:注意(整个板子分为5大块,每一大块里面有4小快PCB板(一个20块PCB))
在扫描整个板子(5大块)的时候,它是按照从左到右,从上到下。以小快(PCB)为单位,20块PCB板同时进行的。每扫描一行就处理一行,
一行数据的处理(一行64位): 按钮是连续的为一个信息位,直到循环完这行数据为止。
2015.3.8记