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