странный адрес у вас какой-то... там адрес должно быть число int64
Volgol_555 писал(а):if (RomCode[0][0]==C8C520) {}
хоть это и логически неправильно, но чтоб оно хоть компилировалось надо компилятору указать что это шестрадцатиричное число.
Volgol_555 писал(а): МК нашел 2 датчика с адресами RomCode[1][0]
У вас двумерный массив. То есть адрес хранится в одном из измерений )
Пример:
Код: Выделить всё
C9 C0 EE FF DA A7 E0 09 //адрес 1 датчика
C1 D2 C3 FE 7D C1 00 02 // адрес 2 датчика
00 00 00 00 00 00 00 00 // адрес 3 датчика
00 00 00 00 00 00 00 00 // адрес 4 датчика
00 00 00 00 00 00 00 00 ...
00 00 00 00 00 00 00 00 ...
00 00 00 00 00 00 00 00 ...
00 00 00 00 00 00 00 00 // адрес n датчика
Вы же обращаетесь к RomCode[0][0] - т.е. к БАЙТУ, в нашем примере это С9. А вы пытаетесь long сравнить с char.
Все еще не пойму почему у вас адрес 4 байта вместо 8, может вы используете только младшие 4 байта, наверное это допустимо. Но я приведу пример все же для 8 байт. Где AdrLow это младшие 4 байта, а AdrHi старшие 4.
Код: Выделить всё
unsigned char CompareAddr (unsigned long AdrLo, unsigned long AdrHi, char SensorIdx)
{
unsigned long * pHi = (unsigned long *)&RomCode[SensorIdx][0];
unsigned long * pLo = (unsigned long *)&RomCode[SensorIdx][4];
if (*pLo == AdrLo)
if (*pHi == AdrHi)
return true;
return false;
}
Думаю на 4 байта прееделаете если что...