图像传输到Intermec PM4i打印机然后打印

时间:2014-01-13 01:36:32

标签: image fingerprint intermec

我正在使用指纹上传,然后使用pcx格式打印图像。

Step1使用TCP端口将图像上传到打印机,我使用命令:

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

打印机返回消息“OK”。 然后我使用socket将bigfoot.1的字节数据发送到打印机。

步骤2打印图像“bigfoot.1”:

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

问题来了,打印机返回消息“找不到图像”。所以我想出了上传失败的可能性。所以我打开软件PrintSet4检查图像,图像已存在于TMP.Odd !!! 最后,我使用PrintSet4替换我的套接字应用程序上传图像,添加文件并应用后,我使用step2打印命令打印图像,工作正常! 以下是上传图片的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);
        }
    }

1 个答案:

答案 0 :(得分: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),其作用与添加行分隔符相同。它工作得很好。