Hi ladies/gentlemen,
What I do now is based on Motorola Scan Bar Code SDK to do some development.
SDK is COM thing. there are API Commands and API Events as they called.
API Commands’ development is finished. But Events no, I tried, but failed.
Could u give some help ~ ~.
Thank you.
<CODE>
from pythoncom import *
from win32com.client import *
drv = win32com.client.Dispatch("CoreScanner.CoreScanner",clsctx =
CLSCTX_ALL)
Then I can use the method/attribute, such as Open, Close and so on. Goooood.
class LocalScanEvent:
def OnBarcodeEvent(self, eventType=0, pscanData=pythoncom.Empty):
print "@@@@@@@@@@@@"
evt = = DispatchWithEvents("CoreScanner.CoreScanner", LocalScanEvent)
Now prblem appears. I can’t get the LocalScanEvent work. When I debug the
dispatch, it always go to BASECLASS.
How could I do? Please help out. Thank you.
P.S. BASECLASS �C it is shows in attachment,” class
ICoreScanner(DispatchBaseClass):” .
Best regards,
XU Zhongjin
Electronic & Software Engineer
Electronic & Control Department DERI CHERY
No.8 Changchun Rd E&T Development Zone Wuhu Anhui China 241006
+86+553+5925245
+86+13355530465
# -*- coding: mbcs -*-
# Created by makepy.py version 0.5.00
# By python version 2.5.4 (r254:67916, Dec 23 2008, 15:10:54) [MSC v.1310 32
bit (Intel)]
# From type library 'CoreScanner.exe'
# On Thu Oct 18 14:21:42 2012
"""CoreScanner 1.0 Type Library"""
makepy_version = '0.5.00'
python_version = 0x20504f0
import win32com.client.CLSIDToClass, pythoncom, pywintypes
import win32com.client.util
from pywintypes import IID
from win32com.client import Dispatch
# The following 3 lines may need tweaking for the particular server
# Candidates are pythoncom.Missing, .Empty and .ArgNotFound
defaultNamedOptArg=pythoncom.Empty
defaultNamedNotOptArg=pythoncom.Empty
defaultUnnamedArg=pythoncom.Empty
CLSID = IID('{DB07B9FC-18B0-4B55-9A44-31D2C2F87875}')
MajorVersion = 1
MinorVersion = 0
LibraryFlags = 8
LCID = 0x0
from win32com.client import DispatchBaseClass
class ICoreScanner(DispatchBaseClass):
"""ICoreScanner Interface"""
CLSID = IID('{2105896C-2B38-4031-BD0B-7A9C4A39FB93}')
coclass_clsid = IID('{9F8D4F16-0F61-4A38-98B3-1F6F80F11C87}')
def Close(self, appHandle=defaultNamedNotOptArg,
status=pythoncom.Missing):
"""method Close"""
return self._ApplyTypes_(2, 1, (24, 0), ((3, 1), (16387, 2)),
u'Close', None,appHandle
, status)
def ExecCommand(self, opcode=defaultNamedNotOptArg,
inXML=defaultNamedNotOptArg, outXML=pythoncom.Missing,
status=pythoncom.Missing):
"""method ExecCommand"""
return self._ApplyTypes_(4, 1, (24, 0), ((3, 1), (16392, 1),
(16392, 2), (16387, 2)), u'ExecCommand', None,opcode
, inXML, outXML, status)
def ExecCommandAsync(self, opcode=defaultNamedNotOptArg,
inXML=defaultNamedNotOptArg, status=pythoncom.Missing):
"""method ExecCommandAsync"""
return self._ApplyTypes_(5, 1, (24, 0), ((3, 1), (16392, 1),
(16387, 2)), u'ExecCommandAsync', None,opcode
, inXML, status)
def GetScanners(self, numberOfScanners=pythoncom.Missing,
sfScannerIDList=defaultNamedNotOptArg, outXML=pythoncom.Missing,
status=pythoncom.Missing):
"""method GetScanners"""
return self._ApplyTypes_(3, 1, (24, 0), ((16386, 2), (8195, 3),
(16392, 2), (16387, 2)), u'GetScanners', None,numberOfScanners
, sfScannerIDList, outXML, status)
def Open(self, appHandle=defaultNamedNotOptArg,
sfTypes=defaultNamedNotOptArg, lengthOfTypes=defaultNamedNotOptArg,
status=pythoncom.Missing):
"""method Open"""
return self._ApplyTypes_(1, 1, (24, 0), ((3, 1), (8194, 1), (2,
1), (16387, 2)), u'Open', None,appHandle
, sfTypes, lengthOfTypes, status)
_prop_map_get_ = {
}
_prop_map_put_ = {
}
class _ICoreScannerEvents:
"""_ICoreScannerEvents Interface"""
CLSID = CLSID_Sink = IID('{981E3D8B-C756-4195-A702-F198965031C6}')
coclass_clsid = IID('{9F8D4F16-0F61-4A38-98B3-1F6F80F11C87}')
_public_methods_ = [] # For COM Server support
_dispid_to_func_ = {
6 : "OnScanRMDEvent",
4 : "OnPNPEvent",
2 : "OnVideoEvent",
8 : "OnScannerNotificationEvent",
1 : "OnImageEvent",
3 : "OnBarcodeEvent",
7 : "OnIOEvent",
5 : "OnCommandResponseEvent",
}
def __init__(self, oobj = None):
if oobj is None:
self._olecp = None
else:
import win32com.server.util
from win32com.server.policy import EventHandlerPolicy
cpc=oobj._oleobj_.QueryInterface(pythoncom.IID_IConnectionPointContainer)
cp=cpc.FindConnectionPoint(self.CLSID_Sink)
cookie=cp.Advise(win32com.server.util.wrap(self,
usePolicy=EventHandlerPolicy))
self._olecp,self._olecp_cookie = cp,cookie
def __del__(self):
try:
self.close()
except pythoncom.com_error:
pass
def close(self):
if self._olecp is not None:
cp,cookie,self._olecp,self._olecp_cookie =
self._olecp,self._olecp_cookie,None,None
cp.Unadvise(cookie)
def _query_interface_(self, iid):
import win32com.server.util
if iid==self.CLSID_Sink: return win32com.server.util.wrap(self)
# Event Handlers
# If you create handlers, they should have the following prototypes:
# def OnScanRMDEvent(self, eventType=defaultNamedNotOptArg,
prmdData=defaultNamedNotOptArg):
# """method ScanRMDEvent"""
# def OnPNPEvent(self, eventType=defaultNamedNotOptArg,
ppnpData=defaultNamedNotOptArg):
# """method PNPEvent"""
# def OnVideoEvent(self, eventType=defaultNamedNotOptArg,
size=defaultNamedNotOptArg, sfvideoData=defaultNamedNotOptArg,
pScannerData=defaultNamedNotOptArg):
# """method VideoEvent"""
# def OnScannerNotificationEvent(self,
notificationType=defaultNamedNotOptArg, pScannerData=defaultNamedNotOptArg):
# """method ScannerNotificationEvent"""
# def OnImageEvent(self, eventType=defaultNamedNotOptArg,
size=defaultNamedNotOptArg, imageFormat=defaultNamedNotOptArg,
sfImageData=defaultNamedNotOptArg
# , pScannerData=defaultNamedNotOptArg):
# """method ImageEvent"""
# def OnBarcodeEvent(self, eventType=defaultNamedNotOptArg,
pscanData=defaultNamedNotOptArg):
# """method BarcodeEvent"""
# def OnIOEvent(self, type=defaultNamedNotOptArg,
data=defaultNamedNotOptArg):
# """method IOEvent"""
# def OnCommandResponseEvent(self, status=defaultNamedNotOptArg,
prspData=defaultNamedNotOptArg):
# """method CommandResponseEvent"""
from win32com.client import CoClassBaseClass
# This CoClass is known by the name 'CoreScanner.CoreScanner.1'
class CCoreScanner(CoClassBaseClass): # A CoClass
# CCoreScanner Class
CLSID = IID('{9F8D4F16-0F61-4A38-98B3-1F6F80F11C87}')
coclass_sources = [
_ICoreScannerEvents,
]
default_source = _ICoreScannerEvents
coclass_interfaces = [
ICoreScanner,
]
default_interface = ICoreScanner
ICoreScanner_vtables_dispatch_ = 1
ICoreScanner_vtables_ = [
(( u'Open' , u'appHandle' , u'sfTypes' , u'lengthOfTypes' , u'status' ,
), 1, (1, (), [ (3, 1, None, None) , (8194, 1, None,
None) , (2, 1, None, None) , (16387, 2, None, None) , ], 1 , 1 , 4 , 0 , 28 ,
(3, 0, None, None) , 0 , )),
(( u'Close' , u'appHandle' , u'status' , ), 2, (2, (), [ (3, 1, None,
None) ,
(16387, 2, None, None) , ], 1 , 1 , 4 , 0 , 32 , (3, 0,
None, None) , 0 , )),
(( u'GetScanners' , u'numberOfScanners' , u'sfScannerIDList' ,
u'outXML' , u'status' ,
), 3, (3, (), [ (16386, 2, None, None) , (8195, 3,
None, None) , (16392, 2, None, None) , (16387, 2, None, None) , ], 1 , 1 , 4 ,
0 , 36 , (3, 0, None, None) , 0 , )),
(( u'ExecCommand' , u'opcode' , u'inXML' , u'outXML' , u'status' ,
), 4, (4, (), [ (3, 1, None, None) , (16392, 1, None,
None) , (16392, 2, None, None) , (16387, 2, None, None) , ], 1 , 1 , 4 , 0 , 40
, (3, 0, None, None) , 0 , )),
(( u'ExecCommandAsync' , u'opcode' , u'inXML' , u'status' , ), 5, (5,
(), [
(3, 1, None, None) , (16392, 1, None, None) , (16387,
2, None, None) , ], 1 , 1 , 4 , 0 , 44 , (3, 0, None, None) , 0 , )),
]
RecordMap = {
}
CLSIDToClassMap = {
'{2105896C-2B38-4031-BD0B-7A9C4A39FB93}' : ICoreScanner,
'{981E3D8B-C756-4195-A702-F198965031C6}' : _ICoreScannerEvents,
'{9F8D4F16-0F61-4A38-98B3-1F6F80F11C87}' : CCoreScanner,
}
CLSIDToPackageMap = {}
win32com.client.CLSIDToClass.RegisterCLSIDsFromDict( CLSIDToClassMap )
VTablesToPackageMap = {}
VTablesToClassMap = {
'{2105896C-2B38-4031-BD0B-7A9C4A39FB93}' : 'ICoreScanner',
}
NamesToIIDMap = {
'_ICoreScannerEvents' : '{981E3D8B-C756-4195-A702-F198965031C6}',
'ICoreScanner' : '{2105896C-2B38-4031-BD0B-7A9C4A39FB93}',
}
_______________________________________________
python-win32 mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-win32