2015-12-23 27 views
0

我在自己設計的設計中使用了PIC32MX,並且所有工作都完美無缺。從文件的某個部分讀取PIC32MX

現在我想實現它基本上是從文件中按順序讀取,直到我找到人物的某一幀的特徵,所以我做:

while((readedBytes = FSfread((void *)&c,sizeof(char),1,ephpubData->filetouart) != 0) && G_RUNNING && ephpubData->readedBytes < 2520){ 
    privData->txBuffer[privData->txBufferPos++] = c; 
    ephpubData->readedBytes = ephpubData->readedBytes + readedBytes; 
    if (privData->txBufferPos == TX_BUFFER_SIZE){ 
     if (verifyDate (task) == 1){ 
     *gpsState = GPS_STATE_VERIFY; 
     ephpubData->count++; 
     break; 
     } 
     FSfseek(ephpubData->filetouart , ephpubData->readedBytes , SEEK_SET); 
     privData->txBufferPos = 0; 
    } 
} 

第一次時,發現框架(使用verifyDate函數),一切都很好,並打破句子。 當在while循環中讀取第二次時(在關閉/重新打開文件並在代碼中執行其他操作之後),它會再次返回到第一個位置。 所以我想保存找到的最新位置,直到斷句。我已經嘗試在每次迭代中使用查找功能

while((readedBytes = FSfread((void *)&c,sizeof(char),1,ephpubData->filetouart->seek) != 0) && G_RUNNING && ephpubData->readedBytes < 2520) 

但它給了我一個錯誤。

+0

FSfseek(ephpubData->filetouart , 0 , SEEK_SET); 

; ch = getc(p-> filepointer); ... if(ch == EOF)break;'可能會更簡單。另外,您應該將'G_RUNNING && ephpubData-> readedBytes <2520)'移到條件的開頭,以避免在實際上不需要時讀取某個字符。 (「短路」) – wildplasser

+0

它是否保存文件中以前的有效位置? – scuba

+0

getc()和fgetc()按順序讀取一個字符(如果有),所以下一次調用將獲得下一個字符:不需要查找。 – wildplasser

回答

0

對不起人們,但我發現了錯誤。

某處在代碼中,我在做:如果你打算只讀一個字符,`INT CH這臺讀取位置爲0