Witam.
Napisałem 2 funkcję do wysyłania i odbierania zmiennych typu float poprzez Serial port (arduino) do komunikacji z moim skryptem napisanym w języku autohotkey. Wszystko działa znakomicie tylko chciałem sobie poćwiczyć rzutowania oraz wskaźniki i jestem ciekaw czy można te 2 funkcję zapisać jeszcze w jakiś inny sposób.
void SerialWriteFloat(float val) {
uint8_t *wsk = (uint8_t*)&val;
Serial.write(*wsk++);
Serial.write(*wsk++);
Serial.write(*wsk++);
Serial.write(*wsk++);
}
float SerialReadFloat(){
//v1
// uint8_t ff[4];
// ff[0] = (uint8_t)Serial.read();
// ff[1] = (uint8_t)Serial.read();
// ff[2] = (uint8_t)Serial.read();
// ff[3] = (uint8_t)Serial.read();
// return *(float*)(&ff);
//v2
float ff;
uint8_t *wsk=(uint8_t*)&ff;
*wsk = (uint8_t)Serial.read(); wsk++;
*wsk = (uint8_t)Serial.read(); wsk++;
*wsk = (uint8_t)Serial.read(); wsk++;
*wsk = (uint8_t)Serial.read();
return ff;
//v3
// float ff;
// uint8_t *wsk=(uint8_t*)&ff;
// *wsk++ = (uint8_t)Serial.read();
// *wsk++ = (uint8_t)Serial.read();
// *wsk++ = (uint8_t)Serial.read();
// *wsk = (uint8_t)Serial.read();
// return ff;
//v4
// float ff;
// uint8_t *wsk=(uint8_t*)&ff;
// wsk--;
// *++wsk = (uint8_t)Serial.read();
// *++wsk = (uint8_t)Serial.read();
// *++wsk = (uint8_t)Serial.read();
// *++wsk = (uint8_t)Serial.read();
// return ff;
}