串口接收到字符串比如a[11]={'1','2','.','1','2','1','2','1','2','1'};用longii=atof(a);longii=12.1212121可以实现吗?能保证精度吗?我在下面的代码中测试没法成功。。
while(1)
{
u16 i=0,j=0,z=0,k;
u16 GPS_length=0;
char longitude[15]={NULL};
char deminsion[15]={NULL};
char temp;
unsigned long t,longi=0,demin=0;
double longii=0.0000000,deminn=0.0000000;
if(UART3_ARECV_flag == 1)
{
if(USART_RX_BUF[1] == 'G')
{
GPS_length=strlen((char *)USART_RX_BUF);
for(i=0;i<GPS_length-1;i++)
{
temp = USART_RX_BUF;
if (temp == ',')
{
j++;
}
if(j == 9 & temp != ',')
{
strcat(longitude,&temp);
if(temp != '.')
{
t=Mult10(8-z);
k=(int)temp-48;
longi=longi+k*t;
z++;
}
}
if(j == 10 & temp != ',')
{
longii=atof(longitude);
strcat(deminsion,&temp);
}
if(j == 13)
{
LCD_ShowString(0,100,200,16,16,longitude);
POINT_COLOR=BLUE;//éèÖÃ×ÖìåÎaà¶é«
memset(longitude,NULL,sizeof(longitude));
memset(deminsion,NULL,sizeof(deminsion));
}
}
}
delay_ms(2);
UART3_ARECV_flag = 0;
j = 0;
z = 0;
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>