2014-09-13 25 views
-1

我有一個char buffer[200];,其含量爲(Serial.println(buffer)的輸出):如何過濾我的焦炭的一部分

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 

---------------------- 

我失去了第一個 '2'。
應刪除換行符和'b'和空格。

+0

您無法調整自動本機陣列的大小。 – WhozCraig 2014-09-13 20:13:10

+0

在你想要開始的時候,你是否認爲不能讀*到*'fix',並且一旦你到達最後就停止放置字符? – 2014-09-13 20:25:56

+0

我找到了一個解決方案,但我不滿意,你推薦我什麼? Tks – pierrot10 2014-09-13 20:43:48

回答

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"; 
    } 
} 

「2」不重要,不顯示。 你會如何做得更好?