初めて質問するので、少々お待ちください。
プリンターに送信する予定のテキスト ファイルの内容を読み込もうとしています。ラベルの印刷方法を定義する文字の中間には、制御文字、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 CRLF SOH D STX L CRLF STX L CRLF D11 CRLF PC CRLF SC CRLF H25 CRLF 1W1c66000004100202000016036 CRLF
太字のデータは制御文字です。
私のコンソールでは、上記の関数を実行すると、すべての制御文字が小さな四角で表示され、CRLF も表示されません。
これらの異なる制御文字が小さな四角形として表示されるのはなぜですか? QByteArray 配列へのコピーでこれらが変更されるのですか?
残念ながら、プリンターから何も出力されず、テストするプリンターがまだありません。FreeSerialPort Monitor は、すべてが正しく出力されるかどうかを確認する方法になります。
ご清聴ありがとうございました。