【QT】用串口发送ASCII字符串与数字的拼接

这篇博客介绍了如何通过编程向电机发送指令以设置其转速为1000RPM。具体步骤包括构建指令字符串,从控件获取速度值,转换并乘以系数,再将结果拼接到指令字符串中,最后通过串口发送。代码中详细展示了QString的使用,如number方法用于数值转换,以及如何将QString转换为char*进行串口通信。

1. 问题需求:

向电机发指令s r0x2f 1666666用以设置电机的转速为1000。

s r0x2f 1666666 设置速度为 1000RPM

2. 办法解决:

利用串口发送s r0x2f +速度;

获取控件值类型事件

   void on_spinboxSpeed_valueChanged(int value);
void MotorDebug::on_btnSendSpeed_clicked()
{
   QString buf = "s r0x2f ";
   QString str = ui->spinboxSpeed->text();
   int num = str.toInt();
   int speed = num*1667;
   QString Strspeed = QString::number(speed);
   buf.append(Strspeed);
   char *temp=buf.toLocal8Bit().data();
   currentPort->write(temp);
}

3. 代码讲解:

第一步:首先定义一个QString 类型变量存放字符串:"s r0x2f "

第二步:其次获取控件的文本数值:QString str = ui->spinboxSpeed->text();

第三步:将获取后的文本数值转换为Int型,目的是为了做系数相乘的作用。int num = str.toInt();

乘以系数,这样操作的时候就可以直观看到转速,和实际发送的指令了;int speed =

num*1667;

第四步:建立一个QString类型的变量StrSpeed将,QString::number是将数数字(整数、浮点数、有符号、无符号等)转换为QString类型,常用于UI数据显示。

QString Strspeed = QString::number(speed);

第五步:进行拼接形成完整字符串buf.append(Strspeed);

第六步:toLocal8Bit()是将QString以自己正确的编码方式读取并转换成编译器编码方式的字节流,char *temp=buf.toLocal8Bit().data();

第七步:currentPort->write(temp);将数据以串口方式发送。

4. 知识点拓展QString::number()

QString::number是将数数字(整数、浮点数、有符号、无符号等)转换为QString类型,常用于UI数据显示。

4.1 QString::number 整数转换

int a = 20;
uint b =255;
QString::number(a);//20
QString::number(a,10);//20
QString::number(b);//255
QString::number(b,16);//ff
QString::number(b,16).toUpper();//FF

4.2 QString::number 浮点数转换

float a = 1.234;
QString::number(a,‘f’, 2);  //1.23

5. 知识点拓展把QString转换为double类型

QString str="123.45";

double  c = str.toDouble(); //val=123.45
float   d = str.toFloat(); //d=123.45

6. Qstring 转换char*问题

QString qstr("hello,word");

const char *p = qstr.toLocal8Bit().data();

7. 测试结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

米杰的声音

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值