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 python-win32@python.org http://mail.python.org/mailman/listinfo/python-win32