协议
int CMCU_07R_get(unsigned char *buf, int data_len, unsigned int *G)
{
int i;
unsigned int tmp;
for(i = 0; i <= (data_len-10); i++)
{
if(buf[i] == 0xaa)
{
tmp = (buf[(i+4)] << 16);
tmp += (buf[(i+5)] << 8);
tmp += buf[(i+6)];
*G = tmp;
}
}
return 0;
}
//重量传感器函数
//参数 G重量
//返回 0
//定义硬件接口
int CMCU_07R_deal(unsigned int *G)
{
const unsigned char read_weight[5] = {
0xa3, 0x00, 0xa2, 0xa4, 0xa5};
const unsigned char read_ad[5] = {
0xa1, 0x00, 0xa0, 0xa2, 0xa3};
static char state = 0,cnt = 0;
int ret = 0;
if(state == 0)
{
uart_0_init(); //串口透传功能初始化
uart_tx_buf.header = 0; /*?*/
uart_tx_buf.tail = 0; /*?*/
state = 1;
return 0;
}
if(state == 1)
{
//uart_cmd((unsigned char *)read_ad, 5);
uart_cmd((unsigned char *)read_weight, 5);
cnt = 0;
state = 2;
}
else
{
if(uart_rx_buf.header >= 10)
{
ret = CMCU_07R_get(uart_rx_buf.data, uart_rx_buf.header, G);
memset(uart_rx_buf.data, 0, MAX_RX_LENGTH);//清零
uart_rx_buf.header = 0;
state = 1;
}
cnt++;
if(cnt > 10)
{
state = 1;
memset(uart_rx_buf.data, 0, MAX_RX_LENGTH);//清零
uart_rx_buf.header = 0;
}
}
return ret;
}
使用方法
串口波特率设置9600
unsigned int weight = 0;
CMCU_07R_deal(&weight);