0
我有一個嵌入式設備,我嘗試通過無線連接通過TCP進行通信。下面是該設備所期望的數據結構:使用QTcpSocket發送字節
char[] = { 0x55, 0x55, 0x55, 0x55 //header block
//start data here
0x01, 0x00, 0x00, 0x00 //example data
//end data block
0xAA, 0xAA, 0xAA, 0xAA //footer
};
我想用QTcpSocket來寫這些數據。 QTcpSocket將允許我寫入char數據或QByteArray,但是當我嘗試以這兩種格式之一保存這些數據時,它會失敗。我能夠成功保存數據的唯一方法是使用unsigned char數組。我的意思
例子:
char message[12] = {
0x55, 0x55, 0x55, 0x55,
0x01, 0x00, 0x00, 0x00,
0xAA, 0xAA, 0xAA, 0xAA};
然而,這個消息塊給我一個錯誤
C4309: 'initializing' : truncation of constant value.
和打印該數據時,它出來的:
U U U U
r
與r更像是一個正方形的邊緣比實際字母
此特定問題是由從字符陣列改變爲unsigned char
unsigned char message[12] = {
0x55, 0x55, 0x55, 0x55,
0x01, 0x00, 0x00, 0x00,
0xAA, 0xAA, 0xAA, 0xAA};
其打印時再與數據出來固定:
85 85 85 85
1 0 0 0
170 170 170 170
此,該裝置我的格式相匹配正在交談期待。但是,如果我把數據以這種形式,與QTcpSocket不喜歡,並響應回來:
C2664: 'qint64 QIODevice::write(const QByteArray &)': cannot convert argument 1
from 'unsigned char[20]' to 'const char *'
有沒有辦法送,我想用在與QTcpSocket數據,或者我需要想出如何使用Windows套接字編寫此消息?
是否有類似的易轉化爲後出現在了與QTcpSocket相同的格式讀取數據? (例如,我在示例中發送了消息,設備將其發送回「驗證」它正確接收了它,我如何讀出它以知道它與我發送的內容相同?) – user3830784 2015-01-15 20:07:38
以類似的方式你可以使用'socket.read((char *)message,12);'這可以在連接到'QTcpSocket'的'readyRead'信號的槽中完成。看到這個異步使用'QTcpSocket'的例子:http://stackoverflow.com/questions/27787130/qt-even-processing-while-waitforconnected-is-running/27793246#27793246 – Nejat 2015-01-15 20:28:10