[python-win32] Activex call delivers only unicode string, but ASCII is needed

Konstantin Veretennicov kveretennicov at gmail.com
Tue Jul 5 15:43:21 CEST 2005


On 7/4/05, Kuner Martin <martin.kuner at thomson.net> wrote:
>  
> 
> Hi list, 
> 
> I have the following code to call a LabVIEW VI via the Activex interface. 
> The string "strDataOut" holds the expected data result of the call . 
> Now I realized that the string coming back from the ActiveX call contains
> Unicode and that is fatal! 
> The string on the Python side should always be ASCII. 
> I found no way to convert them back, strDataOut.enocde() raises a exception
> when I try to convert to ASCII 

Which encoding do you use with strDataOut.encode(...) ?

>   
> Here´s the relevant code. 
> 
>         intCmdcnt = 0; 
>         strDataOut = r"" 
>         cluError = [False,0,""] 
>         cluSenseKey = [0,0,0] 
>         print "strDataOut = %r" % strDataOut 
>         
>         arParNames  =
> ["intChannel","strCDB","strDataIn","intDirection",
> "intLength","cluError","cluSenseKey","intCmdcnt","strDataOut"]
> 
>         arParVals   = [0, strCDB, strBuffer, intDataToHost,intBuffLen,
> cluError, cluSenseKey, intCmdcnt, strDataOut] 
> 
>         retval = self.__refGenericATAPI.Call(arParNames,
> arParVals)   # call VI 
>         print retval 
> 
> The printout: 
> strDataOut = '' 
> ((u'intChannel', u'strCDB', u'strDataIn', u'intDirection', u'intLength',
> u'cluError', u'cluSenseKey', u'intCmdcnt', u'strDataOut'), (0,
> u'\xa8\x08\x00\x10\x00\x00\x00\x00\x00\x10\x00\x00', u'',
> 1, 16, (False, 0, u''), (0, 0, 0), 37,
> u'\x00\x00\x01\xbaD\xa5?\x14\x0c\xab\x01\u2030\xc3\xf8\x00\x00'))
> 
> Here´s another data example: 
> 
> String on LabVIEW side : 
>         00 00 01 BA 44 A5 3F 14 0C AB 01 89 C3 F8 00 00 
> String on python side 
>        
> u'\x00\x00\x01\xbaD\xa5?\x14\x0c\xab\x01\u2030\xc3\xf8\x00\x00'
> 
> Any ideas ?

LabVIEW seems to use cp1252 encoding:

>>> s = u'\x00\x00\x01\xbaD\xa5?\x14\x0c\xab\x01\u2030\xc3\xf8\x00\x00'
 >>> s.encode('cp1252')
'\x00\x00\x01\xbaD\xa5?\x14\x0c\xab\x01\x89\xc3\xf8\x00\x00'

Does this string look familiar? :)

- kv


More information about the Python-win32 mailing list