这是我第一次问问题,所以请耐心等待。
我正在尝试读取要发送到打印机的文本文件的内容。在定义标签打印方式的字符中间有控制字符、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];
}
}
}
数据结构有如下定义:QByteArraytemporaryStructure[50];
要发送的文件为: STX f259 CRLF SOH D STX L CRLF STX L CRLF D11 CRLF PC CRLF SC CRLF H25 CRLF 1W1c66000004100202000016036 CRLF
粗体数据是控制字符。
在我的控制台中,当我执行上面的函数时,所有的控制字符都显示为小方块,甚至没有出现 CRLF。
为什么这些不同的控制字符显示为小方块,并且这些将通过复制到 QByteArray 数组进行修改?
恐怕打印机什么也没有出来,我还没有一个可以测试,FreeSerialPort Monitor 将是查看一切是否正确的方法。
感谢您的关注。