gpt4 book ai didi

c++ - 使用QSerialPort将带有引号的内容写入串行设备

转载 作者:行者123 更新时间:2023-12-02 10:19:33 26 4
gpt4 key购买 nike

我正在尝试将Lua命令写入串行设备。 Lua命令中带有引号,而我的代码却不知道。该命令是我要实现的启动序列的一部分。我需要获取“wd =要求” word” \ r \ n”才能发送到设备,所以我尝试了以下操作:
QByteArray const CMD_ALPHA = "wd = require \"word\" \r\n";
但它保留了斜线。如果我没有斜线,则代码不会编译。
CMD_ALPHA传递给排队功能,然后使用QSerialPort中的写入功能写入设备。有没有办法发送带有语音标记的命令?

最佳答案

您需要知道的主要事情是:您编写的CMD_ALPHA数组完全不包含与\字符相对应的任何值。

下述字节数组仅包含一个值。
该单个值对应于"符号。
它的大小等于一:

QByteArray baWithQuoteSymbolOnly = "\"";

您看到 \字符的原因是您的输出工具(调试器输出,终端等)决定显示数组中的所有符号+以“不可打印”的方式表示多个符号。
例如,输出 \n符号的可打印方式是换行符,而不是\ n。

运行以下代码以更好地理解。
#include <QtCore/QCoreApplication>

#include <QByteArray>
#include <QDebug>

int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);

/*
The byte array below contains only 1 symbol "
It does not contain \ symbols at all.
Its size is equal to one.
*/
QByteArray baWithQuoteSymbolOnly = "\"";
qDebug() << baWithQuoteSymbolOnly.size();

/*
But it can be printed with quotation characters
and with escaping of non-printable characters
*/
qDebug() << baWithQuoteSymbolOnly;

/*
You can print it WITHOUT quotation characters
and WITHOUT escaping of non-printable characters
*/
qDebug().noquote() << baWithQuoteSymbolOnly;

QByteArray const CMD_ALPHA = "wd = require \"word\" \r\n";
qDebug() << CMD_ALPHA;
qDebug().noquote() << CMD_ALPHA;

// output every element that CMD_ALPHA array actually contains
for (int i=0; i<CMD_ALPHA.size(); i++)
{
char asciiSymbol = CMD_ALPHA.at(i);
int value = CMD_ALPHA.at(i);

qDebug().noquote() << "ascii symbol =" << asciiSymbol << "value in hex =" << QString::number(value, 16);
}

// Now see what ASCII code does backslash symbol really have
char realBackslash = '\\';

qDebug().noquote() << "backslash symbol =" << realBackslash
<< "value in hex =" << QString::number(realBackslash, 16);

return a.exec();
}

附加说明。 QByteArray实际上是包装器类,用于存储8位值的数组。在决定显示它之前,它甚至不是符号数组,也不是字符串。字符串只是数字值数组的一种表示形式。加上不可打印字符的输出是字符串的一种表示形式。

关于c++ - 使用QSerialPort将带有引号的内容写入串行设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60833650/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com