You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

100 lines
4.0 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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