懂VC的请进,重谢100分,要快;帮忙改一句引用外部dll的代码。
VC的原型:
int POS_NETQueryStatus(char *ipAddress,char *pszStatus)
[参数]
ipAddress [in] 设备IP地址。如“192.168.10.251”。
pszStatus [out] 指向接收返回状态的缓冲区,缓冲区大小为 1 个字节。
返回的各状态位意义如下表所示:
Bit Status Meaning
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 有纸/纸用尽(纸传感器探测)
返回值
如果函数成功,则返回值为 POS_SUCCESS(1002)。
如果函数失败,则返回值为以下值之一:POS_FAIL(1001) POS_ERROR_INVALID_HANDLE
以下是小弟的代码:
/// <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 IntPtr POS_NETQueryStatus([MarshalAs(UnmanagedType.LPStr)]string ipAddress,Byte szStatus);
调用:
byte b_Result = new byte();
IntPtr handle = BeiYangOPOS.POS_NETQueryStatus("192.168.0.166", b_Result);
(int)handle 的值总是为1001(调用错误);
其实说了半天就是我不明白在C#里面跟C的char *对应的数据类型。有知道的吗,请指教!这个是小票打印机用的opos指令打印的dll.必须要连接了小票打印机才可以测试。