论坛元老
 
- 积分
- 3571
- 金钱
- 3571
- 注册时间
- 2014-12-2
- 在线时间
- 365 小时
|
发表于 2016-7-29 20:47:12
|
显示全部楼层
有了协议应该能写出下位机代码,一个一个地试也能试出来啊
然而上位机本身带有示例代码(这就连协议都不用看了):
这是我自己改写的:
1、给上位机发三轴姿态角和高度值
[mw_shl_code=c,true]
void ANO_DT_Send_Status(double *arg, int32_t alt)
{
uint32_t i;
int16_t _temp;
uint32_t _cnt = 0;
uint8_t data_to_send[20];
data_to_send[_cnt++] = 0xAA;
data_to_send[_cnt++] = 0xAA;
data_to_send[_cnt++] = 0x01;
data_to_send[_cnt++] = 0;
for (i = 0; i < 3; i++)
{
_temp = (int16_t)(arg*100);
data_to_send[_cnt++]=BYTE1(_temp);
data_to_send[_cnt++]=BYTE0(_temp);
}
data_to_send[_cnt++] = BYTE3(alt);
data_to_send[_cnt++] = BYTE2(alt);
data_to_send[_cnt++] = BYTE1(alt);
data_to_send[_cnt++] = BYTE0(alt);
data_to_send[_cnt++] = 0x01;
data_to_send[_cnt++] = 0x01;
data_to_send[3] = _cnt - 4;
data_to_send[_cnt] = 0;
for(i = 0; i < _cnt; i++)
{
data_to_send[_cnt] += data_to_send;
}
UART_SendBytes(data_to_send, _cnt+1);
}[/mw_shl_code]
2、给上位机发三轴加速度和三轴陀螺仪
[mw_shl_code=c,true]
void ANO_DT_Send_Senser(double *accel, double *gyro)
{
uint32_t i;
int16_t _temp;
uint8_t _cnt = 0;
uint8_t data_to_send[24];
data_to_send[_cnt++] = 0xAA;
data_to_send[_cnt++] = 0xAA;
data_to_send[_cnt++] = 0x02;
data_to_send[_cnt++] = 0;
for (i = 0; i < 3; i++)
{
_temp = (int16_t)accel;
data_to_send[_cnt++] = BYTE1(_temp);
data_to_send[_cnt++] = BYTE0(_temp);
}
for (i = 0; i < 3; i++)
{
_temp = (int16_t)(gyro/100);
data_to_send[_cnt++] = BYTE1(_temp);
data_to_send[_cnt++] = BYTE0(_temp);
}
for (i = 0; i < 3; i++)
{
_temp = 0;
data_to_send[_cnt++] = BYTE1(_temp);
data_to_send[_cnt++] = BYTE0(_temp);
}
data_to_send[3] = _cnt - 4;
data_to_send[_cnt] = 0;
for(i = 0; i < _cnt; i++)
{
data_to_send[_cnt] += data_to_send;
}
UART_SendBytes(data_to_send, _cnt+1);
}[/mw_shl_code] |
|