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