c# 中崎_C# 打开钱箱支持北洋、佳博、爱普生

news/2024/11/29 9:42:30/

///

///执行开钱箱操作

///没钱箱或打印机原功能都可以正常使用

///

publicvoidExecuteOpenCashBoxOperate()

{

stringl_strDefaultPortName="";

stringl_strDefaultBrand="";

if(serverCommon.ReadLocalSet("PrintSet","UseCashBox","0")=="0")

{//如果不使用钱箱直接退出,默认不使用钱箱

return;

}

try

{

//获取默认打印机的相关信息

stringl_strSQL=string.Format("SELECT*fromWin32_Printerwheredefault=true");

ManagementObjectSearchersearcher=newManagementObjectSearcher(l_strSQL);

ManagementObjectCollectionprinters=searcher.Get();

foreach(ManagementObjectprintinprinters)

{

l_strDefaultPortName=print["PortName"].ToString();

l_strDefaultBrand=print["DriverName"].ToString();//驱动名称不能冲突做为识别牌子的标准

}

if(string.IsNullOrEmpty(l_strDefaultPortName))return;

stringl_strNetIP=serverCommon.ReadLocalSet("PrintSet","NetIP","192.168.0.31");

stringl_strNetPort=serverCommon.ReadLocalSet("PrintSet","NetPort","9100");

stringl_strBaudRate=serverCommon.ReadLocalSet("PrintSet","BaudRate","38400");

stringl_strDataBits=serverCommon.ReadLocalSet("PrintSet","DataBits","128");

intl_intPortCOM=Int32.Parse(serverCommon.ReadLocalSet("PrintSet","PortCOM","2"));

intl_intBaudRateCOM=Int32.Parse(serverCommon.ReadLocalSet("PrintSet","BaudRateCOM","9600"));

intl_intDataBitsCOM=Int32.Parse(serverCommon.ReadLocalSet("PrintSet","DataBitsCOM","8"));

if(l_strDefaultBrand.IndexOf("BTP")>-1&&l_strDefaultPortName.IndexOf("USB")>-1)

{

OpenBYCashBox();

}

elseif(l_strDefaultBrand.IndexOf("GP")>-1&&l_strDefaultPortName.IndexOf("IP")>-1)

{

OpenJBCashBox(l_strNetIP,l_strNetPort);

}

elseif(l_strDefaultBrand.IndexOf("EPSON")>-1)

{

OpenEPSONCashBox(l_intPortCOM,l_intBaudRateCOM,l_intDataBitsCOM);

//OpenEPSONCashBox(2,9600,8);

}

}

catch

{

}

finally

{//当WMI服务关闭的时候

}

}

privatevoidOpenBYCashBox()

{

boolIsOpen=false;

BeiYangOPOSBYOPOS=newBeiYangOPOS();

try

{

IsOpen=BYOPOS.OpenUSBPort("BYUSB-0");

if(IsOpen)

{

IntPtrres=BeiYangOPOS.POS_KickOutDrawer(0x00,100,80);

}

}

finally

{

BYOPOS.ClosePrinterPort();

}

}

privatevoidOpenJBCashBox(stringa_strNetIP,stringa_strPort)

{

IPAddressServeIP=IPAddress.Parse(a_strNetIP);

IPEndPointremoteEP=newIPEndPoint(ServeIP,Int32.Parse(a_strPort));

SocketclientSocket=newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);

try

{

clientSocket.Connect(remoteEP);

byte[]byteA=newbyte[]{0x1B,0x70,0x00,0x80,0xFF};//据说是佳博所有版本通用命令

//byte[]byteA=newbyte[]{0x10,0x14,0x01,0x01,0x03};

clientSocket.Send(byteA);

}

finally

{

clientSocket.Close();

}

}

privatevoidOpenEPSONCashBox(inta_strPortName,inta_intBaudRate,inta_intDataBits)

