fix:统一采用AutoReplyPrint接口进行调用本地接口
This commit is contained in:
parent
4291244a1d
commit
02129e4db6
|
@ -3,8 +3,7 @@ package com.dpkj.modules.autoReplyPrint.service.impl;
|
|||
import com.dpkj.common.vo.Result;
|
||||
import com.dpkj.modules.autoReplyPrint.service.AutoReplyPrintService;
|
||||
import com.dpkj.modules.autoReplyPrint.utils.AutoReplyPrint;
|
||||
import com.dpkj.modules.autoReplyPrint.utils.AutoReplyPrint2;
|
||||
import com.dpkj.modules.autoReplyPrint.utils.MyLibrary;
|
||||
import com.sun.jna.Pointer;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
|
@ -13,17 +12,14 @@ import org.springframework.stereotype.Service;
|
|||
@Service
|
||||
public class AutoReplyPrintServiceImpl implements AutoReplyPrintService {
|
||||
|
||||
private AutoReplyPrint2.AutoReplyPrint2Sdk autoReplyPrint2Sdk = AutoReplyPrint2.getAutoReplyPrint2SDK();
|
||||
|
||||
public AutoReplyPrintServiceImpl() throws AutoReplyPrint2.AutoReplyPrint2RegistrationException {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Result<?> CPPrinterGetPrinterFirmwareVersion() {
|
||||
String s = MyLibrary.INSTANCE.CP_Printer_GetPrinterFirmwareVersion();
|
||||
Pointer pointer = AutoReplyPrint.INSTANCE.CP_Port_OpenUsb("VID:0x0FE6,PID:0x811E", 1);
|
||||
|
||||
//String s = autoReplyPrint2Sdk.CPPrinterGetPrinterFirmwareVersion();
|
||||
log.info("壁挂机打印机版本信息{}", s);
|
||||
return Result.ok(s);
|
||||
// log.info("壁挂机打印机版本信息{}", s);
|
||||
return Result.ok("");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -180,55 +180,282 @@ public interface AutoReplyPrint extends Library {
|
|||
int CP_Label_Color_White = 0;
|
||||
int CP_Label_Color_Black = 1;
|
||||
|
||||
/**
|
||||
* 获取开发包版本字符串
|
||||
*
|
||||
* @return 返回开发包版本
|
||||
*/
|
||||
String CP_Library_Version();
|
||||
|
||||
int CP_Port_EnumCom(byte[] var1, int var2, IntByReference var3);
|
||||
/**
|
||||
* 枚举本地串口
|
||||
*
|
||||
* @param pBuf 用来保存端口列表的缓冲区
|
||||
* @param cbBuf 缓冲区字节数
|
||||
* @param pcbNeeded 需要的缓冲区字节数
|
||||
* @return 枚举到的端口数量
|
||||
*/
|
||||
int CP_Port_EnumCom(byte[] pBuf, int cbBuf, IntByReference pcbNeeded);
|
||||
|
||||
int CP_Port_EnumLpt(byte[] var1, int var2, IntByReference var3);
|
||||
/**
|
||||
* 枚举本地并口
|
||||
*
|
||||
* @param pBuf 用来保存端口列表的缓冲区
|
||||
* @param cbBuf 缓冲区字节数
|
||||
* @param pcbNeeded 需要的缓冲区字节数
|
||||
* @return 枚举到的端口数量
|
||||
*/
|
||||
int CP_Port_EnumLpt(byte[] pBuf, int cbBuf, IntByReference pcbNeeded);
|
||||
|
||||
int CP_Port_EnumUsb(byte[] var1, int var2, IntByReference var3);
|
||||
/**
|
||||
* 枚举本地 USB 打印口
|
||||
*
|
||||
* @param pBuf 用来保存端口列表的缓冲区
|
||||
* @param cbBuf 缓冲区字节数
|
||||
* @param pcbNeeded 需要的缓冲区字节数
|
||||
* @return 枚举到的端口数量
|
||||
*/
|
||||
int CP_Port_EnumUsb(byte[] pBuf, int cbBuf, IntByReference pcbNeeded);
|
||||
|
||||
void CP_Port_EnumNetPrinter(int var1, IntByReference var2, CP_OnNetPrinterDiscovered_Callback var3, Pointer var4);
|
||||
/**
|
||||
* 枚举网络打印机
|
||||
*
|
||||
* @param timeout 超时毫秒时间
|
||||
* @param cancel 取消标记位,如果设为非零,则枚举提前退出
|
||||
* @param on_discovered 枚举回调接口
|
||||
* @param private_data 传给回调接口的参数
|
||||
* @return 无
|
||||
*/
|
||||
void CP_Port_EnumNetPrinter(int timeout, IntByReference cancel, CP_OnNetPrinterDiscovered_Callback on_discovered, Pointer private_data);
|
||||
|
||||
void CP_Port_EnumBtDevice(int var1, IntByReference var2, CP_OnBluetoothDeviceDiscovered_Callback var3, Pointer var4);
|
||||
/**
|
||||
* 枚举蓝牙打印机
|
||||
*
|
||||
* @param timeout 超时毫秒时间
|
||||
* @param cancel 取消标记位,如果设为非零,则枚举提前退出
|
||||
* @param on_discovered 枚举回调接口
|
||||
* @param private_data 传给回调接口的参数
|
||||
* @return 无
|
||||
*/
|
||||
void CP_Port_EnumBtDevice(int timeout, IntByReference cancel, CP_OnBluetoothDeviceDiscovered_Callback on_discovered, Pointer private_data);
|
||||
|
||||
void CP_Port_EnumBleDevice(int var1, IntByReference var2, CP_OnBluetoothDeviceDiscovered_Callback var3, Pointer var4);
|
||||
/**
|
||||
* 枚举 BLE 蓝牙打印机
|
||||
*
|
||||
* @param timeout 超时毫秒时间
|
||||
* @param cancel 取消标记位,如果设为非零,则枚举提前退出
|
||||
* @param on_discovered 枚举回调接口
|
||||
* @param private_data 传给回调接口的参数
|
||||
* @return 无
|
||||
*/
|
||||
void CP_Port_EnumBleDevice(int timeout, IntByReference cancel, CP_OnBluetoothDeviceDiscovered_Callback on_discovered, Pointer private_data);
|
||||
|
||||
Pointer CP_Port_OpenCom(String var1, int var2, int var3, int var4, int var5, int var6, int var7);
|
||||
/**
|
||||
* 打开串口
|
||||
*
|
||||
* @param name 端口名称,例如:COM1,COM2,COM3,...COM11...
|
||||
* @param baudrate 波特率,一般取 9600,19200,38400,57600,115200。
|
||||
* 需要和打印机波特率保持一致,建议使用高波特率以获得较好的打印速度
|
||||
* @param databits 数据位,范围[4,8]
|
||||
* @param parity 校验位,各值定义如下:
|
||||
* 值 定义
|
||||
* 0 无校验
|
||||
* 1 奇校验
|
||||
* 2 偶校验
|
||||
* 3 标记校验
|
||||
* 4 空白校验
|
||||
* @param stopbits 停止位,各值定义如下:
|
||||
* 值 定义
|
||||
* 0 1 位停止位
|
||||
* 1 1.5 位停止位
|
||||
* 2 2 位停止位
|
||||
* @param flowcontrol 流控制
|
||||
* @param autoreplymode 0 不开启自动回传模式,1 开启自动回传模式
|
||||
* 注意:仅部分机型支持自动回传模式,是否支持请询问卖家
|
||||
* 启动自动回传模式之后,打印机会自动回传状态
|
||||
* 不启动则无法自动获取打印机状态
|
||||
* @return 返回打开的端口句柄。非零表示打开成功,零表示打开失败。
|
||||
* 备注:如果串口被占用,打开串口会失败。
|
||||
* 如果波特率和打印机波特率不匹配,则无法打印。
|
||||
*/
|
||||
Pointer CP_Port_OpenCom(String name, int baudrate, int databits, int parity, int stopbits, int flowcontrol, int autoreplymode);
|
||||
|
||||
Pointer CP_Port_OpenLpt(String var1);
|
||||
/**
|
||||
* 打开并口
|
||||
*
|
||||
* @param name 端口名称,例如:LPT1,LPT2,LPT3...
|
||||
* @return 返回打开的端口句柄。非零表示打开成功,零表示打开失败。
|
||||
*
|
||||
* 备注:并口只有单向通讯,只可写不可读。
|
||||
* 一切查询状态的函数,对并口来说均是无效的。
|
||||
*/
|
||||
Pointer CP_Port_OpenLpt(String name);
|
||||
|
||||
Pointer CP_Port_OpenUsb(String var1, int var2);
|
||||
/**
|
||||
* 打开 USB
|
||||
*
|
||||
* @param name 端口名称,可由 EnumUsb 获得,也可以不指定,这时候,如果找到 USB 打印机,会直接打开
|
||||
* @param autoreplymode 0 不开启自动回传模式,1 开启自动回传模式
|
||||
* 注意:仅部分机型支持自动回传模式,是否支持请询问卖家
|
||||
* 启动自动回传模式之后,打印机会自动回传状态,不启动则无法自动获取打印机状态
|
||||
* @return 返回打开的端口句柄。非零表示打开成功,零表示打开失败。
|
||||
* 备注:USB 打印机接到电脑上,如果设备管理器中出现了 USB Printing Support,则可以使用该函数打开。
|
||||
*/
|
||||
Pointer CP_Port_OpenUsb(String name, int autoreplymode);
|
||||
|
||||
Pointer CP_Port_OpenTcp(String var1, String var2, short var3, int var4, int var5);
|
||||
/**
|
||||
* 打开网口
|
||||
*
|
||||
* @param local_ip 绑定到本地 IP,用于多网卡或多个本地 IP 时,选择指定的 IP,传入 0 表示不指定
|
||||
* @param dest_ip 地址或名称,例如:192.168.1.87
|
||||
* @param dest_port 端口号,固定值:9100
|
||||
* @param timeout 连接超时
|
||||
* @param autoreplymode 0 不开启自动回传模式,1 开启自动回传模式
|
||||
* 注意:仅部分机型支持自动回传模式,是否支持请询问卖家
|
||||
* 启动自动回传模式之后,打印机会自动回传状态,不启动则无法自动获取打印机状态
|
||||
* @return 返回打开的端口句柄。非零表示打开成功,零表示打开失败。
|
||||
* 备注:PC 和打印机需要同网段的才可以连接
|
||||
*/
|
||||
Pointer CP_Port_OpenTcp(String local_ip, String dest_ip, short dest_port, int timeout, int autoreplymode);
|
||||
|
||||
Pointer CP_Port_OpenBtSpp(String var1, int var2);
|
||||
/**
|
||||
* 通过 SPP 连接蓝牙打印机
|
||||
*
|
||||
* @param address 打印机地址,例如:"01:02:03:04:05:06"
|
||||
* @param autoreplymode 0 不开启自动回传模式,1 开启自动回传模式
|
||||
* 注意:仅部分机型支持自动回传模式,是否支持请询问卖家
|
||||
* 启动自动回传模式之后,打印机会自动回传状态
|
||||
* 不启动则无法自动获取打印机状态
|
||||
* @return 返回打开的端口句柄。非零表示打开成功,零表示打开失败。
|
||||
*
|
||||
* 备注:仅适用于 Android
|
||||
*/
|
||||
Pointer CP_Port_OpenBtSpp(String address, int autoreplymode);
|
||||
|
||||
Pointer CP_Port_OpenBtBle(String var1, int var2);
|
||||
/**
|
||||
* 通过 BLE 连接蓝牙打印机
|
||||
*
|
||||
* @param address 打印机地址,例如:"01:02:03:04:05:06"
|
||||
* @param autoreplymode 0 不开启自动回传模式,1 开启自动回传模式
|
||||
* 注意:仅部分机型支持自动回传模式,是否支持请询问卖家
|
||||
* 启动自动回传模式之后,打印机会自动回传状态,不启动则无法自动获取打印机状态
|
||||
* @return 返回打开的端口句柄。非零表示打开成功,零表示打开失败。
|
||||
*
|
||||
* 备注:仅适用于 Android、iOS、macOS
|
||||
*/
|
||||
Pointer CP_Port_OpenBtBle(String address, int autoreplymode);
|
||||
|
||||
int CP_Port_Write(Pointer var1, byte[] var2, int var3, int var4);
|
||||
/**
|
||||
* 向端口写入数据
|
||||
*
|
||||
* @param handle 端口句柄,由 OpenXXX 返回
|
||||
* @param buffer 要写入的数据
|
||||
* @param count 要写入的长度
|
||||
* @param timeout 写入超时毫秒
|
||||
* @return 返回写入的字节数,-1 表示写入失败
|
||||
*/
|
||||
int CP_Port_Write(Pointer handle, byte[] buffer, int count, int timeout);
|
||||
|
||||
int CP_Port_Read(Pointer var1, byte[] var2, int var3, int var4);
|
||||
/**
|
||||
* 从端口接收数据
|
||||
*
|
||||
* @param handle 端口句柄,由 OpenXXX 返回
|
||||
* @param buffer 接收数据的缓冲区
|
||||
* @param count 要接收的数据长度
|
||||
* @param timeout 读取超时毫秒
|
||||
* @return 返回读取的字节数,-1 表示失败
|
||||
*/
|
||||
int CP_Port_Read(Pointer handle, byte[] buffer, int count, int timeout);
|
||||
|
||||
int CP_Port_ReadUntilByte(Pointer var1, byte[] var2, int var3, int var4, byte var5);
|
||||
/**
|
||||
* 从端口接收数据直到指定字节
|
||||
*
|
||||
* @param handle 端口句柄,由 OpenXXX 返回
|
||||
* @param buffer 接收数据的缓冲区
|
||||
* @param count 要接收的数据长度
|
||||
* @param timeout 读取超时毫秒
|
||||
* @param breakByte 结束读取字符
|
||||
* @return 返回读取的字节数,-1 表示失败
|
||||
*/
|
||||
int CP_Port_ReadUntilByte(Pointer handle, byte[] buffer, int count, int timeout, byte breakByte);
|
||||
|
||||
int CP_Port_Available(Pointer var1);
|
||||
/**
|
||||
* 返回可读取的字节数
|
||||
*
|
||||
* @param handle 端口句柄,由 OpenXXX 返回
|
||||
* @return 返回可读取的字节数,-1 表示失败
|
||||
*/
|
||||
int CP_Port_Available(Pointer handle);
|
||||
|
||||
boolean CP_Port_SkipAvailable(Pointer var1);
|
||||
/**
|
||||
* 忽略接收缓冲区的数据
|
||||
*
|
||||
* @param handle 端口句柄,由 OpenXXX 返回
|
||||
* @return 成功返回 true,失败返回 false。
|
||||
*/
|
||||
boolean CP_Port_SkipAvailable(Pointer handle);
|
||||
|
||||
boolean CP_Port_IsConnectionValid(Pointer var1);
|
||||
/**
|
||||
* 连接是否有效
|
||||
*
|
||||
* @param handle 端口句柄,由 OpenXXX 返回
|
||||
* @return 如果端口已打开,且状态持续更新,则返回 true
|
||||
* 如果端口未打开,已关闭,或状态超过 6 秒未更新,则返回 false
|
||||
*/
|
||||
boolean CP_Port_IsConnectionValid(Pointer handle);
|
||||
|
||||
boolean CP_Port_IsOpened(Pointer var1);
|
||||
/**
|
||||
* 检查端口是否打开
|
||||
*
|
||||
* @param handle 端口句柄,由 OpenXXX 返回
|
||||
* @return 如果端口已打开,且连接未断开未关闭,则返回 true
|
||||
* 如果端口未打开,或连接已断开已关闭,则返回 false
|
||||
*/
|
||||
boolean CP_Port_IsOpened(Pointer handle);
|
||||
|
||||
boolean CP_Port_Close(Pointer var1);
|
||||
/**
|
||||
* 关闭端口
|
||||
*
|
||||
* @param handle 端口句柄,由 OpenXXX 返回
|
||||
* @return 成功返回 true,失败返回 false。
|
||||
*/
|
||||
boolean CP_Port_Close(Pointer handle);
|
||||
|
||||
boolean CP_Port_AddOnPortOpenedEvent(CP_OnPortOpenedEvent_Callback var1, Pointer var2);
|
||||
/**
|
||||
* 添加回调接口,端口打开成功
|
||||
*
|
||||
* @param event 回调接口
|
||||
* @param private_data 传给回调接口的参数
|
||||
* @return 成功返回 true,失败返回 false。
|
||||
*/
|
||||
boolean CP_Port_AddOnPortOpenedEvent(CP_OnPortOpenedEvent_Callback event, Pointer private_data);
|
||||
|
||||
boolean CP_Port_AddOnPortOpenFailedEvent(CP_OnPortOpenFailedEvent_Callback var1, Pointer var2);
|
||||
/**
|
||||
* 添加回调接口,端口打开失败
|
||||
*
|
||||
* @param event 回调接口
|
||||
* @param private_data 传给回调接口的参数
|
||||
* @return 成功返回 true,失败返回 false。
|
||||
*/
|
||||
boolean CP_Port_AddOnPortOpenFailedEvent(CP_OnPortOpenFailedEvent_Callback event, Pointer private_data);
|
||||
|
||||
boolean CP_Port_AddOnPortClosedEvent(CP_OnPortClosedEvent_Callback var1, Pointer var2);
|
||||
/**
|
||||
* 添加回调接口,端口关闭
|
||||
*
|
||||
* @param event 回调接口
|
||||
* @param private_data 传给回调接口的参数
|
||||
* @return 成功返回 true,失败返回 false。
|
||||
*/
|
||||
boolean CP_Port_AddOnPortClosedEvent(CP_OnPortClosedEvent_Callback event, Pointer private_data);
|
||||
|
||||
boolean CP_Port_AddOnPortWrittenEvent(CP_OnPortWrittenEvent_Callback var1, Pointer var2);
|
||||
/**
|
||||
* 添加回调接口,端口写入数据
|
||||
*
|
||||
* @param event 回调接口
|
||||
* @param private_data 传给回调接口的参数
|
||||
* @return 成功返回 true,失败返回 false。
|
||||
*/
|
||||
boolean CP_Port_AddOnPortWrittenEvent(CP_OnPortWrittenEvent_Callback event, Pointer private_data);
|
||||
|
||||
boolean CP_Port_AddOnPortReceivedEvent(CP_OnPortReceivedEvent_Callback var1, Pointer var2);
|
||||
|
||||
|
|
|
@ -1,60 +0,0 @@
|
|||
package com.dpkj.modules.autoReplyPrint.utils;
|
||||
|
||||
import com.sun.jna.Library;
|
||||
import com.sun.jna.Native;
|
||||
import com.sun.jna.Platform;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
@Slf4j
|
||||
public class AutoReplyPrint2 {
|
||||
|
||||
|
||||
public static AutoReplyPrint2Sdk getAutoReplyPrint2SDK() throws AutoReplyPrint2RegistrationException {
|
||||
try {
|
||||
return Native.load(GetLibraryPath_Helper.GetLibraryPath(), AutoReplyPrint2Sdk.class);
|
||||
} catch (UnsatisfiedLinkError e) {
|
||||
log.info("[AutoReplyPrint2][AutoReplyPrint2.getAutoReplyPrint2SDK] SDK注册失败 {}", e.getMessage());
|
||||
throw new AutoReplyPrint2RegistrationException("Failed to load AutoReplyPrint2Sdk library: ", e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 定义接口映射本地库中的函数。
|
||||
*/
|
||||
public interface AutoReplyPrint2Sdk extends Library {
|
||||
/**
|
||||
* 获取打印机固件版本
|
||||
* @return
|
||||
*/
|
||||
String CPPrinterGetPrinterFirmwareVersion();
|
||||
}
|
||||
|
||||
/**
|
||||
* 定义自定义异常类,用于表示注册控件时发生的错误
|
||||
*/
|
||||
public static class AutoReplyPrint2RegistrationException extends Exception {
|
||||
public AutoReplyPrint2RegistrationException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
public AutoReplyPrint2RegistrationException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
}
|
||||
}
|
||||
|
||||
public static class GetLibraryPath_Helper {
|
||||
public GetLibraryPath_Helper() {
|
||||
}
|
||||
|
||||
private static String GetLibraryPath() {
|
||||
if (Platform.isWindows()) {
|
||||
return Platform.is64Bit() ? "/autoreplyprint/win64/autoreplyprint.dll" : "/autoreplyprint/win32/autoreplyprint.dll";
|
||||
} else if (Platform.isLinux()) {
|
||||
return Platform.is64Bit() ? "/autoreplyprint/linux-x64/libautoreplyprint.so" : "/autoreplyprint/linux-x86/libautoreplyprint.so";
|
||||
} else {
|
||||
return Platform.isMac() ? "/autoreplyprint/mac/libautoreplyprint.so" : "autoreplyprint";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,11 +0,0 @@
|
|||
package com.dpkj.modules.autoReplyPrint.utils;
|
||||
|
||||
import com.sun.jna.Native;
|
||||
import com.sun.jna.win32.StdCallLibrary;
|
||||
|
||||
public interface MyLibrary extends StdCallLibrary {
|
||||
MyLibrary INSTANCE = (MyLibrary) Native.load("D:\\DPKJ\\yinyitong-zhongyuyuan-dll\\src\\main\\resources\\autoreplyprint\\win64\\autoreplyprint.dll", MyLibrary.class);
|
||||
|
||||
// 映射DLL中的函数
|
||||
String CP_Printer_GetPrinterFirmwareVersion();
|
||||
}
|
|
@ -1,13 +0,0 @@
|
|||
package com.dpkj.modules.autoReplyPrint.utils;
|
||||
|
||||
public class MyNativeClass {
|
||||
public static native void ICC_Reader_Open(String devName);
|
||||
|
||||
static {
|
||||
System.load("D:\\DPKJ\\yinyitong-zhongyuyuan-dll\\src\\main\\resources\\win32-x86\\UnPack.dll");
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
ICC_Reader_Open("USB1");
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue