要把GPS数据用485送给有人的4G模块
把485的例程和GPS的例程合并了下
给这个定义时候不太懂这个u8还是什么还有[]里面的
u8 rs485buf[5];
然后在这循环下加入了485输出
Gps_Msg_Show();
ap=gpsx.longitude;//经度
rs485buf[0]=ap;
RS485_Send_Data(rs485buf,10);
输出就是3F0A201D02083F0A203F0C203F0C3F0A201D02083F0A203F0C203F0C,很不解
或者可以用串口一 直接接上4G芯片的输入输出引脚实现输入输出吗
下面是主函数
[mw_shl_code=applescript,true]int main(void)
{
u16 i,rxlen;
u16 lenx;
u8 key=0XFF;
u8 upload=0;
u8 rs485buf[10];
u8 ap;
delay_init(); //延时函数初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
uart_init(115200); //串口初始化为115200
usmart_dev.init(72); //初始化USMART
LED_Init(); //初始化与LED连接的硬件接口
KEY_Init(); //初始化按键
LCD_Init(); //初始化LCD
usart3_init(38400); //初始化串口3
RS485_Init(115200);
POINT_COLOR=RED;
if(SkyTra_Cfg_Rate(5)!=0) //设置定位信息更新速度为5Hz,顺便判断GPS模块是否在位.
{
LCD_ShowString(30,120,200,16,16,"SkyTraF8-BD Setting...");
do
{
usart3_init(9600); //初始化串口3波特率为9600
SkyTra_Cfg_Prt(3); //重新设置模块的波特率为38400
usart3_init(38400); //初始化串口3波特率为38400
key=SkyTra_Cfg_Tp(100000); //脉冲宽度为100ms
}while(SkyTra_Cfg_Rate(5)!=0&&key!=0);//配置SkyTraF8-BD的更新速率为5Hz
LCD_ShowString(30,120,200,16,16,"SkyTraF8-BD Set Done!!");
delay_ms(500);
LCD_Fill(30,120,30+200,120+16,WHITE);//清除显示
}
while(1)
{
delay_ms(1);
if(USART3_RX_STA&0X8000) //接收到一次数据了
{
rxlen=USART3_RX_STA&0X7FFF; //得到数据长度
for(i=0;i<rxlen;i++)USART1_TX_BUF=USART3_RX_BUF;
USART3_RX_STA=0; //启动下一次接收
USART1_TX_BUF=0; //自动添加结束符
GPS_Analysis(&gpsx,(u8*)USART1_TX_BUF);//分析字符串
Gps_Msg_Show(); //显示信息
ap=gpsx.longitude;//经度
rs485buf[0]=ap;
RS485_Send_Data(rs485buf,10);
if(upload)printf("
%s
",USART1_TX_BUF);//发送接收到的数据到串口1
}
key=KEY_Scan(0);
if(key==KEY0_PRES)
{
upload=!upload;
POINT_COLOR=RED;
if(upload)LCD_ShowString(30,100,200,16,16,"NMEA Data Upload:ON ");
else LCD_ShowString(30,100,200,16,16,"NMEA Data Upload:OFF");
}
if((lenx%500)==0)
LED0=!LED0;
lenx++;
}
}[/mw_shl_code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>