{

System.IO.Ports.SerialPortsp=newSystem.IO.Ports.SerialPort();

sp.PortName="COM"+a_strPortName.ToString();

sp.BaudRate=a_intBaudRate;

sp.DataBits=a_intDataBits;

sp.ReadTimeout=2000;

sp.Parity=System.IO.Ports.Parity.None;

sp.StopBits=System.IO.Ports.StopBits.OnePointFive;

try

{

sp.Open();

byte[]byteA={0x1B,0x70,0x00,0x45,0x45};

sp.Write(byteA,0,byteA.Length);

System.Threading.Thread.Sleep(100);

}

finally

{//如果端口被占用需要重新设置

sp.Close();

}

}

读取配置文件的类

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Linq;

usingSystem.Text;

usingSystem.Runtime.InteropServices;

usingSystem.IO.Ports;

usingSystem.Drawing.Printing;

namespace××××××××××××××

{

///

///北洋OPOS指令集二次开发包DLL调用

///

///备注:

///因为北洋的demo包里没有C#的,所以参考delphi包的代码转成了C#的.

///北洋的dll支持市面上所有的支持ESC/POS指令的小票打印机的打印(EPSON,佳博,中崎等)

///

///如果有任何修改请邮件通知本人,欢迎志同道合的朋友共同交流;

///coder:萧远峰mail:71008973@qq.com

///

///POSDLL动态库的出口函数是用来直接控制POS打印机工作的,

///分为四个部分:通用函数、标准模式打印函数、页模式打印函数、调试等函数。

///

publicclassBeiYangOPOS

{

conststring_DllVer="1.4";

privatestaticPrintDocumentfPrintDocument=newPrintDocument();

///

///获取动态库版本号

///

publicstringGetDllVer

{

get

{

return_DllVer;

}

}

///

///设备打开后的句柄

///

publicIntPtrPOS_IntPtr;

///

///函数返回值

///

publicuintPOS_SUCCESS=1001;//函数执行成功

publicuintPOS_FAIL=1002;//函数执行失败

publicuintPOS_ERROR_INVALID_HANDLE=1101;//端口或文件的句柄无效

publicuintPOS_ERROR_INVALID_PARAMETER=1102;//参数无效

publicuintPOS_ERROR_NOT_BITMAP=1103;//不是位图格式的文件

publicuintPOS_ERROR_NOT_MONO_BITMAP=1104;//位图不是单色的

publicuintPOS_ERROR_BEYONG_AREA=1105;//位图超出打印机可以处理的大小

publicuintPOS_ERROR_INVALID_PATH=1106;//没有找到指定的文件路径或名

///

///停止位

///

publicuintPOS_COM_ONESTOPBIT=0x00;//停止位为1

publicuintPOS_COM_ONE5STOPBITS=0x01;//停止位为1.5

publicuintPOS_COM_TWOSTOPBITS=0x02;//停止位为2

///

///奇偶校验

///

publicuintPOS_COM_NOPARITY=0x00;//无校验

publicuintPOS_COM_ODDPARITY=0x01;//奇校验

publicuintPOS_COM_EVENPARITY=0x02;//偶校验

publicuintPOS_COM_MARKPARITY=0x03;//标记校验

publicuintPOS_COM_SPACEPARITY=0x04;//空格校验

///

///其他COM口参数及端口类型定义

///

publicuintPOS_COM_DTR_DSR=0x00;//流控制为DTR/DST

publicuintPOS_COM_RTS_CTS=0x01;//流控制为RTS/CTS

publicuintPOS_COM_XON_XOFF=0x02;//流控制为XON/OFF

publicuintPOS_COM_NO_HANDSHAKE=0x03;//无握手

publicuintPOS_OPEN_PARALLEL_PORT=0x12;//打开并口通讯端口

publicuintPOS_OPEN_BYUSB_PORT=0x13;//打开USB通讯端口

publicuintPOS_OPEN_PRINTNAME=0X14;//打开打印机驱动程序

publicuintPOS_OPEN_NETPORT=0x15;//打开网络接口

publicuintPOS_CUT_MODE_FULL=0x00;//全切

publicuintPOS_CUT_MODE_PARTIAL=0x01;//半切

///

///打开POS机的端口开始会话

///

///

///指向以null结尾的打印机名称或端口名称。

///当参数nParam的值为POS_COM_DTR_DSR、POS_COM_RTS_CTS、POS_COM_XON_XOFF或POS_COM_NO_HANDSHAKE时,“COM1”,“COM2”,“COM3”,“COM4”等表示串口;

///当参数nParam的值为POS_OPEN_PARALLEL_PORT时,“LPT1”,“LPT2”等表示并口;

///当参数nParam的值为POS_OPEN_BYUSB_PORT时,“BYUSB-0”、“BYUSB-1”、“BYUSB-2”、“BYUSB-3”等表示USB端口。

///当参数nParam的值为POS_OPEN_PRINTNAME时,表示打开指定的打印机。

///当参数nParam的值为POS_OPEN_NETPORT时,表示打开指定的网络接口,如“192.168.10.251”表示网络接口IP地址

///串口通信需要的波特率

///串口通信需要的数据位

///串口通信需要的停止位

///串口通信需要的是否要奇偶校验

///指向以null结尾的打印机名称或端口名称。

///参数nParam的值为POS_COM_DTR_DSR、POS_COM_RTS_CTS、POS_COM_XON_XOFF或POS_COM_NO_HANDSHAKE时,

///“COM1”,“COM2”,“COM3”,“COM4”等表示串口;

///当参数nParam的值为POS_OPEN_PARALLEL_PORT时,“LPT1”,“LPT2”等表示并口;

///当参数nParam的值为POS_OPEN_BYUSB_PORT时,“BYUSB-0”、“BYUSB-1”、“BYUSB-2”、“BYUSB-3”等表示USB端口。

///当参数nParam的值为POS_OPEN_PRINTNAME时,表示打开指定的打印机。

///如果函数调用成功,返回一个已打开的端口句柄。如果函数调用失败,返回值为INVALID_HANDLE_VALUE(-1)。

[DllImport("POSDLL.dll",CharSet=CharSet.Ansi)]

publicstaticexternIntPtrPOS_Open([MarshalAs(UnmanagedType.LPStr)]stringlpName,

uintnComBaudrate,

uintnComDataBits,

uintnComStopBits,

uintnComParity,

uintnParam);

///

///关闭已经打开的并口或串口,USB端口,网络接口或打印机。

///

///

[DllImport("POSDLL.dll",SetLastError=true)]

publicstaticexternIntPtrPOS_Close();

///

///复位打印机,把打印缓冲区中的数据清除,字符和行高的设置被清除,打印模式被恢复到上电时的缺省模式。

///

///

[DllImport("POSDLL.dll",SetLastError=true)]

publicstaticexternIntPtrPOS_Reset();

///

///设置打印机的移动单位。

///

///把水平方向上的移动单位设置为25.4/nHorizontalMU毫米。可以为0到255。

///把垂直方向上的移动单位设置为25.4/nVerticalMU毫米。可以为0到255。

///

///如果函数成功,则返回值为POS_SUCCESS。

///如果函数失败,则返回值为以下值之一:POS_FAILPOS_ERROR_INVALID_HANDLEPOS_ERROR_INVALID_PARAMETER

[DllImport("POSDLL.dll",SetLastError=true)]

publicstaticexternIntPtrPOS_SetMotionUnit(uintnHorizontalMU,uintnVerticalMU);

///

///选择国际字符集和代码页

///

///

///指定国际字符集。不同的国际字符集对0x23到0x7E的ASCII码值对应的符号定义是不同的。

///可以为以下列表中所列值之一。

///0x00U.S.A0x01France0x02Germany0x03U.K.0x04DenmarkI0x05Sweden

///0x06Italy0x07SpainI0x08Japan0x09Nonway0x0ADenmarkII0x0BSpainII

///0x0CLatinAmerica0x0DKorea

///

///指定字符的代码页。不同的代码页对0x80到0xFF的ASCII码值对应的符号定义是不同的。

///0x00PC437[U.S.A.StandardEurope0x01Reserved0x02PC850[Multilingual]

///0x03PC860[Portuguese]0x04PC863[Canadian-French]0x05PC865[Nordic]

///0x12PC8520x13PC858

///

///

///如果函数成功,则返回值为POS_SUCCESS。

///如果函数失败,则返回值为以下值之一:POS_FAILPOS_ERROR_INVALID_HANDLEPOS_ERROR_INVALID_PARAMETER

[DllImport("POSDLL.dll",SetLastError=true)]

publicstaticexternIntPtrPOS_SetCharSetAndCodePage(uintnCharSet,uintnCodePage);

///

///POS字体样式

///

///

publicuintPOS_FONT_TYPE_STANDARD=0x00;//标准ASCII

publicuintPOS_FONT_TYPE_COMPRESSED=0x01;//压缩ASCII

publicuintPOS_FONT_TYPE_UDC=0x02;//用户自定义字符

publicuintPOS_FONT_TYPE_CHINESE=0x03;//标准“宋体”

publicuintPOS_FONT_STYLE_NORMAL=0x00;//正常

publicuintPOS_FONT_STYLE_BOLD=0x08;//加粗

publicuintPOS_FONT_STYLE_THIN_UNDERLINE=0x80;//1点粗的下划线

publicuintPOS_FONT_STYLE_THICK_UNDERLINE=0x100;//2点粗的下划线

publicuintPOS_FONT_STYLE_UPSIDEDOWN=0x200;//倒置(只在行首有效)

publicuintPOS_FONT_STYLE_REVERSE=0x400;//反显(黑底白字)

publicuintPOS_FONT_STYLE_SMOOTH=0x800;//平滑处理(用于放大时)

publicuintPOS_FONT_STYLE_CLOCKWISE_90=0x1000;//每个字符顺时针旋转90度

///

///把将要打印的字符串数据发送到打印缓冲区中,并指定X方向(水平)上的绝对起始点位置,

///指定每个字符宽度和高度方向上的放大倍数、类型和风格。

///

///指向以null结尾的字符串缓冲区

///指定X方向(水平)的起始点位置离左边界的点数。

///指定字符的宽度方向上的放大倍数。可以为1到6。

///指定字符高度方向上的放大倍数。可以为1到6。

///指定字符的字体类型。

///指定字符的字体风格。

///

[DllImport("POSDLL.dll",SetLastError=true)]

publicstaticexternIntPtrPOS_S_TextOut([MarshalAs(UnmanagedType.LPStr)]stringpszString,

uintnOrgx,uintnWidthTimes,uintnHeightTimes,

uintnFontType,uintnFontStyle);

///

///设置POS的打印模式(只有两种页模式和标准模式)

///

///

///POS_PRINT_MODE_STANDARD0x00标准模式(行模式)

///POS_PRINT_MODE_PAGE0x01页模式

///POS_PRINT_MODE_BLACK_MARK_LABEL0x02黑标记标签模式

///POS_PRINT_MODE_WHITE_MARK_LABEL0x03白标记标签模式

///

[DllImport("POSDLL.dll",SetLastError=true)]

publicstaticexternIntPtrPOS_SetMode(uintnPrintMode);

///

///设置字符的行高。

///

///指定行高点数。可以为0到255。每点的距离与打印头分辨率相关。

///

[DllImport("POSDLL.dll",SetLastError=true)]

publicstaticexternIntPtrPOS_SetLineSpacing(uintnDistance);

///

///设置字符的右间距(相邻两个字符的间隙距离)。

///

///指定右间距的点数。可以为0到255。每点的距离与打印头分辨率相关。

///

[DllImport("POSDLL.dll",SetLastError=true)]

publicstaticexternIntPtrPOS_SetRightSpacing(intnDistance);

///

///向前走纸。

///1.如果在标准打印模式(行模式)下打印文本,则打印缓冲区中的数据,且打印位置自动移动到下一行的行首。

///2.如果在标准打印模式(行模式)下打印位图,则在指定的位置打印位图,且打印位置自动移动到下一行的行首。

///3.如果在页模式或标签模式下,则把需要打印的数据设置在指定的位置,同时把打印位置移动到下一个行首,

///但是并不立即进纸并打印,而是一直到调用POS_PL_Print函数时才打印。

///

///

[DllImport("POSDLL.dll",SetLastError=true)]

publicstaticexternIntPtrPOS_FeedLine();

///

///打印头换n行

///

///

[DllImport("POSDLL.dll",SetLastError=true)]

publicstaticexternIntPtrPOS_FeedLines(uintnLines);

///

///切纸

///

///模式编号半切或是全切

///走位的距离

///

[DllImport("POSDLL.dll",SetLastError=true)]

publicstaticexternIntPtrPOS_CutPaper(uintnMode,uintnDistance);

///

///设置右边距

///

///右边距

///

[DllImport("POSDLL.dll",SetLastError=true)]

publicstaticexternIntPtrPOS_SetRightSpacing(uintnDistance);

///

///预下载一幅位图到打印机的RAM中,同时指定此位图的ID号。

///

///指向以null结尾的表示位图路径及其文件名的字符串。

///指定将要下载的位图的ID号。可以为0到7。

///

[DllImport("POSDLL.dll",SetLastError=true)]

publicstaticexternIntPtrPOS_PreDownloadBmpToRAM([MarshalAs(UnmanagedType.LPStr)]stringpszPath,uintnID);

///

///下载并打印位图

///

///指向以null结尾的包含位图文件路径及其名称的字符串。

///指定将要打印的位图和左边界的距离点数。可以为0到65535点。

///指定位图的打印模式。

///

[DllImport("POSDLL.dll",SetLastError=true)]

publicstaticexternIntPtrPOS_S_DownloadAndPrintBmp([MarshalAs(UnmanagedType.LPStr)]stringpszPath,uintnOrgx,uintnMode);

[DllImport("POSDLL.dll",SetLastError=true)]

publicstaticexternIntPtrPOS_S_PrintBmpInRAM(uintnID,uintnOrgx,uintnMode);

[DllImport("POSDLL.dll",SetLastError=true)]

publicstaticexternIntPtrPOS_S_PrintBmpInFlash(uintnID,uintnOrgx,uintnMode);

///

///通过串口返回当前打印机的状态。此函数是实时的。

///

///

///

[DllImport("POSDLL.dll",SetLastError=true)]

publicstaticexternIntPtrPOS_RTQueryStatus(byte[]address);

///

///通过串口查询打印机当前的状态。此函数是非实时的。

///

///

///指向返回的状态数据的缓冲区,缓冲区大小为1个字节。

///0,10/1容纸器中有纸/纸将用尽2,30/1打印头处有纸/无纸

///4,50/1钱箱连接器引脚3的电平为低/高(表示打开或关闭)

///6,70保留(固定为0)

///

///设置查询状态时大约的超时时间(毫秒)。

///

[DllImport("POSDLL.dll",SetLastError=true)]

publicstaticexternIntPtrPOS_QueryStatus(byte[]pszStatus,intnTimeouts);

///

///通过网络接口查询返回当前打印机的状态。

///

///设备IP地址。如“192.168.10.251”。

///

///指向接收返回状态的缓冲区,缓冲区大小为1个字节。

///00/1钱箱连接器引脚3的电平为低/高(表示打开或关闭)

///10/1打印机联机/脱机

///20/1上盖关闭/打开

///30/1没有/正在由Feed键按下而进纸

///40/1打印机没有/有出错

///50/1切刀没有/有出错

///60/1有纸/纸将尽(纸将尽传感器探测)

///70/1有纸/纸用尽(纸传感器探测)

///

///

[DllImport("POSDLL.dll",SetLastError=true)]

publicstaticexternintPOS_NETQueryStatus([MarshalAs(UnmanagedType.LPStr)]stringipAddress,outBytepszStatus);

///

///设置并打印条码。

///

///指向以null结尾的字符串。每个字符允许的范围和格式与具体条码类型有关。

///指定将要打印的条码的水平起始点与左边界的距离点数。可以为0到65535。

///

///指定条码的类型。可以为以下列表中所列值之一。

///POS_BARCODE_TYPE_UPC_A0x41UPC-APOS_BARCODE_TYPE_UPC_E0x42UPC-C

///POS_BARCODE_TYPE_JAN130x43JAN13(EAN13)POS_BARCODE_TYPE_JAN80x44JAN8(EAN8)

///POS_BARCODE_TYPE_CODE390x45CODE39POS_BARCODE_TYPE_ITF0x46INTERLEAVED2OF5

///POS_BARCODE_TYPE_CODEBAR0x47CODEBARPOS_BARCODE_TYPE_CODE930x4825

///POS_BARCODE_TYPE_CODE1280x49CODE128

///

///指定条码的基本元素宽度。

///20.25mm0.25mm0.625mm30.375mm0.375mm1.0mm40.5mm0.5mm1.25mm

///50.625mm0.625mm1.625mm60.75mm0.75mm1.875mm

///

///指定条码的高度点数。可以为1到255。默认值为162点。

///

///指定HRI(HumanReadableInterpretation)字符的字体类型。可以为以下列表中所列值之一。

///POS_FONT_TYPE_STANDARD0x00标准ASCIIPOS_FONT_TYPE_COMPRESSED0x01压缩ASCII

///

///

///指定HRI(HumanReadableInterpretation)字符的位置。

///POS_HRI_POSITION_NONE0x00不打印POS_HRI_POSITION_ABOVE0x01只在条码上方打印

///POS_HRI_POSITION_BELOW0x02只在条码下方打印POS_HRI_POSITION_BOTH0x03条码上、下方都打印

///

///指定由参数pszInfoBuffer指向的字符串个数,即将要发送给打印机的字符总数。具体值与条码类型有关。

///

[DllImport("POSDLL.dll",SetLastError=true)]

publicstaticexternIntPtrPOS_S_SetBarcode([MarshalAs(UnmanagedType.LPStr)]stringpszInfo,

uintnOrgx,uintnType,uintnWidthX,uintnheight,

uintnHriFontType,uintnHriFontPosition,uintnBytesOfInfo);

[DllImport("POSDLL.dll",SetLastError=true)]

publicstaticexternIntPtrPOS_PL_SetArea(uintnOrgx,uintnOrgY,uintnWidth,uintnheight,uintnDirection);

[DllImport("POSDLL.dll",SetLastError=true)]

publicstaticexternIntPtrPOS_PL_TextOut([MarshalAs(UnmanagedType.LPStr)]stringpszString,uintnOrgx,uintnOrgY,

uintnWidthTimes,uintnHeightTimes,uintnFontType,uintnFontStyle);

[DllImport("POSDLL.dll",SetLastError=true)]

publicstaticexternIntPtrPOS_PL_PrintBmpInRAM(uintnID,uintnOrgx,uintnOrgY,uintnMode);

[DllImport("POSDLL.dll",SetLastError=true)]

publicstaticexternIntPtrPOS_PL_PrintBmpInFlash(uintnID,uintnOrgx,uintnOrgY,uintnMode);

[DllImport("POSDLL.dll",SetLastError=true)]

publicstaticexternIntPtrPOS_PL_SetBarcode([MarshalAs(UnmanagedType.LPStr)]stringpszInfo,

uintnOrgx,uintnOrgY,uintnType,uintnWidthX,uintnheight,

uintnHriFontType,uintnHriFontPosition,uintnBytesOfInfo);

[DllImport("POSDLL.dll",SetLastError=true)]

publicstaticexternIntPtrPOS_PL_Clear();

[DllImport("POSDLL.dll",SetLastError=true)]

publicstaticexternIntPtrPOS_PL_Print();

///

///往钱箱引脚发送脉冲以打开钱箱。

///

///指定钱箱的引脚。0x00钱箱连接器引脚20x01钱箱连接器引脚5

///指定往钱箱发送的高电平脉冲保持时间,即nOnTimes×2毫秒。可以为1到255。

///指定往钱箱发送的低电平脉冲保持时间,即nOffTimes×2毫秒。可以为1到255。

///

[DllImport("POSDLL.dll",SetLastError=true)]

publicstaticexternIntPtrPOS_KickOutDrawer(uintnID,uintnOnTimes,uintnOffTimes);

///

///新建一个打印作业。

///

///

[DllImport("POSDLL.dll",SetLastError=true)]

publicstaticexternboolPOS_StartDoc();

///

///结束一个打印作业。

///

///

[DllImport("POSDLL.dll",SetLastError=true)]

publicstaticexternboolPOS_EndDoc();

///

///发送数据到端口或文件。通用端口打印可以使用此函数一般不能设置字体大小样式等

///

///端口或文件句柄。可以通过POS_Open来获取

///指向将要发送的数据缓冲区。

///指定将要发送的数据的字节数。

///

[DllImport("POSDLL.dll",SetLastError=true)]

publicstaticexternIntPtrPOS_WriteFile(IntPtrhPort,byte[]pszData,uintnBytesToWrite);

///

///从串口,或USB端口或文件读数据到指定的缓冲区。

///

///端口或文件句柄。可以通过POS_Open来获取

///指向将要读取的数据缓冲区。

///数据的字节数

///可能是读取数据的间隔时间

///

[DllImport("POSDLL.dll",SetLastError=true)]

publicstaticexternIntPtrPOS_ReadFile(IntPtrhPort,byte[]pszData,uintnBytesToRead,uintnTimeouts);

///

///打开打印设备的串口

///

///串口对象(需要先初始化并测试参数都有效的情况下,传进来)

///是否打开成功

publicboolOpenComPort(refSerialPortPrintSerialPort)

{

uinti_stopbits=0;

if(PrintSerialPort.StopBits==StopBits.One)

i_stopbits=POS_COM_ONESTOPBIT;

if(PrintSerialPort.StopBits==StopBits.OnePointFive)

i_stopbits=POS_COM_ONE5STOPBITS;

if(PrintSerialPort.StopBits==StopBits.Two)

i_stopbits=POS_COM_TWOSTOPBITS;

uinti_nComParity=0;

if(PrintSerialPort.Parity==Parity.None)

i_nComParity=POS_COM_NOPARITY;

if(PrintSerialPort.Parity==Parity.Even)

i_nComParity=POS_COM_EVENPARITY;

if(PrintSerialPort.Parity==Parity.Odd)

i_nComParity=POS_COM_ODDPARITY;

if(PrintSerialPort.Parity==Parity.Space)

i_nComParity=POS_COM_SPACEPARITY;

if(PrintSerialPort.Parity==Parity.Mark)

i_nComParity=POS_COM_MARKPARITY;

uinti_para=0;

if(PrintSerialPort.Handshake==Handshake.None)

i_para=POS_COM_NO_HANDSHAKE;

if(PrintSerialPort.Handshake==Handshake.RequestToSend)

i_para=POS_COM_DTR_DSR;

if(PrintSerialPort.Handshake==Handshake.RequestToSendXOnXOff)

i_para=POS_COM_RTS_CTS;

if(PrintSerialPort.Handshake==Handshake.XOnXOff)

i_para=POS_COM_XON_XOFF;

POS_IntPtr=POS_Open(PrintSerialPort.PortName,

(uint)PrintSerialPort.BaudRate,

(uint)PrintSerialPort.DataBits,

i_stopbits,i_nComParity,i_para);

if((int)POS_IntPtr!=-1)

returntrue;

else

returnfalse;

}

///

///打开打印设备并口

///

///并口名称

///是否打开成功

publicboolOpenLPTPort(stringLPTPortName)

{

POS_IntPtr=POS_Open(LPTPortName,0,0,0,0,POS_OPEN_PARALLEL_PORT);

if((int)POS_IntPtr!=-1)

returntrue;

else

returnfalse;

}

///

///打开打印设备的网口

///

///设备的IP地址

///是否打开成功

publicboolOpenNetPort(stringIPAddress)

{

POS_IntPtr=POS_Open(IPAddress,0,0,0,0,POS_OPEN_NETPORT);

if((int)POS_IntPtr!=-1)

returntrue;

else

returnfalse;

}

///

///打开打印设备的USB端口

///

///“BYUSB-0”、“BYUSB-1”、“BYUSB-2”、“BYUSB-3”

///是否打开成功

publicboolOpenUSBPort(stringUSBPortName)

{

POS_IntPtr=POS_Open(USBPortName,0,0,0,0,POS_OPEN_BYUSB_PORT);

if((int)POS_IntPtr!=-1)

returntrue;

else

returnfalse;

}

///

///使用windows打印驱动程序来驱动OPOS设备

///

///打印驱动程序对应的打印机名称

///是否打开成功

publicboolOpenPrinter(stringPrintName)

{

POS_IntPtr=POS_Open(PrintName,0,0,0,0,POS_OPEN_PRINTNAME);

if((int)POS_IntPtr!=-1)

returntrue;

else

returnfalse;

}

///

///关闭设备端口

///

///是否关闭成功

publicboolClosePrinterPort()

{

IntPtrtmpIntPtr=POS_Close();

return((uint)tmpIntPtr==POS_SUCCESS);

}

///

///获取本机默认打印机名称

///

publicstaticStringDefaultPrinter

{

get

{

returnfPrintDocument.PrinterSettings.PrinterName;

}

}

///

///获取本机的打印机列表。列表中的第一项就是默认打印机。

///

publicstaticListGetLocalPrinters()

{

ListfPrinters=newList();

fPrinters.Add(DefaultPrinter);//默认打印机始终出现在列表的第一项

foreach(StringfPrinterNameinPrinterSettings.InstalledPrinters)

{

if(!fPrinters.Contains(fPrinterName))

fPrinters.Add(fPrinterName);

}

returnfPrinters;

}

}

}

