Microchipin koodinpurkua

Yritän selvittää yhden Microchipin evo kortin toimintaa, tekeillä oma softa Delphillä.
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en546844
Saan ohjelmallani yhteyden korttiin ja dataa ulos.
Mutta data on “ei ymmärrettävässä” muodossa tyyliin:
00 01 01 00 00 00 25 88 C1 C8 C3 29 00 00 C1 06 81 82 41 E4 00 00 41 A0 BF 3F 00
C8 C3 … alkaen on lämpötilat (3 kpl)
41 A0 BF 3F on viimeinen jossa 41 on miinusmerkki, jos plussaa niin on 42.

Ilmeisesti tässä on “syyllinen”. Miten saan purettua datan taas ymmärrettävään muotoon?
double ConvertByteToDouble()
{

 TempStore = ReceivedDataBuffer[1];
_asm 
	MOVF	TempStore , 0 , 1
	MOVWF 	TempStoreDouble + 3 , 1
_endasm

 TempStore = ReceivedDataBuffer[2];
_asm 
	MOVF	TempStore , 0 , 1
	MOVWF 	TempStoreDouble + 2, 1
_endasm

 TempStore = ReceivedDataBuffer[3];
_asm 
	MOVF	TempStore , 0 , 1
	MOVWF 	TempStoreDouble + 1, 1
_endasm

 TempStore = ReceivedDataBuffer[4];
_asm 
	MOVF	TempStore , 0 , 1
	MOVWF 	TempStoreDouble , 1
_endasm

return TempStoreDouble;

}

ReadThermocoples funktion perusteella lämpötilojen pitäisi olla USB:n yli lähetettävän taulukon alkioissa 14 - 17, 18 - 21 ja 22 - 25. Ne kopioidaan taulukkoon LoadOutBuffer funktion avulla, samalla kääntäen parametrina annettavan liukulukumuuttujan tavujärjestystä (assembly pätkä tekee sen). Jos haluat poimia vastaanottotaulukosta lämpötilat omiin muuttujiin, niin se onnistuu esim. seuraavasti:

float toFloat(unsigned char *data)
{
	float f;
	unsigned char *fp = (unsigned char *)&f;

	*fp++ = *(data+3);
	*fp++ = *(data+2);
	*fp++ = *(data+1);
	*fp = *data;

	return f;
}

float LinearizedTCdata = toFloat(usbRxData+14);
float coldJunctionTemp = toFloat(usbRxData+18);
float Temperature = toFloat(usbRxData+22);

jossa usbRxData on USB:n yli vastaanotettu 64 tavuinen taulukko.
Sinun esimerkkidatalla muuttujien arvoiksi tulee:
LinearizedTCdata: -8.4066181
coldJunctionTemp: 28.5
Temperature: 20.093382

En ymmärrä miksi tavujärjestys käännetään. Jos näin ei tehtäisi, niin sekä lähetys- että vastaanottopäässä voitaisiin yksinkertaisesti käyttää memcpy funktiota.

KIITOS SELVITYKSESTÄ!
En itse oiken tuota C:tä hallitse, mutta sulattelen tuota niin enköhän
ymmärrä mite teen tuon saman Delphillä.

Äääh.
Pyörittelin laskimella noita lukuja, mutta en todellakaan ymmärrä systeemiä.
Et Andrei viitsis vääntää rautalangasta jotta ikämieskin ymmärtäis?!?!

25.3
Sain toiselta foorumilta apua, Delphi koodi toimii, mutta en vieläkään ymmäärrä mitään.
No, mennään näillä etiäpäin.
Mutta jos Andrei tai joku muu viitsii vielä valottaa systeemiä, niin kiva, olishan se
yleissivistävää ymmärtää tämäkin asia…