void sendFunction(byte *pBuffer, byte lenght)
Inu pořídíme si takový buffer..
byte sendBuffer[30];
naplníme..
byte lenght=0; byte temp1 = 111; byte temp2 = 222; sendBuffer[lenght++] = temp1; sendBuffer[lenght++] = temp2;
a vyšleme..
sendFunction(sendBuffer, lenght);
Nic složitého, já vím.
Jak si ale nejlépe poradit s naplněním bufferu, pokud proměnné temp1 a temp2 budou 16-ti nebo 32-ti bitové proměnné ?
První co asi člověka napadne, je něco jako..
byte lenght=0; word temp1=111; dword temp2=222; sendBuffer[lenght++] = (byte)(temp1&0xFF); sendBuffer[lenght++] = (byte)(temp1>>8); sendBuffer[lenght++] = (byte)(temp2&0xFF); sendBuffer[lenght++] = (byte)(temp2>>8); sendFunction(sendBuffer, lenght);
Maskovat a rozdělovat vícebajtové proměnné jen pro to, abych je mohl přidat do bufferu, kde se zase spojí.. to se mi moc nelíbilo a tak nakonec vznikl následující zápis..
*(word *) (sendBuffer+lenght) = temp1; lenght += sizeof(word); *(dword *) (sendBuffer+lenght) = temp2; lenght += sizeof(dword); sendFunction(sendBuffer, lenght);
Krásně tu vyniká elegance pointerů, která, podle mne, přináší i o něco rychlejší řešení.
Žádné komentáře:
Okomentovat