ViewCode

所引用的dll文件

这是年初写的一个打开钱箱的工具,北洋的网上有现成的代码,现在只写了其它的,网络端口的需要重新配置,串口的是用发命令的方式打开的。

不是支持所有钱箱,请大家合理利用,需要对开启WMI服务,一般都开启的,不需要管。

如果您手头的代码用到了其它钱箱,请用邮箱发给我,左上角的QQ,我汇总后写再上面的代码里面,大家一起用。


http://www.ppmy.cn/news/668608.html

相关文章

【Python爬虫】Python爬虫三大基础模块(urllib BS4 Selenium)

【Python爬虫】Python爬虫三大基础模块(urllib & BS4 & Selenium) 文章目录 【Python爬虫】Python爬虫三大基础模块(urllib & BS4 & Selenium)一、Python爬虫的基本知识1、网络爬虫是什么?1&#xff0…

《综合与Design_Compiler》学习笔记——第一章综合综述 第二章verilog语言结构到门级的映射 第三章 使用DC进行综合

文章目录 前言一、综合综述1、综合2、综合的不同层次(1)逻辑级综合(2)RTL级综合(3)行为级综合 二、verilog语言结构到门级的映射三、使用DC进行综合1、定义2、写时序约束3、写环境约束(1&#x…

数据结构Java实现02--数组、链表和动态数组

2.数组和链表 2.1 数组 数组 Array 是一种线性数据结构,其将相同类型元素存储在连续的内存空间中。我们将元素在数组中的位置称为元素的索引 index。 数组初始化。一种给定初始值,称为静态初始化。 /*以下两种方式均可静态初始化*/ int[] nums new …

玩转C++调试之Python的GDB库增强

玩转C调试之Python的GDB库增强 0.导语 调试是软件开发过程中不可或缺的一环,而GDB(GNU调试器)作为一款功能强大的调试工具,在开发者中得到广泛应用。除了传统的命令行调试功能外,GDB还提供了Python的GDB库,…

小米一元流量magisk_薅不了羊毛了?小米一元流量业务即将停止运营

原标题:薅不了羊毛了?小米一元流量业务即将停止运营 8月2日消息,小米最新的官方公告显示,此前推出的“小米一元流量”业务,将于8月25日停止运营,用户余额将在9月30日前全额退还。对此,官方给出的…

流量卡之家:5G到来的前夕 国内运营商为什么取消“不限量套餐”

近日流量卡之家了解到,在国内5G即将落地的大环境之下,中国电信宣布将会取消不限量套餐,或者准确的说是取消达量限速套餐,另外其他两家运营商中国移动和中国联通也表态会跟进。对于运营商这样的做法,外界议论纷纷也看法…

GPRS无限流量卡

GPRS无限流量卡 编辑 GPRS无限流量手机卡是由中国移动通信集团公司在2006年2月1日前发行的的手机卡,由于无限卡数量少,使用稳定不限速,双接入点不扣钱,大部分广东无限卡还包无限彩信等优点,已经成为广大无限卡用户的首…

JAVA运营商项目怎么样,运营商套餐的那些坑

“不限量”里有“套路” 从2017年初中国联通推出所谓“不限流量”的冰淇淋套餐开始,几家运营商就纷纷效仿,试水提供相似服务,其宣传语是让用户以更低的单位资费使用移动网络的服务。然而,在实际使用中,用户却发现套餐并…