Serial port communication in Qt -
i new qt , need prepare project send hex commands rs232. qstring line contains 64bit binary data have convert hexadecimal , send through rs232 .
qstring a=ui->combobox->currenttext(); qstring s1; s1="./calc "+a; qprocess p1; p1.start(s1); p1.waitforfinished(-1); qstring line ; //read qfile file("teleoutput.txt"); if (!file.open(qiodevice::readonly | qiodevice::text)) return; qtextstream in (&file); line = in.readall(); ui->plaintextedit->setplaintext(line);
so, how convert 64 bit binary data in qstring line hexadecimal value , transfer through rs232?
first of - should use qtserialport
second of - qstring
class, works actual string. qbytearray
works raw data. when write qstring line = in.readall();
implicitly calls qstring(const qbytearray &ba)
, uses qstring::fromascii
.
last of all, if want process 64bit integers, should this:
quint64 d; qdatastream stream(&file); while (!stream.atend()) { stream >> d; process(d); }
update
quote:
my problem in plaintextedit "1111110101000101010101010101010101010101010101010101010......." 64 bit data populated , need convert data hex , send through rs232
solution:
qstring bindata = plaintextedit.toplaintext(); qbytearray result; while (bindata.size() >= 64) { quint64 d; qstring datapiece = bindata.left(64); bindata.remove(0, 64); d = datapiece.toulonglong(0, 2); result += qbytearray::number(d); } _com->write(result); _com->flush();
where _com
pointer qtserialport
, parameters set , opened without errors.
Comments
Post a Comment