我使用QtSerialPort跨COM端口串行消息發送到一個INSTEON PowerLinc 2413U調制解調器。我可以硬編碼併發送消息,但是我需要使用可變設備ID發送相同的消息。以下是我用來發送靜態消息的結構:Qt的 - 轉換的QString到的QByteArray的指數 - 劃分裝置ID爲3個指數
QByteArray msg;
bool msgStatus;
msg.resize(8);
msg[0] = 0x02;
msg[1] = 0x62;
msg[2] = 0x1B;
msg[3] = 0xE9;
msg[4] = 0x4B;
msg[5] = 0x11;
msg[6] = 0x05;
msg[7] = 0x00;
send(msg,&msgStatus);
索引位置2,3和4代表設備ID。 「1BE94B」在這種情況下。我的函數接受通過QString執行動作的設備ID。
我怎麼能轉換QString時,適合的3個指標所需要的結構。我使用順利拿到3字節地址的每個字節如下:
devID.mid(0,2)
devID.mid(2,2)
devID.mid(4,2)
我的目標實現了QByteArray中看起來像這樣:
QByteArray msg;
bool msgStatus;
msg.resize(8);
msg[0] = 0x02;
msg[1] = 0x62;
msg[2] = devID.mid(0,2)
msg[3] = devID.mid(2,2)
msg[4] = devID.mid(4,2)
msg[5] = 0x11;
msg[6] = 0x05;
msg[7] = 0x00;
send(msg,&msgStatus);
我已經嘗試了許多不同的轉換計劃,但有無法解決我需要的東西。最終我msg
的結構應爲:
02621DE94B151300
我已經成功地看到所使用的設備操作的唯一方法是通過使用msg.append()
似乎並沒有單獨工作分配在QByteArray中的每個字節。
謝謝您的建議!這裏的問題的
也許你可以用'的QByteArray :: fromHex(常量的QByteArray& ')附加值 – Zaiborg 2013-02-18 07:16:03
我相信如果有的話,它會是'msg = STRINGOFCOMMANDS.toHex()',但是我嘗試了一些非常相似的東西,但它不起作用。我需要將我的三字節設備地址轉換爲三個單獨的索引,其數據類型與上面的「msg [x] ='結構對齊。 或者,如果有更好的實施,我很樂意聽到! – 2013-02-18 13:17:13