使用Qt时编写嵌入式程序,通常遇到需要用户设定值,然后将这个参数写入设备中,下面提供一种可行的思路:
首先在ui中拖入QLineEdit,在程序中我们只能获取QString,因此需要转换格式.
注意数据类型占多少个字节
?通过ModBus-RS485进行通讯,我们通常使用QByteArray, 如果使用char来转换,表数范围为-128-127,这里举个列子,如果用户输入100,我们先将它转为char,之后写入QByteArray来组成我们要发送的指令。
QString getS = ui->QLineEdit->text(); //获取用户输入数字
uchar str = (uchar)getS.toInt();
//这里通过toInt成员函数将QString转为Int,然后强制转化为char类型
QByteArray wbuf;
wbuf[0] = 0x01; //设备地址
wbuf[1] = 0x03; //功能码
wbuf[2] = str; //举例要写入的字节
.
.
.
.
然后写入数据
port.write(wbuf);
注意:这里uchar最大为2^8 = 256 , 也就是说uchar表示的范围为0-255,如果用户输入的值超过255,那么就会出错。 当然我们可以改用short(2字节)或者int(4字节)
QString getS = ui->QLineEdit->text(); //获取用户输入数字
ushort num = getS.toUShort();
//这里ushort为2个字节,我们需要拆分
QByteArray wbuf;
wbuf[0] = 0x01; //设备地址
wbuf[1] = 0x03; //功能码
wbuf[2] = ((uchar)((0xff00&num ) >> 8));
wbuf[3] = (uchar)(0x00ff&num );
.
.
.
.
然后写入数据
port.write(wbuf);
|