namespace EC.AutoWeightServer.IfManager.Pos { public class PosManager { private int _portType { get; set; }//0 COM,1 LPT ,2 USB 3 ETH private int _printer { get; set; } private int _bitmapType { get; set; } private int _paperType { get; set; } = 1; //0 88m 1 58m 2 76m private int _result { get; set; } public PosManager() { } /// /// 打开设备 /// /// /// /// /// public bool OpenDevice(int portType, bool bFile = false, string path = "") { string lpName; _portType = portType; switch (portType) { case PosSDK.POS_PT_COM: lpName = "COM1:9600,N,8,1"; break; case PosSDK.POS_PT_LPT: lpName = "LPT1"; break; case PosSDK.POS_PT_USB: lpName = "SP-USB1"; break; case PosSDK.POS_PT_NET: lpName = "192.168.1.114"; break; default: lpName = "SP-USB1"; portType = PosSDK.POS_PT_USB; break; } _printer = PosSDK.POS_Port_OpenA(lpName, portType, bFile, path); SetResult(_printer); return _printer >= 0; } /// /// 关闭设备 /// /// public bool CloseDevice() { int ret = PosSDK.POS_Port_Close(_printer); SetResult(ret); _printer = PosSDK.POS_ES_INVALIDPARA; return ret == PosSDK.POS_ES_SUCCESS; } /// /// 设备是否连接 /// /// public bool IsConnected() { return _printer >= 0; } public int GetResult() { return _result; } private void SetResult(int ret) { _result = ret; } /// /// 初始化打印机 /// /// public bool InitPrinter() { int ret = PosSDK.POS_Control_ReSet(_printer); SetResult(ret); return ret == PosSDK.POS_ES_SUCCESS; } /// /// 选择字符对齐(居左/居中/居右)方式 /// /// 0:左对齐,1:居中,2:右对齐 /// public bool SetAlign(int alignType) { int ret = PosSDK.POS_Control_AlignType(_printer, alignType); SetResult(ret); return ret == PosSDK.POS_ES_SUCCESS; } /// /// 设置打印左边距和打印区域 /// /// 设置左边距,默认值为 0 /// 设置打印区域,默认值为 0 /// public bool SetLeftMargin(int iLeft, int iWidth) { int ret = PosSDK.POS_Control_SetPrintPosition(_printer, iLeft, iWidth); SetResult(ret); return ret == PosSDK.POS_ES_SUCCESS; } /// /// 缓冲数据 /// /// /// /// public bool PrintData(byte[] strBuff, int ilen) { int ret = PosSDK.POS_Output_PrintData(_printer, strBuff, ilen); SetResult(ret); return ret == PosSDK.POS_ES_SUCCESS; } /// /// 打印本地单色位图 /// /// 本地单色位图存储路径 /// public bool PrintBmp(string bmpPath) { int ret = PosSDK.POS_Output_PrintBmpDirectA(_printer, bmpPath); SetResult(ret); return ret == PosSDK.POS_ES_SUCCESS; } /// /// 打印格式化后的字符串 /// /// 0:选择标准 ASCII 字体A(12×24),1:选择压缩 ASCII 字体B(9×17) /// 0:取消加粗模式,1:选择加粗模式 /// 0:取消倍宽模式,1:选择倍宽模式 /// 0:取消倍高模式,1:选择倍高模式 /// 0:取消下划线模式,1:选择下划线模式 /// 以空字符结尾的字符串 /// public bool PrintStr(int iFont, int iThick, int iWidth, int iHeight, int iUnderLine, string lpstring) { int ret = PosSDK.POS_Output_PrintFontStringA(_printer, iFont, iThick, iWidth, iHeight, iUnderLine, lpstring); SetResult(ret); return ret == PosSDK.POS_ES_SUCCESS; } /// /// 打印缓冲区内容,进纸由参数 iLines 设置的行数并切纸 /// /// 0:全切,1:半切 /// 进纸行数 /// public bool CutPaper(int type = 0, int len = 1) { int ret = PosSDK.POS_Control_CutPaper(_printer, type, len); SetResult(ret); return ret == PosSDK.POS_ES_SUCCESS; } public bool Color24_GrayBW(string path1, string path2) { int ret = PosSDK.Color24_GrayBW(path1, path2); SetResult(ret); return ret == PosSDK.POS_ES_SUCCESS; } /// /// 是否纸尽 /// /// public bool IsPaperExhaust() { int ret = PosSDK.POS_Status_RTQueryTypeStatus(_printer, 4); SetResult(ret); return ret == PosSDK.POS_ES_PAPEROUT; } /// /// 是否将纸尽 /// /// public bool IsPaperWillExhaust() { int ret = PosSDK.POS_Status_RTQueryTypeStatus(_printer, 4); SetResult(ret); return ret == PosSDK.POS_ES_PAPERENDING; } } }