gpt4 book ai didi

c++ - Qt, C++ - 从文件中读取控制字符

转载 作者:行者123 更新时间:2023-11-28 07:37:16 26 4
gpt4 key购买 nike

这是我第一次提问,请耐心等待。

我正在尝试读取要发送到打印机的文本文件的内容。在定义标签打印方式的字符中间有控制字符、STX、SOH、CR、LF。在我的示例中,我将读取文件的内容并将它们传递到内存中的数据结构(数组),向其附加一些数据,然后将其直接发送到打印机,删除该结构中的数据。

执行此操作的函数如下:

void ClientThread::readFile2Structure(bool GoodOrBad)
{
int i = 0;
int j = 0;

// Clean structure



// here clean the structure

// According to the name comes from the arguments.
if(GoodOrBad == 1)
{
labelFile.setFileName(labelPathGood);
//qDebug() << "Fez o set filepath" << labelPathGood;
}
else if(GoodOrBad == 0)
{
labelFile.setFileName(labelPathBad);
//qDebug() << "Fez o set filepath" << labelPathBad;
}

if (!labelFile.open(QIODevice::ReadOnly))
{
qDebug() << "Unable to open label definition file PrinterGood.ini/PrinterBad.ini!";
return;
}
else
{
while (!labelFile.atEnd())
{
temporaryStructure[i] = labelFile.readLine();
i++;
}

// for debug purposes only!
qDebug() << "Structure";

for(j=0; j<=i; j++)
{
qDebug() << temporaryStructure[j];
}
}
}

数据结构定义如下:QByteArray temporaryStructure[50];

要发送的文件是:STX f259 CRLFSOH D STX L CRLFSTX L CRLFD11 CRLFPC CRLFSC CRLFH25 CRLF1W1c66000004100202000016036 CRLF

粗体数据为控制字符。

在我的控制台中,当我执行上述功能时,所有控制字符都显示为小方 block ,甚至没有出现 CRLF。

为什么这些不同的控制字符显示为小方 block ,这些字符是否会随着复制到 QByteArray 数组而被修改?

恐怕打印机什么都没有出来,我还没有一个可以测试的,FreeSerialPort Monitor 将是查看是否一切正常的方法。

感谢您的关注。

最佳答案

Unicode 有很多字符,据我所知,没有一种字体可以代表所有字符。未表示的字符(包括大多数不可打印的字符)使用特殊字形打印,最常见的是正方形。

回答问题的第二部分 - QByteArray 包含原始数据,并且在复制时未修改。

要删除 CR 和 LF,您可以使用:

byteArray.replace('\n', "");
byteArray.replace('\r', "");

关于c++ - Qt, C++ - 从文件中读取控制字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16546914/

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