サーマルプリンターで二次元コード画像を印刷します。
1567 ワード
最近、熱敏プリンタの二次元コードの印刷を研究しています。北洋OOSの二次開発パッケージDLLを使って、コードを参考にしてください。http://www.cnblogs.com/datacool/archive/2012/11/27/2014666.html ,次は拡張画像の印刷方法です。
/// <summary>
///
/// </summary>
/// <param name="bmp"></param>
public void PrintBmp(Bitmap bmp)
{
byte[] data = new byte[] { 0x1B, 0x33, 0x00 };
POS_WriteFile(POS_IntPtr, data, (uint)data.Length);
data[0] = (byte)'x00';
data[1] = (byte)'x00';
data[2] = (byte)'x00'; // Clear to Zero.
Color pixelColor;
//ESC * m nL nH d1…dk
// ESC * m nL nH
byte[] escBmp = new byte[] { 0x1B, 0x2A, 0x00, 0x00, 0x00 };
escBmp[2] = (byte)'x21';
//nL, nH
escBmp[3] = (byte)(bmp.Width % 256);
escBmp[4] = (byte)(bmp.Width / 256);
//
//
for (int i = 0; i < (bmp.Height / 24 + 1); i++)
{
//
POS_WriteFile(POS_IntPtr, escBmp, (uint)escBmp.Length);
//
for (int j = 0; j < bmp.Width; j++)
{
for (int k = 0; k < 24; k++)
{
if (((i * 24) + k) < bmp.Height) // if within the BMP size
{
pixelColor = bmp.GetPixel(j, (i * 24) + k);
if (pixelColor.R == 0)
{
data[k / 8] += (byte)(128 >> (k % 8));
}
}
}
// data,24
POS_WriteFile(POS_IntPtr, data, (uint)data.Length);
data[0] = (byte)'x00';
data[1] = (byte)'x00';
data[2] = (byte)'x00'; // Clear to Zero.
}
// ,
byte[] data2 = { 0xA };
POS_WriteFile(POS_IntPtr, data2, (uint)data2.Length);
} // data
byte[] data3 = { 0xA, 0xA };
POS_WriteFile(POS_IntPtr, data3, (uint)data3.Length);