我有一个char buffer[200];
其内容是(Serial.println(buffer)
&#39}的输出:
AT+CGPSINF=2
2,195941,4613.161699,N,608.476854,E,1,9,1.398636,435.450073,M,48.200287,M,,0000
OK
我想在char fix[]
只有这个
2,195941,4613.161699,N,608.476854,E,1,9,1.398636,435.450073,M,48.200287,M,,0000
我花了很多时间来解决这段代码,但没有成功
static int gps_read () {
read_AT_string("AT+CGPSINF=2",3000);
Serial.println(F("------- Show buffer------"));
Serial.println(buffer);
Serial.println(F("-------------------------\n"));
char fix[BUFFERSIZE];
int z = 0;
int y = 0;
int w = 0;
for(y=0; y < BUFFERSIZE; y++)
{
if(buffer[y]==',') z++;
if(z > 0){
if(buffer[y] == '\n') break;
fix[w] = buffer[y];
w++;
}
//if(y==num)//if the command is right, run return
// y=strlen(buffer)+1;
}
Serial.println(F("------- Show Fix------"));
Serial.println(fix);
Serial.println(F("----------------------"));
如何使用如下所示的行填充char fix[]
并调整其大小:
2,195941,4613.161699,N,608.476854,E,1,9,1.398636,435.450073,M 48.200287,M,0000
在上面的代码中,它打印出来:
------- Show Fix------
,202653,4613.164908,N,608.479232,E,1,9,1.183249,427.253052,M,48.200226,M,,0000
b
----------------------
我先失去了&#39; 2&#39; 新线和&#39; b&#39;和空间应该被删除。
答案 0 :(得分:0)
我这样解决,但我不满意。
char* gps_read (void) {
if(strstr(read_AT_string("AT+CGPSINF=2",3000),"OK") != NULL)
{
Serial.println(F("------- Show buffer------"));
Serial.println(buffer);
Serial.println(F("-------------------------\n"));
char fix[BUFFERSIZE];
int z = 0;
int y = 0;
int w = 0;
for(y=0; y < BUFFERSIZE; y++)
{
if(buffer[y]==',') z++;
if(z > 0){
if(buffer[y] == '\n'){
fix[w-1]='\0';
break;
}
fix[w] = buffer[y+1];
w++;
}
}
Serial.println(F("------- Show Fix------"));
Serial.println(fix);
Serial.println(F("----------------------"));
return fix;
}
else
{
return "Error : no fix";
}
}
&#39; 2&#39;并不重要。没有显示。 你会怎样做得更好?