只有网口才可以实时访问打印机状态的。并口不行,不过可以使用api获取操作系统返回的错误,比如卡纸等有限的状态。有时间去我博客看看里面有篇文章使用pos/esc指令的。/// <summary>
/// 通过串口返回当前打印机的状态。此函数是实时的。
/// </summary>
/// <param name="address"></param>
/// <returns></returns>
[DllImport("POSDLL.dll", SetLastError = true)]
public static extern IntPtr POS_RTQueryStatus(byte[] address); /// <summary>
/// 通过串口查询打印机当前的状态。此函数是非实时的。
/// </summary>
/// <param name="pszStatus">
/// 指向返回的状态数据的缓冲区,缓冲区大小为 1 个字节。
/// 0,1 0/1 容纸器中有纸 / 纸将用尽 2,3 0/1 打印头处有纸 / 无纸
/// 4,5 0/1 钱箱连接器引脚 3 的电平为低 / 高(表示打开或关闭)
/// 6,7 0 保留(固定为0)
/// </param>
/// <param name="nTimeouts">设置查询状态时大约的超时时间(毫秒)。</param>
/// <returns></returns>
[DllImport("POSDLL.dll", SetLastError = true)]
public static extern IntPtr POS_QueryStatus(byte[] pszStatus, int nTimeouts);
/// <summary>
/// 通过网络接口查询返回当前打印机的状态。
/// </summary>
/// <param name="ipAddress">设备IP地址。如“192.168.10.251”。</param>
/// <param name="pszStatus">
/// 指向接收返回状态的缓冲区,缓冲区大小为 1 个字节。
/// 0 0/1 钱箱连接器引脚 3 的电平为低/高(表示打开或关闭)
/// 1 0/1 打印机联机/脱机
/// 2 0/1 上盖关闭/打开
/// 3 0/1 没有/正在由Feed键按下而进纸
/// 4 0/1 打印机没有/有出错
/// 5 0/1 切刀没有/有出错
/// 6 0/1 有纸/纸将尽(纸将尽传感器探测)
/// 7 0/1 有纸/纸用尽(纸传感器探测)
/// </param>
/// <returns></returns>
[DllImport("POSDLL.dll", SetLastError = true)]
public static extern int POS_NETQueryStatus([MarshalAs(UnmanagedType.LPStr)]string ipAddress, out Byte pszStatus); //来自CSDN博客,转载请标明出处:http://blog.csdn.net/afeng124/archive/2010/05/20/5610614.aspx
/// 通过串口返回当前打印机的状态。此函数是实时的。
/// </summary>
/// <param name="address"></param>
/// <returns></returns>
[DllImport("POSDLL.dll", SetLastError = true)]
public static extern IntPtr POS_RTQueryStatus(byte[] address); /// <summary>
/// 通过串口查询打印机当前的状态。此函数是非实时的。
/// </summary>
/// <param name="pszStatus">
/// 指向返回的状态数据的缓冲区,缓冲区大小为 1 个字节。
/// 0,1 0/1 容纸器中有纸 / 纸将用尽 2,3 0/1 打印头处有纸 / 无纸
/// 4,5 0/1 钱箱连接器引脚 3 的电平为低 / 高(表示打开或关闭)
/// 6,7 0 保留(固定为0)
/// </param>
/// <param name="nTimeouts">设置查询状态时大约的超时时间(毫秒)。</param>
/// <returns></returns>
[DllImport("POSDLL.dll", SetLastError = true)]
public static extern IntPtr POS_QueryStatus(byte[] pszStatus, int nTimeouts);
/// <summary>
/// 通过网络接口查询返回当前打印机的状态。
/// </summary>
/// <param name="ipAddress">设备IP地址。如“192.168.10.251”。</param>
/// <param name="pszStatus">
/// 指向接收返回状态的缓冲区,缓冲区大小为 1 个字节。
/// 0 0/1 钱箱连接器引脚 3 的电平为低/高(表示打开或关闭)
/// 1 0/1 打印机联机/脱机
/// 2 0/1 上盖关闭/打开
/// 3 0/1 没有/正在由Feed键按下而进纸
/// 4 0/1 打印机没有/有出错
/// 5 0/1 切刀没有/有出错
/// 6 0/1 有纸/纸将尽(纸将尽传感器探测)
/// 7 0/1 有纸/纸用尽(纸传感器探测)
/// </param>
/// <returns></returns>
[DllImport("POSDLL.dll", SetLastError = true)]
public static extern int POS_NETQueryStatus([MarshalAs(UnmanagedType.LPStr)]string ipAddress, out Byte pszStatus); //来自CSDN博客,转载请标明出处:http://blog.csdn.net/afeng124/archive/2010/05/20/5610614.aspx
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货