控制命令
一、说明
GUI Builder支持串口和蓝牙两种控制方式。由于不同的客户需求不同,可能会对此部分做一些修改。
二、控制协议
目前存在两套协议格式以及处理流程,一套是SiFli定义的内部通信格式,一套是预留给客户的自定义格式。 在此我们以自定义格式的协议进行说明。
1.协议格式
字段名称 |
header |
data_len |
cmd |
param |
crc |
tail |
---|---|---|---|---|---|---|
字节长度 |
2 |
1 |
dynamic |
dynamic |
2 |
2 |
默认值 |
55 AA |
AA 55 |
||||
含义 |
帧头 |
数据段长度 |
命令码 |
参数 |
数据段校验 |
帧尾 |
数据段内容:\
cmd:命令码,此长度为动态长度。与GUI工具中设置的命令码进行匹配。\
param:命令参数,当此参数的内容为空时,会使用工具中配置的参数。比如工具命令要设置运动目标为600,当此参数值为400,则发送此命令以后会设置运动目标为400。
2.代码说明
配置文件:《app_tool_uart_custom.c》
#define SFAT_UART_FRAME_HEADER_LEN 2
#define SFAT_UART_FRAME_DATA_LEN 1
#define SFAT_UART_FRAME_CRC_LEN 2
#define SFAT_UART_FRAME_TAIL_LEN 2
#define SFAT_UART_FRAME_HEADER 0x55AA
#define SFAT_UART_FRAME_TAIL 0xAA55
固件当中配置的宏定义需要保持和协议中的长度相同。
#define SFAT_UART_FRAME_CRC_CHECK(data, total_count, crc) (combine_buffer_hex(&data[total_count - SFAT_UART_FRAME_CRC_LEN - SFAT_UART_FRAME_TAIL_LEN], SFAT_UART_FRAME_CRC_LEN) == crc)
/*CRC校验无效*/
if (false == (SFAT_UART_FRAME_CRC_CHECK(data, total_count, sfat_crc16(&data[SFAT_UART_FRAME_HEADER_LEN + SFAT_UART_FRAME_DATA_LEN], data_len))))
{
return false;
}
由于不同客户的CRC校验方式不同,长度也可能不同,所以在此宏定义了一个CRC的校验。用户请根据需求修改代码中的校验计算方式。
如果保持定义的协议格式与示例的协议格式相同,可以根据此格式自行修改任意字段的长度。需要修改的代码部分仅仅上诉内容中的宏定义字段长度与CRC校验方式。
三、串口配置
1.代码说明
配置文件:《app_tool_uart.h》
#define SFAT_UART_NAME "uart2" //串口驱动的名称
#define SFAT_UART_BAUD_RATE 1000000 //串口波特率
#define SFAT_UART_DATA_MAX_LEN 1024 //串口接收包最大长度
代码中将串口名配置到uart2,所以需要到HCPU的menuconfig中去使能uart2。
2.使用方式
用户需要根据自己的硬件设计,在工程的pinmux中添加串口引脚的配置。将配置的串口引脚与外部串口设备进行连接,设备在接收到串口消息以后,会按照协议规则进行解析并应用。
HAL_PIN_Set(PAD_PA29, USART2_RXD, PIN_PULLUP, 1); //将PA29配置为串口RX
HAL_PIN_Set(PAD_PA28, USART2_TXD, PIN_PULLUP, 1); //将PA28配置为串口TX
四、蓝牙配置
1.代码说明
使用默认配置,有需改需求请联系管理员。
2.使用方式
打开sifli demo app,并连接目标设备的蓝牙。 点击‘PUSH APP MSG’进入消息推送页面。
点击‘SELECT CMDS’进入文件管理页面,选中文件《BleCommands.json》,这个文件中配置了控制命令的内容,app会根据json文件自动生成发送命令的按键。用户可以按照此格式自行修改控件命令。
{
"title": "App Commands",
"list": [
{
"name": "豆粉+",
"command": "55AA08534245414E4144440325AA55"
},
{
"name": "豆粉-",
"command": "55AA08534245414E5355427EA2AA55"
},
{
"name": "奶泡+",
"command": "55AA08534D494C4B4144441F10AA55"
},
]
}