HGScannerLib增加python demo
This commit is contained in:
parent
6e790922eb
commit
aa1545255a
|
@ -0,0 +1,89 @@
|
|||
import ctypes
|
||||
import time
|
||||
from ctypes import *
|
||||
|
||||
class HGLibSaveImageParam(Structure):
|
||||
_fields_ = [ ("size", c_ulong),
|
||||
("jpegQuality", c_ulong),
|
||||
("tiffCompression", c_ulong),
|
||||
("tiffJpegQuality", c_ulong),
|
||||
("ocr", c_int)]
|
||||
|
||||
Objdll = ctypes.WinDLL("D:/sane/code_app/test/scannerlib/HWScannerLib.dll")
|
||||
|
||||
HGLib_LoadImage = Objdll.HGLib_LoadImage
|
||||
HGLib_LoadImage.argtypes = [ctypes.c_char_p]
|
||||
HGLib_LoadImage.restype = ctypes.c_void_p
|
||||
Image = HGLib_LoadImage(c_char_p(b"d:/1.jpg"))
|
||||
|
||||
HGLib_SaveImage = Objdll.HGLib_SaveImage
|
||||
HGLib_SaveImage.argtypes = [ctypes.c_void_p, ctypes.c_char_p, POINTER(HGLibSaveImageParam)]
|
||||
HGLib_SaveImage.restype = ctypes.c_int
|
||||
ImageParam = HGLibSaveImageParam()
|
||||
ImageParam.size = 20
|
||||
ImageParam.jpegQuality = 100
|
||||
ImageParam.tiffCompression = 0
|
||||
ImageParam.tiffJpegQuality = 0
|
||||
ImageParam.ocr = 0
|
||||
Ret = HGLib_SaveImage(Image, c_char_p(b"d:/2.jpg"), pointer(ImageParam))
|
||||
|
||||
HGLib_ReleaseImage = Objdll.HGLib_ReleaseImage
|
||||
HGLib_ReleaseImage.argtypes = [ctypes.c_void_p]
|
||||
HGLib_ReleaseImage.restype = ctypes.c_int
|
||||
Ret = HGLib_ReleaseImage(Image)
|
||||
|
||||
|
||||
def HGLibDeviceHotPlugEventFunc(event: c_ulong, deviceName: c_char_p, param: c_void_p):
|
||||
print(deviceName)
|
||||
return
|
||||
|
||||
FuncType = CFUNCTYPE(None, c_ulong, c_char_p, c_void_p)
|
||||
cb = FuncType(HGLibDeviceHotPlugEventFunc)
|
||||
HGLib_InitDevice = Objdll.HGLib_InitDevice
|
||||
HGLib_InitDevice.argtypes = [FuncType, c_void_p]
|
||||
HGLib_InitDevice.restype = ctypes.c_int
|
||||
Ret = HGLib_InitDevice(cb, 0)
|
||||
|
||||
time.sleep(1)
|
||||
|
||||
HGLib_GetDeviceNameList = Objdll.HGLib_GetDeviceNameList
|
||||
HGLib_GetDeviceNameList.argtypes = []
|
||||
HGLib_GetDeviceNameList.restype = POINTER(ctypes.c_char_p)
|
||||
DeviceNameList = HGLib_GetDeviceNameList()
|
||||
|
||||
HGLib_OpenDevice = Objdll.HGLib_OpenDevice
|
||||
HGLib_OpenDevice.argtypes = [ctypes.c_char_p]
|
||||
HGLib_OpenDevice.restype = ctypes.c_void_p
|
||||
Device = HGLib_OpenDevice(DeviceNameList[0])
|
||||
|
||||
HGLib_SetDeviceParam = Objdll.HGLib_SetDeviceParam
|
||||
HGLib_SetDeviceParam.argtypes = [ctypes.c_void_p, ctypes.c_ulong, ctypes.c_void_p]
|
||||
HGLib_SetDeviceParam.restype = ctypes.c_int
|
||||
DevParam = ctypes.c_int(1)
|
||||
Ret = HGLib_SetDeviceParam(Device, 1, byref(DevParam))
|
||||
|
||||
def HGLibDeviceScanEventFunc(device: c_void_p, event: c_ulong, err: c_int, info: c_char_p, param: c_void_p):
|
||||
print(info)
|
||||
return
|
||||
|
||||
def HGLibDeviceScanImageFunc(device: c_void_p, image: c_void_p, param: c_void_p):
|
||||
ImageParam = HGLibSaveImageParam()
|
||||
ImageParam.size = 20
|
||||
ImageParam.jpegQuality = 100
|
||||
ImageParam.tiffCompression = 0
|
||||
ImageParam.tiffJpegQuality = 0
|
||||
ImageParam.ocr = 0
|
||||
Ret = HGLib_SaveImage(image, c_char_p(b"d:/3.jpg"), pointer(ImageParam))
|
||||
return
|
||||
|
||||
FuncType1 = CFUNCTYPE(None, c_void_p, c_ulong, c_int, c_char_p, c_void_p)
|
||||
cb1 = FuncType1(HGLibDeviceScanEventFunc)
|
||||
FuncType2 = CFUNCTYPE(None, c_void_p, c_void_p, c_void_p)
|
||||
cb2 = FuncType2(HGLibDeviceScanImageFunc)
|
||||
HGLib_StartDeviceScan = Objdll.HGLib_StartDeviceScan
|
||||
HGLib_StartDeviceScan.argtypes = [c_void_p, FuncType1, c_void_p, FuncType2, c_void_p]
|
||||
HGLib_StartDeviceScan.restyped = ctypes.c_int
|
||||
print("start scan")
|
||||
Ret = HGLib_StartDeviceScan(Device, cb1, 0, cb2, 0)
|
||||
|
||||
time.sleep(10)
|
Loading…
Reference in New Issue