using System.Runtime.InteropServices;
namespace Tnb.WarehouseMgr.Print
{
public class PPLBUtility
{
private const uint IMAGE_BITMAP = 0;
private const uint LR_LOADFROMFILE = 16;
private static readonly string winPPLBDllPath = Path.Combine(AppContext.BaseDirectory, @"Library\x64", "Library\\x64\\Winpplb.dll");
private static readonly string winPortDllPath = Path.Combine(AppContext.BaseDirectory, @"Library\x64", "Library\\x64\\WinPort.dll");
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
private static extern IntPtr LoadImage(IntPtr hinst, string lpszName, uint uType,
int cxDesired, int cyDesired, uint fuLoad);
[DllImport("Gdi32.dll", SetLastError = true, CharSet = CharSet.Auto)]
private static extern int DeleteObject(IntPtr ho);
public const string szSavePath = "C:\\Argox";
public const string szSaveFile = "C:\\Argox\\PPLB_Example.Prn";
private const string sznop1 = "nop_front\r\n";
private const string sznop2 = "nop_middle\r\n";
///
/// 印出一个 Maxi Code 2D Barcode
///
/// X 座标
/// Y 座标
/// A 3-位数 Class code
/// A 3-位数 Country code
/// 在美国 Post code 是一個4或5-位数,其他国家是 6 位数
/// 资料字串,最多84個字元
/// 0 -> OK
/// ObjectId.B_Bar2d_Maxi(50, 50, 300, 400, 93065, “This MaxiCode”);
/// 這个 B_Bar2d_Maxi 函数可以打印出一个 Maxi Code 2D Barcode
[DllImport("Library\\x64\\Library\\x64\\Winpplb.dll")]
public static extern int B_Bar2d_Maxi(int x, int y, int cl, int cc, int pc, string data);
///
/// 印出一个 PDF-417 2D Barcode
///
/// X 座标
/// Y 座标。(1 dot = 0.125 mm)
/// 最大打印宽度,单位 dots。
/// v;
///最大打印高度,单位 dots。
/// s;
/// 错误校正等級,范围:0~8。
/// c;
/// 资料压缩等級,范围:0 或 1。
/// px;
/// 模组宽度,范围:2~9 dots。
/// py;
/// 模组高度,范围:4~99 dots。
/// r;
/// 最大 row count。
/// l;
/// 最大 column count。
/// t;
/// Truncation flag,‘0’ 是 normal 和 ‘1’ 是 truncated.
/// o;
///打印方向,'0’是 0°,'1’是90°、'2’是180°,'3’是270°
///
///
///
///
///
///
///
///
///
///
///
/// 资料字串。
///
[DllImport("Library\\x64\\Library\\x64\\Winpplb.dll")]
public static extern int B_Bar2d_PDF417(int x, int y, int w, int v, int s, int c, int px,
int py, int r, int l, int t, int o, string data);
///
/// 印出一个 PDF-417 2D Barcode
///
///
///
///
///
///
///
///
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_Bar2d_PDF417_N(int x, int y, int w, int h, string pParameter, string data);
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_Bar2d_DataMatrix(int x, int y, int r, int l, int h, int v, string data);
///
/// 关闭打印端口
///
///
/// B_ClosePrn 函数会关闭开启的打印机端口,必須在所有打印函数之后執行
///
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern void B_ClosePrn();
///
/// 开启 Printer 工作
///
///
/// 选择端口或档案。
/// 0 -> print to file.
/// 1 -> lpt1, 2 -> lpt2, 3 -> lpt3
/// 4 -> com1, 5 -> com2, 6 -> com3
/// 10 -> pipe, 11 -> USBXXX, 12 -> USB
/// 13 -> LAN Client(TCP/IP)
///
///
/// 当 selection 是 0 时,资料则输出至档案,filename 为档案名称,可含路径。
/// 当 selection 是 10 时,filename 为输出路径或装置路径)。
/// 当 selection 是 11 时,filename 指的是想开启的USB之index, index由1开始;
/// 当 selection 是 12 时,filename 指的是想开启的USB装置路径,
/// 和nPort = 10的使用方法一样
/// 当 selection 內容是 13 时, filename 指的是想开启的IP Address, 使用TCP/IP去开启;
/// 预设的port值為9100, 若要指定port值, 如80, 則在IPAddress後加上字串":80".
///
///
/// 0 -> OK.
///Reference BW-Error.txt file.
///
///
/// 说明: B_CreatePrn() 函数會开启你选择的输出端口或开启你键入的输出档案。
/// 而这个函数必須在所有函数之前执行。
/// B_CreatePrn(), B_CreateUSBPort() , B_CreateNetPort() 和 B_CreatePort() 不能同时使用。
///
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_CreatePrn(int selection, string filename);
///
/// 删除 Form (表格)
///
///
/// 表格名称,最多 9 个字。
/// 当 formname 內容是 '*'时将会清除打印机內所有表格。
///
///
/// 0 -> OK.
///Reference BW-Error.txt file.
///
///
/// 这个 B_Del_Form 函数會刪除打印机內,你输入的 Form (表格)名称。当
/// 你刪除它后,将不能再还原,但可以重新载入。
///
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_Del_Form(string formname);
///
/// 刪除 Pcx 图档
///
///
/// 图形名称,最多 9 个字。
/// 当 pcxname 內容是 '*'時将会清除打印机內 RAM 或 flash memory 所有图形。
///
///
/// 0 -> OK.
///Reference BW-Error.txt file.
///
///
/// 这个 B_Del_Pcx 函数會刪除打印机內,你输入的图形名称。当你刪除它后,
/// 將不能再还原,但可以重新載入。
///
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_Del_Pcx(string pcxname);
///
/// 画一个框
///
/// 起点 X 坐标。
/// 起点 Y 坐标。(1 dot = 0.125 mm)
/// 指定框四边边线厚度。
/// 对角点 X 坐标。
/// 对焦点 Y 坐标。
/// 0 -> OK.
///
/// 这个個B_Draw_Box 函数会画一个属性是 “OR” 的框。
///
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_Draw_Box(int x, int y, int thickness, int hor_dots,
int ver_dots);
///
/// 画一条线
///
///
/// 选择线条种类
/// | mode | 線條種類. |
/// | E | Exclusive OR |
/// | O | OR |
/// | W | 白線,它會蓋掉先前影像 |
///
/// 起点 X 坐标。
/// 起點 Y 坐标。(1 dot = 0.125 mm)
///
///
/// 0 -> OK.
///
///这个 Draw_Line 函数会画一个属性是"OR"或"XOR"的线条及一条白线
///
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_Draw_Line(char mode, int x, int y, int hor_dots, int ver_dots);
///
/// 开启或关闭错误回传功能
///
///
/// 当 option 是’N’时 关闭状态回馈。
/// ‘S’ 是开启状态回馈。
///
///
/// 0 -> OK.
///Reference BW-Error.txt file.
///
///
/// B_Error_Reporting(‘S’);
///
/// 这个 B_Error_Reporting 函数会使打印机状态回馈 Disable/Enable,这回
///馈通道是透过 RS232 Port。预定值是 Disable。
///
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_Error_Reporting(char option);
///
/// 取得动态庫版本讯息
///
///
/// 0 -> 讯息视窗不显现。
///1 -> 讯息视窗显现。
///
///
/// B_Get_DLL_VersionA(); return version value.
/// 主版号 = (return version value) / 100.
/// 子版号 = (return version value) % 100.
///
///
///int nVersion, nMainVersion, nSubVersion;
///nVersion = B_Get_DLL_Version(1);
///nMainVersion = nVersion / 100;
///nSubVersion = nVersion % 100;
///
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern IntPtr B_Get_DLL_Version(int nShowMessage);
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_Get_DLL_VersionA(int nShowMessage);
///
/// 转换 BMP 彩色图档变灰阶,并将图形存在打印机的 RAM 中
///
/// X 座标。
/// Y 座标。
///
/// 图形档名称,可包含路径。
/// 格式如:XXXXXXXX.XXX 或 X:\XXX\XXX.XXX
///
///
/// 0 -> OK.
/// Reference BW-Error.txt file.
///
///
/// B_Get_Graphic_ColorBMP(30, 20, “bb.bmp”);
/// B_Get_Graphic_ColorBMPEx(30, 20, 200, 150, 2, “bb1”, “bb.bmp”);//180 angle.
///
///
/// 这个 B_Get_Graphic_ColorBMP() 函数可输入任何位元数的 BMP 图档,并自动转换
/// 为黑白灰阶图档送至打印机打印。
/// B_Get_Graphic_ColorBMPEx() 函式可做放大,缩小及旋转的功能,可利用档名当
///
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_Get_Graphic_ColorBMP(int x, int y, string filename);
///
/// 转换 BMP 彩色图档变灰阶,并将图形存在打印机的 RAM 中,此指令可设置图片宽与高
///
///
///
///
///
///
///
///
///
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_Get_Graphic_ColorBMPEx(int x, int y, int nWidth, int nHeight,
int rotate, string id_name, string filename);
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_Get_Graphic_ColorBMP_HBitmap(int x, int y, int nWidth, int nHeight,
int rotate, string id_name, IntPtr hbm);
///
/// 打印一个图形并将图形存在打印机的记忆体中
///
/// X 座标
/// Y 座标。(1 dot = 0.125 mm)
///
/// 图形档名称,可含路径。
/// 格式如:XXXXXXXX.XXX 或 X:\XXX\XXX.XXX
///
///
/// 0 -> OK.
/// Reference BW-Error.txt file.
///
///
/// B_Get_Pcx(10,100,“phone.pcx”);
///
///
/// 这个 B_Get_Pcx 函数会列印一个图形并将图形储存在打印机内的 RAM 或
/// flash memory。图形档必须是 PCX 的格式。
///
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_Get_Pcx(int x, int y, string filename);
///
/// 前置处理
///
/// 选择输入模式。0 -> 输入字串,1 -> 输入档案。
/// 资料来源,可为字串或档案名称,可含路径。
///
/// 0 -> OK.
///Reference BW-Error.txt file.
///
///
/// string aa = “ZT\r\n”;
///B_Initial_Setting(0, aa);
///or
///B_Initial_Setting(1, “initfile.txt”);
///
///
/// 这个 B_Initial_Setting 函数前置处理的动作,是将一串 Command 先送至印表
/// 机,由字串或档案输入,在使用这个函数时,须先在 B_Create_Prn() 之后其他
/// 函数之前,可作为使用者自订型态。
///
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_Initial_Setting(int Type, string Source);
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_WriteData(int IsImmediate, byte[] pbuf, int length);
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_ReadData(byte[] pbuf, int length, int dwTimeoutms);
///
/// 列印一个图形
///
/// X 座标
/// Y 座标。备注:1 dot = 0.125 mm。
/// 图形档名称。
///
/// 0 -> OK.
///Reference BW-Error.txt file.
///
///
/// B_Load_Pcx(50, 30, “phone”);
///
///
/// 这个 B_Load_Pcx 函数会列印一个 PCX 格式图形,而图形必须事先载入打印
/// 机内的 RAM 或 flash memory 储存。
///
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_Load_Pcx(int x, int y, string pcxname);
///
/// 开启使用中文字型档案 (1615 和 2424)。
///
/// 中文字型档案来源路径。
///
/// 0 -> OK.
///Reference BW-Error.txt file.
///
///
///B_Open_ChineseFont(“C:\ET3”);
///
///
/// 这个 B_Open_ChineseFont 函数开启中文点矩阵字型档案 (1615 和 2424),
/// 供 B_Prn_Text_Chinese 函数使用。
///
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_Open_ChineseFont(string path);
///
/// 打印一个 FORM (表格),并输入 FORM 所有变数、计数资料
///
/// 列印的份数,范围:1~32767。
/// 複製的份数,范围:1~32767。
/// 表格名称,同于之前载入的 FORM 名称,或原先储存在打印机内的 FORM。
/// 输入 FORM 所有变数、计数资料,用 ",“依序分别区隔开。如果变数裡有”,“号,
///可用”;,"来代表逗号。
///
/// 0 -> OK.
/// Reference BW-Error.txt file.
///
///
/// B_Print_form(3, 2, “demo”, “2000,Bicycle”);
///
///
/// 这个 B_Print_Form 函数会送所有资料及表格到 Printer,这个函数使用前
/// 须先执行 B_Set_Form(),并在所有函数之后,B_ClosePrn() 之前执行。当使
/// 用此函数时,就不须执行 B_Print_Out()。
///
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_Print_Form(int labset, int copies, string form_out, string var);
///
/// 打印所有资料和加上跳号复制功能
///
/// 列印的份数,1 ~ 32767。
///
/// 複製的份数,1 ~ 32767。
/// 当为 1 时同等于Print_Out()功能。
///
///
/// 0-> OK.
/// Reference BW-Error.txt file.
///
///
/// B_Print_MCopy(2, 2);
///
///
/// 这个 B_Print_MCopy 函数会送所有资料到 Printer,这个函数须在所有函数之后,
///B_ClosePrn() 之前执行,当使用此函数时,就不须执行 B_Print_Out()。
///它包含 B_Print_Out() 所有功能。
///
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_Print_MCopy(int labset, int copies);
///
/// 送出打印内容
///
/// 列印复制的份数
/// 0 -> OK.
///
/// 这个 B_Print_Out 函数会送所有资料到 Printer,这个函数须在所有函数之后,
///B_ClosePrn() 之前执行。
///
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_Print_Out(int labset);
///
/// 打印一维条形码
///
/// X 坐标。
/// Y 坐标。
/// 列印方向定位,'0’是 0°,'1’是90°、'2’是180°,'3’是270°
///
/// 条码型式、如下表:
///type 条码种类
///0 Code 128 UCC(shipping container code)
///1 Code 128 subset A, B and C
///1E UCC/EAN
///2 Interleaved 2 of 5
///2C Interleaved 2 of 5 with check sum digit
///2D Interleaved 2 of 5 with human readable check digit
///2G German Postcode
///2M Matrix 2 of 5
///2U UPC Interleaved 2 of 5
///3 Code 3 of 9
///3C Code 3 of 9 with check sum digit
///9 Code 93
///E30 EAN-13
///E32 EAN-13 2 digit add-on
///E35 EAN-13 5 digit add-on
///E80 EAN-8
///E82 EAN-8 2 digit add-on
///E85 EAN-8 5 digit add-on
///K Codabar
///P Postnet
///UA0 UPC-A
///UA2 UPC-A 2 digit add-on
///UA5 UPC-A 5 digit add-on
///UE0 UPC-E
///UE2 UPC-E 2 digit add-on
///UE5 UPC-E 5 digit add-on
///R14 RSS-14
///RL RSS Limited
///RS RSS Stacked
///RT RSS Truncated
///RSO RSS Stacked Omnidirectiona
///REX RSS Expanded
///
/// bar 宽度在最小单位,若是RSS条码,则此参数为条码寬度的倍数,范围为1 ~10,预设值为1。
///
/// 寬度在最小单位,
/// 若是RSS条码,则此参数为每列条码可包含的最大資料区域数量,只在使用RSS Expanded条码时
/// 有效,在其它类型的RSS条码中则为无效参数,范围为2 ~22,预设值为22,且此值必需為偶数。
///
///
/// 条码高度。
/// RSS条码的标准的最小高度限制:
/// R14 -> 33 pixels
/// RL -> 10 pixels
/// RS -> 13 pixels
/// RT -> 13 pixels
/// RSO -> 69 pixels
/// REX -> 34 pixels
///
/// 当 human 是'N'时,则不列印文字,当 human 是'B'时,则列印可读文字。
///
/// 资料字串,与资料末端加上,则有跳号功能,
/// Operation: + or - 记号,Number: 0 ~ 32768 数值。
/// 若在RSS需要加上2D(composite symbol)的资料时, 需加上'|'符号, 如1234567890123|123.
/// RSS条码的最大数值限制:
/// R14 -> 9999999999999
/// RL -> 1999999999999
/// RS -> 9999999999999
/// RT -> 9999999999999
/// RSO -> 9999999999999
/// REX -> 74 digits
///
/// 0 -> OK.
///
/// 注:经测试,type=1E 手机不能识别;type=1 手机可识别;
/// 这个 B_Prn_Barcode 函数可以列印出一个指定类型的条码 功能。
///
[DllImport($"Library\\x64\\Winpplb.dll")]
public static extern int B_Prn_Barcode(int x, int y, int ori, string type, int narrow,
int width, int height, char human, string data);
///
/// 获取标签宽度
///
///
///
//[DllImport("Library\\x64\\Winpplb.dll")]
//public static extern int B_Get_PrintWidth(ref int labelWidth);
///
/// 打印出打印机配置讯息
///
///
/// 这个 B_Prn_Configuration 函数会打印打印机内部配置,包含设定、
/// firmware 版本、accessories、等…。
///
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern void B_Prn_Configuration();
[DllImport("Library\\x64\\Winpplb.dll")]
///
/// 印出一行文字和加上跳號功能
///
/// X 座标
/// Y 座标
/// 列印方向定位,'0’是 0°,'1’是90°、'2’是180°,'3’是270°
/// 选择字形,1~5 选择常伫字形。
/// 水平放大比例,范围:1~24。
/// 垂直放大比例,范围:1~24。
///
/// 反白功能,'N’普通文字,'R’反白文字。
/// 资料字串,当尾端资料加上 格式为加上跳号功能,
/// Operation: + or - 记号,Number: 0 ~ 32768 数值。
///
///
/// 0 -> OK.
/// Reference BW-Error.txt file.
///
///
///B_Prn_Text(50, 110, 0, 4, 1, 1, ‘N’, “A123456”); //无跳号功能
///or
///B_Prn_Text(50, 110, 0, 4, 1, 1, ‘N’, “A123456<-1>”); //有跳号功能
///
public static extern int B_Prn_Text(int x, int y, int ori, int font, int hor_factor, int ver_factor, char mode, string data);
///
/// 打印出一行文字,使用中文字型档案 (1615 或 2424)
///
/// X 座标
/// Y 座标
/// 矩阵字型选择。0 -> 1615、1 -> 2424。
/// 给予一个识别名称存放于打印机内,以后直接使用 B_Load_Pcx() 即可将旧图呼叫出来。
/// 文字内容。
///
/// 0 -> OK.
///Reference BW-Error.txt file.
///
///
/// 这个 B_Prn_Text_Chinese 函数可以印出一行文字,使用中文点矩阵字型档案
///(1615 或 2424)。
///
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_Prn_Text_Chinese(int x, int y, int fonttype, string id_name, string data);
///
/// 打印Windows仿真字
///
///
///
///
///
///
///
///
///
///
///
///
///
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_Prn_Text_TrueType(int x, int y, int FSize, string FType,
int Fspin, int FWeight, int FItalic, int FUnline, int FStrikeOut, string id_name,
string data);
///
/// 打印出一行Windows仿真字,並控制字型的宽及高
///
/// X 座标, 单位: 像素
/// Y 座标, 单位: 像素
/// 字型高度,单位为点(dot)
/// 字型宽度,单位为点(dot)。FSize / FHeight / FWidth = (dpi * point) / 72.
/// TrueType font 字型名称。
/// TrueType font 字体旋转。1 -> 0, 2 -> 90, 3 -> 180, 4 -> 270
///
/// TrueType font 字体粗细。
/// 0 and NULL and 400 -> 400 标准、
/// 100 -> 非常细、200 -> 极细、
/// 300 -> 细 、500 -> 中等、
/// 600 -> 半粗 、700 -> 粗 、
/// 800 -> 特粗 、900 -> 黑体。
///
/// TrueType font 字体斜体。0 -> FALSE、1 -> TRUE。
/// TrueType font 字体加底线。0 -> FALSE、1 -> TRUE。
/// TrueType font 字体加删除线。0 -> FALSE、1 -> TRUE。
/// 给予一个识别名称存放于打印机内,以后直接使用 B_Load_Pcx() 即可将旧图呼叫出来。
///
/// 文字内容。
/// B_Prn_Text_TrueType_Uni()与B_Prn_Text_TrueType_UniB()所输入的data格式为UTF-8、
/// UTF-16或Unicode big endian之字串,且需为0结尾。
///
///
///0 -> OK.
///Reference BW-Error.txt file.
///
///
///这个 B_Prn_Text_TrueType() 函数可以印出一行 True Type Font 文字。
///
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_Prn_Text_TrueType_W(int x, int y, int FHeight, int FWidth,
string FType, int Fspin, int FWeight, int FItalic, int FUnline, int FStrikeOut,
string id_name, string data);
///
/// 设置转印模式、启动 Cutter 或 Peel
///
///
/// 打印机功能选项。
///1 -> 开启热转,关闭 Cutter 和 Peel。
///2 -> 开启热感,关闭 Cutter 和 Peel。
///3 -> 开启热感和 Cutter,关闭 Peel。
///4 -> 开启热感和 Peel,关闭 Cutter。
///5 -> 开启热转和 Cutter,关闭 Peel。
///6 -> 开启热转和 Peel,关闭 Cutter。
///
///
/// 0 -> OK.
/// Reference BW-Error.txt file.
///
///
/// B_Select_Option(1);
/// B_Select_Option2(3, 2);
///
///
/// B_Select_Option, B_Select_Option2函数可以选择不同 Printer 选项,使印
///表机依据这些选项工作。
///
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_Select_Option(int option);
///
/// 设置转印模式、启动 Cutter 或 Peel
///
///
///
///
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_Select_Option2(int option, int p);
///
/// 符号设定选择
///
/// 资料位元数量。8 是 8-bit data 和 7 是 7-bit data。
///
/// 符号设定。见下表:备注:工厂内定符号设定是 Code page 437(English)。
/// | 8 bit data | 7 bit data |
///|symbol| Code page |symbol| Code page |
/// | 0 |English(437) | 0 |USASCII |
/// | 1 |Latin(850) | 1 |British |
/// | 2 |Slavic(852) | 2 |German |
/// | 3 |Portugal(860) | 3 |French |
/// | 4 |Canadian?French(863)| 4 |Danish |
/// | 5 |Nordic(865) | 5 |Italian |
/// | | | 6 |Spanish |
/// | | | 7 |Swedish |
/// | | | 8 |Swiss |
/// csymbol;
///符号设定。见下表:备注:工厂内定符号设定是 Code page 437(English)。
///| 8 bit data | 7 bit data |
/// |symbol| Code page |symbol| Code page |
/// | 0 |English(437) | 0 |USASCII |
/// | 1 |Latin(850) | 1 |British |
///| 2 |Slavic(852) | 2 |German |
/// | 3 |Portugal(860) | 3 |French |
/// | 4 |Canadian/French(863)| 4 |Danish |
///| 5 |Nordic(865) | 5 |Italian |
/// | 6 |Turkish(857) | 6 |Spanish |
/// | 7 |Icelandic(861) | 7 |Swedish |
/// | 8 |Hebrew(862) | 8 |Swiss |
///| 9 |Cyrillic(855) | | |
///| 10 |Cyrillic CIS(866) | | |
///| 11 |Greek(737) | | |
///| 12 |Greek(851) | | |
///| 13 |Greek(869) | | |
///| A |Latin(1252) | | |
///| B |Latin(1250) | | |
///| C |Cyrillic(1251) | | |
///| D |Greek(1253) | | |
///| E |Turkish(1254) | | |
///| F |Hebrew(1255) | | |
///
/// KDU country code.
/// 0 -> OK.
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_Select_Symbol(int num_bit, int symbol, int country);
///
/// 符号设定选择
///
///
///
///
///
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_Select_Symbol2(int num_bit, string csymbol, int country);
///
/// 启动 Back feed
///
///
/// 功能选项,
/// “B” 关闭 Back feed。
/// “F” 启动 Back feed。
///它可吐出一定长度,让使用者看到印出结果。
///
/// 0 -> OK.
/// B_Set_Backfeed(‘B’);
/// 这个 B_Set_Backfeed 函数可以调整停止点。
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_Set_Backfeed(char option);
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_Set_Backfeed_Offset(int offset);
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_Set_CutPeel_Offset(int offset);
///
/// 储存影像图档
///
///
/// 1 -> 储存图档
///0 -> 不储存图档
///
/// 储存图档的名称
/// 0 -> OK.
/// B_Set_BMPSave(1, “C:\TempBMP.bmp”);
///
/// 这个 B_Set_BMPSave 函数,可以决定是否储存影像图档。
///
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_Set_BMPSave(int nSave, string strBMPFName);
///
/// 设置打印浓度
///
/// 设定打印头打印热度,范围:0~15,內定是 8。
/// 0 -> OK.
///
/// 這個 B_Set_Darkness 函数控制影像浓淡,想得到更好的印出品质,你应该
/// 考虑一些因素,印出图案样式、速度、耗材种类等。
///
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_Set_Darkness(int darkness);
///
/// 设置除错环境
///
///
/// 1 -> 除错环境致能
/// 0 -> 除错环境关闭
///
/// 0 -> OK.
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_Set_DebugDialog(int nEnable);
///
/// 设置打印方向
///
///
/// 设定列印方向,范围:B 和 T。它们是对角对称。内定是 T。
///
/// 0 -> OK.
///
/// B_Set_Direction(‘T’);
///
/// 这个 B_Set_Direction 函数设定列印方向,对整个版面内所有图形文字。
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_Set_Direction(char direction);
///
/// 储存并打印 FORM (表格)
///
/// 表格档案名称,可含路径。
/// 0 -> OK.
///B_Set_Form(“demo.prn”);
///
///这个 B_Set_Form 函数储存并列印 FORM (表格)。在使用这个函数时,须先
///在 B_Print_Form函数之前。使用此函数时,就必须执行 B_Print_Form()。
///
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_Set_Form(string formfile);
///
/// 同时设置标签长度及 GAP 长度
///
/// 在最后影像线段的标籤长度。单位 dot。
/// GAP 长度。当是连续纸时,必须设为 0。
/// 0 -> OK.
///
/// 这个 B_Set_Labgap 函数设定标籤长度及 GAP 长度。
///
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_Set_Labgap(int lablength, int gaplength);
///
/// 设置标签宽度
///
/// 标籤宽度。单位 dot。
/// 0 -> OK
///
/// 这个 B_Set_Labwidth 函数设定标籤宽度。当使用此函数,就不能使用 B_Set_Originpoint 函数。
///
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_Set_Labwidth(int labwidth);
///
/// 设置打印初始位置
///
/// 水平边界基点。单位 dot。
/// 垂直边界基点。单位 dot。
/// 0 -> OK.
///
/// B_Set_Originpoint(0, 0);
///
///
/// 这个 B_Set_Originpoint 函数使用重新设定起源点 X、Y 轴。
///
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_Set_Originpoint(int hor, int ver);
///
/// 设置 Serial Port
///
///
/// 鲍尔率,如下表:
///38 -> 38400
///19 -> 19200
///96 -> 9600
///48 -> 4800
///24 -> 2400
///57 -> 57600
///11 -> 115200
///
/// 。'O’是 odd,'E’是 even parity, 'N’是 none parity。
/// Data bit number,7 或 8。
/// Stop bit number,1 或 2。
/// 0 -> OK.
///
///VC:
/// B_Set_Prncomport(96, ‘N’, 8, 1);
///
///
/// 这个 B_Set_Prncomport 函数会设定打印机序列埠设定值,来改变打印机相同于
///PC 序列埠设定值,如果不同则无法与 PC 连接。此函数必须在函数 Print_Out
///之前执行,必须单独执行。
///
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_Set_Prncomport(int baud, char parity, int data, int stop);
///
/// 设置 PC 序列埠
///
///
/// 鲍尔率,如下表:
/// 1 -> 110 9 -> 19200
/// 2 -> 300 10 -> 38400
/// 3 -> 600 11 -> 56000
/// 4 -> 1200 12 -> 57600
/// 5 -> 2400 13 -> 115200
/// 6 -> 4800 14 -> 128000
/// 7 -> 9600 15 -> 256000
/// 8 -> 14400 0 -> 9600
///
///
/// Data bit number:
/// 0 -> 7-bit data
/// 7 -> 7-bit data
/// 8 -> 8-bit data
///
///
/// 0 -> none parity
/// 1 -> even parity
/// 2 -> odd parity
///
/// 1 stop bit
/// 1 -> 1 stop bit
/// 2 -> 2 stop bits
///
///
/// Setup hardware flow control
///1 -> DTR CONTROL HANDSHAKE;
///0 -> DTR CONTROL ENABLE;
///
///
/// Setup hardware flow control
/// 1 -> RTS CONTROL HANDSHAKE;
/// 0 -> RTS CONTROL ENABLE;
///
///
/// Setup software flow control
/// 0 -> Enable;
/// 1 -> Disable;
///
/// 0 -> OK.
///
/// B_Set_Prncomport_PC(0, 0, 0, 0, 0, 0, 0);
///
///
/// 这个 B_Set_Prncomport_PC 函数会设定 PC 序列埠设定值,来改变 PC 相同于打印机序列埠
///设定值,如果不同则无法与打印机连接。此函数必须在函数 B_Print_Out 之前执行。
///
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_Set_Prncomport_PC(int nBaudRate, int nByteSize, int nParity,
int nStopBits, int nDsr, int nCts, int nXonXoff);
///
/// 设置打印速度
///
///
/// 列印速度,范围:0~7。
///| speed Value | SPEED |
/// | 0 or 1 | 1 ips (25 mmps) |
/// | 2 | 2 ips (50 mmps) |
/// | 3 | 3 ips (75 mmps) |
///| 4 | 4 ips (100 mmps) |
/// | 5 | 5 ips (125 mmps) |
/// | 6 | 6 ips (150 mmps) |
/// | 7 | 7 ips (175 mmps) |
///
///
///
/// 这个 B_Set_Speed 函数设定列印速度,GT-2140最高速度可达4ips。
///
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_Set_Speed(int speed);
///
/// 开启或关闭进度对话框
///
///
/// 0 -> 关闭。
///1 -> 开启。
///
///
///
/// 这个 B_Set_ProcessDlg 函数可开关进度对话框
///
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_Set_ProcessDlg(int nShow);
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_Set_ErrorDlg(int nShow);
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_GetUSBBufferLen();
///
/// 枚举USB端口设备
///
///
///
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_EnumUSB(byte[] buf);
///
/// 开启USB打印端口
///
/// USB 传输埠, nPort由1开始
/// 0 :成功
///
/// 说明:用以开启USB打印机端口,开启成功后才可以打印标签内容。而这个函数必須在
/// B_EnumUSB()搜索到可用的USB打印机端口后,才能执行。
///
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_CreateUSBPort(int nPort);
///
/// 使打印机重开机
///
///
/// 0 -> OK.
///
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_ResetPrinter();
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_GetPrinterResponse(byte[] buf, int nMax);
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_TFeedMode(int nMode);
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_TFeedTest();
///
/// 开启端口進行传输
///
///
/// 选择输出埠种类。
/// 0 -> 档案
/// 1 -> Serial port
/// 2 -> Parallel prot
/// 4 -> USB port
/// 5 -> LAN port
/// 6 -> USB port
///
/// 选择输出埠编号。当 nPortType为 1 时, 1 -> com1, 2 -> com2,…
///
/// 当 nPortType 为 0 时,资料则输出至档案,filename 为档案名称,可含路径。
/// 当 nPortType 为 4 时,filename 指的是想开启的USB的index, index由1开始.
/// 当 nPortType 为 5 时,filename 指的是想开启的IP Address, 使用TCP/IP,
/// port 9100去开启.
/// 当 nPortType 为 6 时,filename 指的是想开启的USB的装置路径.
///
///
/// 0 -> OK.
///Reference BW-Error.txt file.
///
///
/// 说明: B_CreatePort() 函数会开启你选择的输出埠或开启你键入的输出档。
/// 而这个函数必须在所有函数之前执行。
/// B_CreatePrn(), B_CreateUSBPort(), B_CreateNetPort() 和 B_CreatePort() 不能同时使用。
///
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_CreatePort(int nPortType, int nPort, string filename);
///
/// 打印一個已存在打印机內的 FORM (表格),并输入 FORM 所有变数、计数资料
///
///
///
///
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_Execute_Form(string form_out, string var);
///
/// 打印 QR 條碼
///
/// X 坐标
/// Y 坐标
/// QR条码模式,范围:1,2 (若不符范围则打印机会采用预设值: 2)。
/// 条码尺寸,范围: 1~99 (若不符范围则打印机会采用预设值: 3)。
///
/// 错误校正等級。
/// L = Lower error correction, most data
///M = Default
///Q = Optimized for error correction over data
///H = Highest error correction, latest data
///
///
/// 資料輸入模式。
///A = 自動模式
///M = 手動模式
///(若不符範圍則印表機會採用預設值: A)
///
/// 項目 |Symbol Number| c | 1~16 |
/// 变数 | Divisions | d | 1~16 |
/// 范围 | Parity | p | 0~255|
/// 资料字串。
/// 0 -> OK.
/// B_Bar2d_QR 函數可以列印 QR 条码,支持中文字及日文字。
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_Bar2d_QR(int x, int y, int model, int scl, char error,
char dinput, int c, int d, int p, string data);
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_GetNetPrinterBufferLen();
///
/// 枚举 Net Printer设备
///
///
///
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_EnumNetPrinter(byte[] buf);
///
/// 使用 网路进行传输
///
/// USB 传输埠 ; LAN 传输埠, nPort由1开始.
///
/// 0 -> OK.
///Reference BW-Error.txt file.
///
///
///说明: B_CreateUSBPort() 和 B_CreateNetPort()函数会开启你选择的输出埠或
/// 开启你键入的输出档。而这个函数必须在所有函数之前执行。
/// B_CreatePrn(), B_CreateUSBPort() , B_CreateNetPort() 和 B_CreatePort() 不能同时使用。
///
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_CreateNetPort(int nPort);
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_Prn_Text_TrueType_Uni(int x, int y, int FSize, string FType,
int Fspin, int FWeight, int FItalic, int FUnline, int FStrikeOut, string id_name,
byte[] data, int format);
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_Prn_Text_TrueType_UniB(int x, int y, int FSize, string FType,
int Fspin, int FWeight, int FItalic, int FUnline, int FStrikeOut, string id_name,
byte[] data, int format);
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_GetUSBDeviceInfo(int nPort, byte[] pDeviceName,
out int pDeviceNameLen, byte[] pDevicePath, out int pDevicePathLen);
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_Set_EncryptionKey(string encryptionKey);
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_Check_EncryptionKey(string decodeKey, string encryptionKey,
int dwTimeoutms);
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_Set_CommTimeout(int ReadTotalTimeoutConstant, int WriteTotalTimeoutConstant);
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_Get_CommTimeout(out int ReadTotalTimeoutConstant, out int WriteTotalTimeoutConstant);
[DllImport("Library\\x64\\Winpplb.dll")]
public static extern int B_Set_LabelForSmartPrint(int lablength, int gaplength);
}
}