You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
206 lines
5.3 KiB
206 lines
5.3 KiB
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()
|
|
{
|
|
}
|
|
|
|
/// <summary>
|
|
/// 打开设备
|
|
/// </summary>
|
|
/// <param name="portType"></param>
|
|
/// <param name="bFile"></param>
|
|
/// <param name="path"></param>
|
|
/// <returns></returns>
|
|
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;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 关闭设备
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public bool CloseDevice()
|
|
{
|
|
int ret = PosSDK.POS_Port_Close(_printer);
|
|
SetResult(ret);
|
|
_printer = PosSDK.POS_ES_INVALIDPARA;
|
|
return ret == PosSDK.POS_ES_SUCCESS;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 设备是否连接
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public bool IsConnected()
|
|
{
|
|
return _printer >= 0;
|
|
}
|
|
|
|
public int GetResult()
|
|
{
|
|
return _result;
|
|
}
|
|
|
|
private void SetResult(int ret)
|
|
{
|
|
_result = ret;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 初始化打印机
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public bool InitPrinter()
|
|
{
|
|
int ret = PosSDK.POS_Control_ReSet(_printer);
|
|
SetResult(ret);
|
|
return ret == PosSDK.POS_ES_SUCCESS;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 选择字符对齐(居左/居中/居右)方式
|
|
/// </summary>
|
|
/// <param name="alignType">0:左对齐,1:居中,2:右对齐</param>
|
|
/// <returns></returns>
|
|
public bool SetAlign(int alignType)
|
|
{
|
|
int ret = PosSDK.POS_Control_AlignType(_printer, alignType);
|
|
SetResult(ret);
|
|
return ret == PosSDK.POS_ES_SUCCESS;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 设置打印左边距和打印区域
|
|
/// </summary>
|
|
/// <param name="iLeft">设置左边距,默认值为 0</param>
|
|
/// <param name="iWidth">设置打印区域,默认值为 0</param>
|
|
/// <returns></returns>
|
|
public bool SetLeftMargin(int iLeft, int iWidth)
|
|
{
|
|
int ret = PosSDK.POS_Control_SetPrintPosition(_printer, iLeft, iWidth);
|
|
SetResult(ret);
|
|
return ret == PosSDK.POS_ES_SUCCESS;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 缓冲数据
|
|
/// </summary>
|
|
/// <param name="strBuff"></param>
|
|
/// <param name="ilen"></param>
|
|
/// <returns></returns>
|
|
public bool PrintData(byte[] strBuff, int ilen)
|
|
{
|
|
int ret = PosSDK.POS_Output_PrintData(_printer, strBuff, ilen);
|
|
SetResult(ret);
|
|
return ret == PosSDK.POS_ES_SUCCESS;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 打印本地单色位图
|
|
/// </summary>
|
|
/// <param name="bmpPath">本地单色位图存储路径</param>
|
|
/// <returns></returns>
|
|
public bool PrintBmp(string bmpPath)
|
|
{
|
|
int ret = PosSDK.POS_Output_PrintBmpDirectA(_printer, bmpPath);
|
|
SetResult(ret);
|
|
return ret == PosSDK.POS_ES_SUCCESS;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 打印格式化后的字符串
|
|
/// </summary>
|
|
/// <param name="iFont">0:选择标准 ASCII 字体A(12×24),1:选择压缩 ASCII 字体B(9×17)</param>
|
|
/// <param name="iThick">0:取消加粗模式,1:选择加粗模式</param>
|
|
/// <param name="iWidth">0:取消倍宽模式,1:选择倍宽模式</param>
|
|
/// <param name="iHeight">0:取消倍高模式,1:选择倍高模式</param>
|
|
/// <param name="iUnderLine">0:取消下划线模式,1:选择下划线模式</param>
|
|
/// <param name="lpstring">以空字符结尾的字符串</param>
|
|
/// <returns></returns>
|
|
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;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 打印缓冲区内容,进纸由参数 iLines 设置的行数并切纸
|
|
/// </summary>
|
|
/// <param name="type">0:全切,1:半切</param>
|
|
/// <param name="len">进纸行数</param>
|
|
/// <returns></returns>
|
|
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;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 是否纸尽
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public bool IsPaperExhaust()
|
|
{
|
|
int ret = PosSDK.POS_Status_RTQueryTypeStatus(_printer, 4);
|
|
SetResult(ret);
|
|
return ret == PosSDK.POS_ES_PAPEROUT;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 是否将纸尽
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public bool IsPaperWillExhaust()
|
|
{
|
|
int ret = PosSDK.POS_Status_RTQueryTypeStatus(_printer, 4);
|
|
SetResult(ret);
|
|
return ret == PosSDK.POS_ES_PAPERENDING;
|
|
}
|
|
}
|
|
}
|