0
我正在使用一些C代碼,我完全停留在這個函數中。它應該比較兩個緩衝區和一些偏差。例如,如果EEPROM_buffer [1] = 80,那麼從78到82的TxBuffer值應該是正確的!C,無法比較兩個緩衝區
所以問題是它總是返回-1。我檢查了兩個緩衝區,數據是正確的,他們應該匹配,但不會。程序只運行一段時間,直到達到I = 3和返回-1 ..
我編譯與愛特梅爾工作室6.1,atmel32A4U微控制器..
int8_t CheckMatching(t_IrBuff * tx_buffer, t_IrBuff * tpool)
{
uint8_t i = 0;
uint16_t * TxBuffer = (uint16_t*) tx_buffer->data;
while((TxBuffer->state != Data_match) || (i != (SavedBuff_count))) // Data_match = 7;
{
uint16_t * EEPROM_buffer = (uint16_t*) tpool[i].data;
for(uint16_t j = 0; j < tpool[i].usedSize; j++) // tpool[i].usedSize = 67;
{
if(abs(TxBuffer[j] - EEPROM_buffer[j]) > 3)
{
i++;
continue;
}
}
i++;
TxBuffer->state = Data_match; // state value before Data_match equal 6!
}
tx_buffer->state = Buffer_empty;
if(i == (SavedBuff_count)) // SavedBuff_count = 3;
{
return -1;
}
return i;
}
'uint16_t * EEPROM_buffer'和'uint16_t * TxBuffer'抱歉,必須糾正我的輸入錯誤。謝謝 – Steen 2014-09-25 19:36:51