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); } }