依碼仕噴碼機編程指南

協議下載地址:https://download.csdn.net/download/horseroll/10766998

1.首先與依碼仕噴碼機通過RS232進行通訊連接

2.準備打印,發送字節05

3.打印機返回字節06,發送E9H指令,new Byte[] { 0xE9, 0x00, 0x01, 0x01, 0xE9 }

4.打印機返回字節06,發送字節05

5.打印機返回字節06,發送D8H指令,new Byte[] { 0xD8, 0x00, 0x00, 0xD8 }

6.打印機返回字節06,發送字節05

7.打印機返回字節06,發送E3H指令,即發送數據,具體方法見下方sendMe()方法

8.打印機返回字節06,說明打印機已經接收到信號,等待打印

8.打印機打印完成,返回字節06,發送字節06

9.打印機返回字節06,發送字節06,發送字節05

10.打印機返回字節06,發送E3H,從步驟7開始循環

注意點:收到打印機返回字節後一定要立馬發送下一步動作的指令,不然會超時,需要重頭來。

SendMe方法(我這邊是打印16位長度的的數字,不同長度字節內容也不一樣,看協議修改)

public void sendMe()
{
    SerialOutput = new Byte[]{
        227,0,41,192,0,0,0,0,1,0,3,0,3,0,2,0,100,0,0,10,
        128,1,13,1,16,30,1,30,18,
        49,50,51,52,53,54,56,48,
        49,50,51,52,53,54,56,48,
        18,16,1,13,128,1,13
    };
    SerialOutput[2] = 33 + 16;
    Byte[] strbyte = new Byte[16];
    int z = 0;
    strbyte = System.Text.Encoding.Default.GetBytes("0000000000000001");
    for (int i = 29; i < 45; i++)//16位的字節更換
    {
        SerialOutput[i] = strbyte[z];
        z++;
    }
    byte checksum = CheckSum(SerialOutput);
    Byte[] serial = new Byte[SerialOutput.Length + 1];
    for (int i = 0; i < serial.Length - 1; i++)
    {
        serial[i] = SerialOutput[i];
    }
    serial[serial.Length - 1] = checksum;
    comm.WritePort(serial, 0, serial.Length);
    ToolData.WriteLog(richTextBox1, CameraList[ListNumber] + "  等待打印", 1);
}


//字節計數
public static byte CheckSum(Byte[] bytes)
{
    byte checksum = 0;
    foreach (byte b in bytes)
    {
        checksum ^= b;
    }
    return checksum;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章