協議下載地址: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;
}