[python-win32] Advice about usinf win32com

Marchand, Pascal Pascal.Marchand at Honeywell.com
Mon Mar 19 06:20:04 EDT 2018


Hello,

I don't know how to do something with the win32com module (or maybe with another...).
I post my problem on stack overflow but I didn't get any reply.

I do that piece of code for a project in my job for testing some possibilities of a zebra scanner, I chose python because it's interpreted and very easy for doing tests and because I know it a bit and I didn't want to invest time and money in Visual studio.

I'm trying to discuss with a Zebra RFID/bar code scanner using the WMI provider as recommended in dev guides, it runs fairly well with properties, I got method names and parameters too, but I didn't reach to make run method with byref parameter e.g. method(inpar, outpar) both parameters are strings (xml message), the function returns a status code correctly, see code below.

I searched on the net without finding solution, I give the corresponding .net c# code to call the method after python code (from the prog examples of the SDK guide for scanner), if it can help you to help me

Python code
# -*- coding: utf-8 -*-
import win32com.client

objWMIService = win32com.client.Dispatch("WbemScripting.SWbemLocator")
strComputer = "."
objSWbemServices = objWMIService.ConnectServer(strComputer,"root\cimv2")
oos = objSWbemServices.ExecQuery("SELECT * FROM Symbol_BarcodeScanner")
oo = oos[0]

# list all object properties
for op in oo.Properties_:
    print(op.Name, op.Value)

# list all object methods
for om in oo.Methods_:
    out_parameter_names = []
    in_parameters_names = []
    if om.OutParameters:
        out_parameter_names = [(i.Name, i.IsArray) for i in om.OutParameters.Properties_]
    if om.InParameters:
        in_parameters_names = [(i.Name, i.IsArray) for i in om.InParameters.Properties_]
    print('func : ',om.Name)
    print('In : ',in_parameters_names)
    print('Out : ',out_parameter_names)

inxml="<attrib_list>533,534</attrib_list>"
outxml=""
oo._FlagAsMethod('GetAttributes')
a =  = oo.GetAttributes(inxml,outxml)

.net C# code to call a method.

               ManagementObject o = new ManagementObject();
                o.Scope = mgmtScope;
                o.Path = new ManagementPath("Symbol_BarcodeScanner.PartNumber='" + strPartNumber + "',SerialNumber='" + strSerialNumber + "'");

          // Create ManagementBaseObject and get the parameters to the Method "GetAttributes"
                        inParams = o.GetMethodParameters("GetAttributes");
                        // Fill the Parameter "attNumberList" with the attributeList string
                        inParams["attNumberList"] = attributeList;

                        // Invoke the "GetAttributes" Method and save the result to a new ManagementBaseObject
                        outparams = o.InvokeMethod("GetAttributes", inParams, null);

Thanks for your help

Regards.

Pascal.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-win32/attachments/20180319/7f23c428/attachment-0001.html>


More information about the python-win32 mailing list