|
|
using System.Runtime.InteropServices;
|
|
|
using System.Text;
|
|
|
|
|
|
namespace POSV.Printer
|
|
|
{
|
|
|
public class YkPosDll
|
|
|
{
|
|
|
/// <summary>
|
|
|
/// 连接打印机设备
|
|
|
/// </summary>
|
|
|
/// <param name="iport">设备通信接口号,如COM1 - 1 COM2 - 2 如此类推</param>
|
|
|
/// <param name="baud">波特率 9600 , 38400 , 115200</param>
|
|
|
/// <returns>0 -- 成功 -1 -- 失败</returns>
|
|
|
[DllImport("YkPosdll.dll")]
|
|
|
public static extern int YkOpenDevice(int iport , int baud);
|
|
|
|
|
|
/// <summary>
|
|
|
/// 断开打印设备
|
|
|
/// </summary>
|
|
|
/// <returns>0 -- 成功 -1 -- 失败</returns>
|
|
|
[DllImport("YkPosdll.dll")]
|
|
|
public static extern int YkCloseDevice();
|
|
|
|
|
|
/// <summary>
|
|
|
/// 获取设备的操作句柄
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
[DllImport("YkPosdll.dll")]
|
|
|
public static extern int YkGetDeviceHandle();
|
|
|
|
|
|
/// <summary>
|
|
|
/// 设备是否已经到连接计算机(仅支持USB口打印机)
|
|
|
/// </summary>
|
|
|
/// <returns>>0 -- 连接 -1 -- 没有连接</returns>
|
|
|
[DllImport("YkPosdll.dll")]
|
|
|
public static extern int YkIsConnected();
|
|
|
|
|
|
/// <summary>
|
|
|
/// 初始化打印机 〈详见命令:ESC @〉
|
|
|
/// </summary>
|
|
|
/// <returns>0 -- 成功 -1 -- 失败</returns>
|
|
|
[DllImport("YkPosdll.dll")]
|
|
|
public static extern int YkInitPrinter();
|
|
|
|
|
|
/// <summary>
|
|
|
/// 把将要打印的字符串送入打印机缓冲区(注: 达到满行时会自动打印出来)
|
|
|
/// </summary>
|
|
|
/// <param name="pstr">将要送打印机的字符串数据缓冲</param>
|
|
|
/// <returns></returns>
|
|
|
[DllImport("YkPosdll.dll" , CharSet = CharSet.Ansi , EntryPoint = "YkPrintStr" , CallingConvention = CallingConvention.StdCall)]
|
|
|
public static extern int YkPrintStr([MarshalAs(UnmanagedType.LPStr)]StringBuilder pstr);
|
|
|
|
|
|
|
|
|
[DllImport("YkPosdll.dll" , CharSet = CharSet.Ansi , EntryPoint = "YkPrintRasterBmp" , CallingConvention = CallingConvention.StdCall)]
|
|
|
public static extern int YkPrintRasterBmp(string bmpfile);
|
|
|
|
|
|
|
|
|
[DllImport("YkPosdll.dll" , CharSet = CharSet.Ansi , EntryPoint = "YkDownloadBitmapAndPrint" , CallingConvention = CallingConvention.StdCall)]
|
|
|
public static extern int YkDownloadBitmapAndPrint(string bmpfile,int m);
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
/// 打印并换行,走纸到下一行首〈详见命令:LF〉
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
[DllImport("YkPosdll.dll")]
|
|
|
public static extern int YkFeedPaper();
|
|
|
|
|
|
/// <summary>
|
|
|
/// 获取打印机状态, 〈详见命令:DLE EOT n〉
|
|
|
/// </summary>
|
|
|
/// <param name="n">n = 1~5 </param>
|
|
|
/// <returns>0 -- 成功 -1 -- 失败</returns>
|
|
|
[DllImport("YkPosdll.dll")]
|
|
|
public static extern int YkGetStatus(byte n);
|
|
|
|
|
|
[DllImport("YkPosdll.dll")]
|
|
|
public static extern int YkGetPrinterStatus(byte n);
|
|
|
|
|
|
/// <summary>
|
|
|
/// 执行切纸动作,包括进纸 〈详见命令:GS V m〉
|
|
|
/// </summary>
|
|
|
/// <param name="m">m=66 n:打印机进纸到(切纸位置+ [n × 0.125 毫米{0.0049英寸}])并切纸</param>
|
|
|
/// <param name="n">一般n=0</param>
|
|
|
/// <returns>0 -- 成功 -1 -- 失败</returns>
|
|
|
[DllImport("YkPosdll.dll")]
|
|
|
public static extern int YkCutPaper(int m , int n);
|
|
|
|
|
|
/// <summary>
|
|
|
/// 设置钱箱驱动方式 〈详见命令: ESC p m t1 t2〉
|
|
|
/// </summary>
|
|
|
/// <param name="m">使用那个管脚输出脉冲 m=0 2脚 m=1 5脚 脉冲宽度为 t1*2ms t2*2ms ,其中要求 t1 < t2 ,一般 t1=150 t2=250</param>
|
|
|
/// <param name="t1"></param>
|
|
|
/// <param name="t2"></param>
|
|
|
/// <returns></returns>
|
|
|
[DllImport("YkPosdll.dll")]
|
|
|
public static extern int YkSetCashBoxDriveMode(int m , int t1 , int t2);
|
|
|
}
|
|
|
}
|