HEX po Software print
HEX po Software print
Ještě mám malý problém...
Lze pomocí SoftwareSerial.h poslat třeba 2 hexa byte?
příklad a= 0x0102 a b= 0x0004
a tedy po lince RS485 musí odejít 4byte --> 0001 0010 0000 0100
nějak to neumím
Lze pomocí SoftwareSerial.h poslat třeba 2 hexa byte?
příklad a= 0x0102 a b= 0x0004
a tedy po lince RS485 musí odejít 4byte --> 0001 0010 0000 0100
nějak to neumím
Re: HEX po Software print
Serial.write asi bude to, co hledáš, https://www.arduino.cc/reference/en/lan ... ial/write/ ale to posílá buď byte, nebo string, nebo sérii bytů, takže buď
nebo
ale nejsem si teď z hlavy jist pořadím, takže bych si prvně poslal a=0x3132; na textový terminál a buď to vypíše 12, nebo 21
Kód: Vybrat vše
Serial.write(a >>8); // horní byte
Serial.write(a & 0x0FF); // dolní byte
Serial.write(b >>8); // horní byte
Serial.write(b & 0x0FF); // dolní byte
Kód: Vybrat vše
Serial.write(a,2); // buffer, 2 byte
Serial.write(b,2); // buffer, 2 byte
Re: HEX po Software print
JO JO, to šlape, ale né u Softwareserial
Re: HEX po Software print
https://docs.arduino.cc/learn/built-in- ... 6dda#write
Podle tohoto by ta první šlapat měla (pokud ne, napiš, jak to voláš, co to dělá a co bys chtěl, aby to dělalo)
Podle tohoto by ta první šlapat měla (pokud ne, napiš, jak to voláš, co to dělá a co bys chtěl, aby to dělalo)
Kód: Vybrat vše
mySerial.write(a >>8); // horní byte
mySerial.write(a & 0x0FF); // dolní byte
mySerial.write(b >>8); // horní byte
mySerial.write(b & 0x0FF); // dolní byte
Re: HEX po Software print
OK, zkusím, dám vědět
Re: HEX po Software print
Tak to první s posunem šlape, to druhé mu vadí 2x int. OK tak tomu rozumím.
Ještě tedy jak to udělat, když potřebuju poslat třeba 6 Byte, resp 3Byte a 3 Word
jde to nějak kratším zápisem?
Ještě tedy jak to udělat, když potřebuju poslat třeba 6 Byte, resp 3Byte a 3 Word
jde to nějak kratším zápisem?
Re: HEX po Software print
Obávám se, že tak úplně nechápu otázku.
Jestli jde o vyhnutí se vypisování spousty >>8 >>16 &0xFF a podobně, tak to prostě zabalit do funkce/funkcí (pro různé typy parametrů)/objektu (pro jednodušší používání)
Jestli jde o vyhnutí se vypisování spousty >>8 >>16 &0xFF a podobně, tak to prostě zabalit do funkce/funkcí (pro různé typy parametrů)/objektu (pro jednodušší používání)
Kód: Vybrat vše
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10,11);
void send_uint16_t(SoftwareSerial &mySerial, uint16_t val) { //send 2 byte value
mySerial.write(val >>8);
mySerial.write(val & 0x0FF);
}
void setup(){
uint16_t a,b,c;
uint8_t x,y,z;
a=b=c=x=y=z=5;
send_uint16_t(mySerial, a); // 2 bytes
send_uint16_t(mySerial, b);
send_uint16_t(mySerial, c);
mySerial.write(x); // 1 byte
mySerial.write(y);
mySerial.write(z);
}
void loop(){}
Re: HEX po Software print
Případně si udělat vlastní třídu, třeba takto
Kód: Vybrat vše
#include <SoftwareSerial.h>
class myOwnSerial: public SoftwareSerial {
public:
myOwnSerial(uint8_t receivePin, uint8_t transmitPin, bool inverse_logic = false) : SoftwareSerial(receivePin,transmitPin,inverse_logic) {};
size_t write(uint8_t val) {
return SoftwareSerial::write((uint8_t) val);
};
void write(unsigned int val) {
SoftwareSerial::write((uint8_t)( val >>8));
SoftwareSerial::write((uint8_t)(val & 0x0FF));
};
void write(unsigned long val) {
SoftwareSerial::write((uint8_t)( (val >>24) & 0x0FF));
SoftwareSerial::write((uint8_t)( (val >>16) & 0x0FF));
SoftwareSerial::write((uint8_t)( (val >>8) & 0x0FF));
SoftwareSerial::write((uint8_t)( val & 0x0FF));
};
};
myOwnSerial mySerial(10,11);
uint16_t a,b,c;
uint8_t x,y,z;
uint32_t h,j,k;
void posli_data() { // posle namerena data
mySerial.write(a); // 2 bytes
mySerial.write(b);
mySerial.write(c);
mySerial.write(x); // 1 byte
mySerial.write(y);
mySerial.write(z);
mySerial.write(h); // 4 byte
mySerial.write(j);
mySerial.write(k);
}
void setup(){
a=b=c=x=y=z=h=j=k=5;
posli_data();
}
void loop(){}
Re: HEX po Software print
(a samozřejmě jsou to jen ukázky, takže nedělají nic moc rozumného, musíš si tam dát vlastní data a volat to ve chvíli, kdy to má smysl - ty setup a loop tam mám jen aby se to přeložilo)
Re: HEX po Software print
Jsi borec!
díky už to šlape...
díky už to šlape...
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 4 hosti