0

指紋を使用して画像をアップロードし、pcx 形式で印刷しています。

Step1 TCP ポートを使用して画像をプリンターにアップロードします。次のコマンドを使用します。

IMAGE LOAD "bigfoot.1",1746,""\r\n

プリンターは「OK」というメッセージを返します。次に、bigfoot.1 のバイト データをソケットを使用してプリンターに送信します。

ステップ 2 画像「bigfoot.1」を印刷します。

PRPOS 200,200
DIR 3
ALIGN 5
PRIMAGE "bigfoot.1"
PRINTFEED
RUN

問題が発生し、プリンターは「画像が見つかりません」というメッセージを返します。ということで、アップロード失敗の可能性を思いつきました。そこで、ソフトウェア PrintSet4 を開いて画像を確認すると、画像は既に TMP.Odd に存在します!!! 最後に、PrintSet4 を使用してソケット アプリケーションを置き換えて画像をアップロードしました. ファイルを追加して適用した後、step2 print コマンドを使用して画像を印刷しました. 正常に動作します! 画像をアップロードする C# コードは次のとおりです。

public void SendFile(string filePath, string CR_LF)
{
    FileInfo fi = new FileInfo(filePath);
    using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read))
    {
        byte[] byteFile = new byte[fs.Length];
        string cmd = "IMAGE LOAD \"" + fi.Name + "\"," + byteFile.Length.ToString() + ",\" \"" + CR_LF;
        ClientSocket.Send(encode.GetBytes(cmd));
        fs.Read(byteFile, 0, byteFile.Length);
        Thread.Sleep(1000);
        ClientSocket.Send(byteFile);
    }
}
4

1 に答える 1

0

私はあなたのコードを修正し、シリアルポートを使用しました。

public void SendFile(string filePath)
{
    SerialPort port = new SerialPort("COM3", 38400, Parity.None, 8, StopBits.One);
    port.Open();
    FileInfo fi = new FileInfo(filePath);
    using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read))
    {
        byte[] byteFile = new byte[fs.Length];
        // string cmd = "IMAGE LOAD \"" + fi.Name + "\"," + teFile.Length.ToString()+                     ",\"\"" + CR_LF;
        string cmd = "IMAGE LOAD " + "\"" + fi.Name + "\"" + "," + byteFile.Length.ToString() + "," + "\"S\"";

        port.WriteLine(cmd);
        fs.Read(byteFile, 0, byteFile.Length);
        port.Write(byteFile,0,byteFile.Count());
        int count = byteFile.Count();
        int length = byteFile.Length;
    }
}

それで、問題が使用されていることに気付きましたCR_LF。代わりにport.WriteLine(cmd)、行区切りを追加するのと同じように機能する を使用しました。そして、それはうまくいきました。

于 2014-02-26T02:01:34.130 に答える