查看完整版本: [-- 怎样通过QDataStream向串口发送一个int型数组 --]

QTCN开发网 -> Qt嵌入式开发 -> 怎样通过QDataStream向串口发送一个int型数组 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

jlh94 2016-03-24 16:55

怎样通过QDataStream向串口发送一个int型数组

串口通信中要向串口发送一个int 型的数组,先声明一个int型数组,int dataSend[49] ; ,里面存放49个16进制的数,若是用QIODevice::write( )函数发送,write的参数必须是QByteArray型的字符串,不能发送int型的数组,可以用QDataStream来发送int型的数组吗?

nigoole 2016-03-24 17:19
用下面这个方法试试:
for (int i = 0; i < 49; i++) {
    dataSend[0] = rand() % 100 + 10;
}
serialport->write(dataSend);[/code]

nigoole 2016-03-24 17:20
dataSend 定义为QByteArray dataSend;

jlh94 2016-03-24 17:54
nigoole:用下面这个方法试试:
for (int i = 0; i < 49; i++) {
    dataSend[0] = rand() % 100 + 10;
}
serialport->write(dataSend);
....... (2016-03-24 17:19) 

dataSend[0] = rand() % 100 + 10; 这个语句。。。不太明白

jlh94 2016-03-24 17:55
nigoole:dataSend 定义为QByteArray dataSend; (2016-03-24 17:20) 

可是QByteArray不是字节数组吗 ,不能存放int型的数啊

jlh94 2016-03-24 19:47
求大神回复指点啊

yuyu414 2016-03-25 15:01
int a = 0x1234;
QByteArray ba;
memcpy(ba.data(), &a, 4);

serialPort->write(ba);

jlh94 2016-03-25 18:32
yuyu414:int a = 0x1234;
QByteArray ba;
memcpy(ba.data(), &a, 4);
serialPort->write(ba); (2016-03-25 15:01) 

memcpy是什么函数啊

realfan 2016-03-29 15:45
yuyu414:int a = 0x1234;
QByteArray ba;
memcpy(ba.data(), &a, 4);
serialPort->write(ba); (2016-03-25 15:01) 

memcpy(ba.data(), &a, 4);会有问题
ba的空间有不够的风险,ba的size也无法确定。
这种要么将整数转成字符串,要么用QDataStream

realfan 2016-03-29 15:50
用QDataStream可以的
QByteArray baOut;
    QBuffer bufferOut(&baOut);
    bufferOut.open(QIODevice::WriteOnly);
    QDataStream out(&bufferOut);
for(int i = 0; i < 49; ++i)
{
    out << dataSend;
}
bufferOut.close();



realfan 2016-03-29 15:53
你这个用可以直接用QByteArray
QByteArray ba((char*)dataSend, sizeof(dataSend)); //注int dataSend[49]要在同一可见范围内,或者用sizeof(int)*49

yuyu414 2016-06-13 11:19
realfan:memcpy(ba.data(), &a, 4);会有问题
ba的空间有不够的风险,ba的size也无法确定。
这种要么将整数转成字符串,要么用QDataStream (2016-03-29 15:45) 

漏了一句
int a = 0x1234;
QByteArray ba;
ba.resize(4);
memcpy(ba.data(), &a, 4);

serialPort->write(ba);

yuyu414 2016-06-13 11:22
jlh94:memcpy是什么函数啊 (2016-03-25 18:32) 

C/C++的标准函数,内存拷贝


查看完整版本: [-- 怎样通过QDataStream向串口发送一个int型数组 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled