///

///执行开钱箱操作

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

///

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,我汇总后写再上面的代码里面,大家一起用。

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

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

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.R ...

  2. C# 打开钱箱支持北洋、佳博、爱普生

    /// <summary>/// 执行开钱箱操作/// 没钱箱或打印机原功能都可以正常使用/// </summary>public void ExecuteOpenCashBo ...

  3. c# 中崎_C#版OPOS打印(基于北洋OPOS SDK二次开发包,支持EPSON和北洋、佳博、商祺等支持标准ESC/POS指令的POS打印机)...

    C#版OPOS打印(基于北洋OPOS SDK二次开发包,支持EPSON和北洋.佳博.商祺等支持标准ESC/POS指令的POS打印机) 收藏 C#版OPOS打印 基于北洋OPOS SDK二次开发包,支持 ...

  4. android lcd 显示图片,Android开发中通过AIDL文件中的方法打开钱箱,显示LCD屏幕

    下载相关 资源文件 ,在项目中新建如下层级的文件夹,将源文件中的AIDL文件放入其中. ICallback:打印服务执行结果的回调 ITax:打印服务执行结果的回调 ILcdCallback:顾显反馈 ...

  5. C#版OPOS打印(基于北洋OPOS SDK二次开发包,支持EPSON和北洋、佳博、商祺等支持标准ESC/POS指令的POS打印机)

     C#版OPOS打印 基于北洋OPOS SDK二次开发包,支持EPSON和北洋.佳博.商祺等支持标准ESC/POS指令的POS打印机 支持并口,串口,网口,USB口,驱动方式等多种端口 支持开关钱箱 ...

  6. 基于北洋OPOS SDK二次开发包,支持EPSON和北洋、佳博、商祺等支持标准ESC/POS指令的POS打印机

    C#版OPOS打印 基于北洋OPOS SDK二次开发包,支持EPSON和北洋.佳博.商祺等支持标准ESC/POS指令的POS打印机 支持并口,串口,网口,USB口,驱动方式等多种端口 支持开关钱箱 支 ...

  7. eclipse java shell 窗体显示 bat运行不显示_java eclipse中如何实现点击主窗口sShell中的按钮打开另外一个子窗口sShell...

    java eclipse中如何实现点击主窗口sShell中的按钮打开另外一个子窗口sShell 关注:97  答案:2  mip版 解决时间 2021-01-31 13:01 提问者╬═掵中注定 20 ...

  8. anaconda新建python2环境安装不了jupyterlab_Anaconda 5.0.0 JupyterLab 0.27.0 中配置多Python环境支持...

    Anaconda 5.0.0 JupyterLab 0.27.0 中配置多Python环境支持 概述 Anaconda 5.0.0 中自带了 JupyterLab 0.27.0 版本,这是 Anaco ...

  9. SQLServer附加数据库提示“版本为661,无法打开,支持655版本……”

    在我们使用别人导出的数据库的时候,有时候我们会通过附加数据库的方法,把别人导出的数据库附加到我们的电脑中,这时,或许你会遇到这种问题,附加时,提示版本为XXX,无法打开,支持AAA版本. 这是怎么回事 ...

  10. python中打开文件时只允许写入的模式是_详解python中各种文件打开模式

    在python中,总的来说有三种大的模式打开文件,分别是:a, w, r 当以a模式打开时,只能写文件,而且是在文件末尾添加内容. 当以a+模式打开时,可以写文件,也可读文件,可是在读文件的时候,会发 ...

最新文章

  1. 通俗易懂的讲解区块链
  2. JS DATE对象详解
  3. FPGA专有名词的积累
  4. ufldl学习笔记与编程作业:Multi-Layer Neural Network(多层神经网络+识别手写体编程)...
  5. 云服务器选ssd还是hdd_云服务器应该怎么选择?
  6. python中定义字典数据类型使用什么符号_python数据类型之字典类型-dict
  7. 民族融合 —— 魏晋南北朝
  8. 速看!不止零关税,RCEP的签订对普通百姓的影响都在这里
  9. 【图卷积网络】Graph Convolutional Network
  10. Python之nmap-ping扫描探测主机存活
  11. Flutter无限循环滑动的PageView
  12. python爬取boss直聘招聘信息_Python 爬取boss直聘招聘信息!
  13. Iscrool下拉刷新
  14. 王阳明:人心本是光明之镜 奈何因私欲黯淡无光
  15. 【算法与数据结构】—— 动态规划之背包问题
  16. IPSAN FCSAN理论比较
  17. 一个bug管理软件:BugFree
  18. 来我服的第一周学习总结 企业文化-网络通用技术
  19. 572. 另一棵树的子树————简单
  20. android的cooipad手机,苹果COO库克:Android平板电脑是大号智能手机

热门文章

  1. 此计算机缺少vc2005_spl_with_atl_fix_redist解决问题
  2. 《数据结构》C语言版 (清华严蔚敏考研版) 全书知识梳理
  3. wxPython 入门教程.
  4. ardupilot在Linux上设置SITL(FlightGear)
  5. Android知识大纲梳理
  6. 嵌入式C高质量编程培训心得笔记
  7. Python学习笔记
  8. 软考中级考试经验分享-系统集成项目管理工程师
  9. sitemap死链检测工具-免费sitemap死链检测抓取工具
  10. “仿QQ局域网聊天软件”项目-常用编程技巧总结