fixes to pynorm for Python3 and normMsgr.py and normFileSend.py examples

pull/68/head
bebopagogo 2022-05-22 22:01:47 -04:00
parent 972b1a3e0b
commit 5cd6498c39
3 changed files with 23 additions and 23 deletions

View File

@ -28,7 +28,7 @@ def main(argv):
(opts, args) = get_option_parser().parse_args(argv) (opts, args) = get_option_parser().parse_args(argv)
if len(args) != 2: if len(args) != 2:
print get_option_parser().get_usage() print(get_option_parser().get_usage())
return 1 return 1
path = os.path.abspath(args[1]) path = os.path.abspath(args[1])
@ -45,26 +45,26 @@ def main(argv):
for event in instance: for event in instance:
if event == 'NORM_RX_OBJECT_INFO': if event == 'NORM_RX_OBJECT_INFO':
event.object.filename = os.path.join(path, event.object.info) event.object.filename = os.path.join(path, event.object.info)
print 'Downloading file %s' % event.object.filename print('Downloading file %s' % event.object.filename)
elif event == 'NORM_RX_OBJECT_UPDATED': elif event == 'NORM_RX_OBJECT_UPDATED':
print 'File %s - %i bytes left to download' % ( print('File %s - %i bytes left to download' % (
event.object.filename, event.object.bytesPending) event.object.filename, event.object.bytesPending))
elif event == 'NORM_RX_OBJECT_COMPLETED': elif event == 'NORM_RX_OBJECT_COMPLETED':
print 'File %s completed' % event.object.filename print('File %s completed' % event.object.filename)
return 0 return 0
elif event == 'NORM_RX_OBJECT_ABORTED': elif event == 'NORM_RX_OBJECT_ABORTED':
print 'File %s aborted' % event.object.filename print('File %s aborted' % event.object.filename)
return 1 return 1
else: else:
print event print(event)
except KeyboardInterrupt: except KeyboardInterrupt:
pass pass
print 'Exiting.' print('Exiting.')
return 0 return 0
if __name__ == '__main__': if __name__ == '__main__':

View File

@ -48,19 +48,19 @@ class Instance(object):
libnorm.NormRestartInstance(self) libnorm.NormRestartInstance(self)
def setCacheDirectory(self, path): def setCacheDirectory(self, path):
libnorm.NormSetCacheDirectory(self, path) libnorm.NormSetCacheDirectory(self, path.encode('utf-8'))
def setDebugLevel(self, level): def setDebugLevel(self, level):
libnorm.NormSetDebugLevel(level) libnorm.NormSetDebugLevel(level)
def openDebugLog(self, path): def openDebugLog(self, path):
libnorm.NormOpenDebugLog(self, path) libnorm.NormOpenDebugLog(self, path.encode('utf-8'))
def closeDebugLog(self): def closeDebugLog(self):
libnorm.NormCloseDebugLog(self) libnorm.NormCloseDebugLog(self)
def openDebugPipe(self, pipeName): def openDebugPipe(self, pipeName):
libnorm.NormOpenDebugPipe(self, pipeName) libnorm.NormOpenDebugPipe(self, pipeName.encode('utf-8'))
def getNextEvent(self, timeout=None): def getNextEvent(self, timeout=None):
# Use python's select because letting the C NormGetNextEvent block # Use python's select because letting the C NormGetNextEvent block

View File

@ -33,11 +33,11 @@ class Object(object):
if length == 0: if length == 0:
raise NormError("No object info received yet.") raise NormError("No object info received yet.")
buffer = ctypes.create_string_buffer(length) buf = ctypes.create_string_buffer(length)
recv = libnorm.NormObjectGetInfo(self, buffer, length) recv = libnorm.NormObjectGetInfo(self, buf, length)
if recv == 0: if recv == 0:
raise NormError("No object info received yet.") raise NormError("No object info received yet.")
return buffer.value return buf.value
def getSize(self): def getSize(self):
return libnorm.NormObjectGetSize(self) return libnorm.NormObjectGetSize(self)
@ -49,12 +49,12 @@ class Object(object):
libnorm.NormObjectCancel(self) libnorm.NormObjectCancel(self)
def getFileName(self): def getFileName(self):
buffer = ctypes.create_string_buffer(100) buf = ctypes.create_string_buffer(100)
libnorm.NormFileGetName(self, buffer, ctypes.sizeof(buffer)) libnorm.NormFileGetName(self, buf, ctypes.sizeof(buf))
return buffer.value return buf.value
def renameFile(self, name): def renameFile(self, name):
libnorm.NormFileRename(self, name) libnorm.NormFileRename(self, name.encode('utf-8'))
# Because 'ctypes.string_at()' makes a _copy_ of the data, we don't # Because 'ctypes.string_at()' makes a _copy_ of the data, we don't
# support the usual NORM accessData / detachData options. We use # support the usual NORM accessData / detachData options. We use
@ -80,7 +80,7 @@ class Object(object):
libnorm.NormStreamClose(self, graceful) libnorm.NormStreamClose(self, graceful)
def streamWrite(self, msg): def streamWrite(self, msg):
return libnorm.NormStreamWrite(self, msg, len(msg)) return libnorm.NormStreamWrite(self, msg.encode('utf-8'), len(msg))
def streamFlush(self, eom=False, flushmode=c.NORM_FLUSH_PASSIVE): def streamFlush(self, eom=False, flushmode=c.NORM_FLUSH_PASSIVE):
libnorm.NormStreamFlush(self, eom, flushmode) libnorm.NormStreamFlush(self, eom, flushmode)
@ -99,10 +99,10 @@ class Object(object):
## Stream receiving functions ## Stream receiving functions
def streamRead(self, size): def streamRead(self, size):
buffer = ctypes.create_string_buffer(size) buf = ctypes.create_string_buffer(size)
numBytes = ctypes.c_uint(ctypes.sizeof(buffer)) numBytes = ctypes.c_uint(ctypes.sizeof(buf))
libnorm.NormStreamRead(self, buffer, ctypes.byref(numBytes)) libnorm.NormStreamRead(self, buf, ctypes.byref(numBytes))
return (numBytes, buffer.value) return (numBytes, buf.value)
def streamSeekMsgStart(self): def streamSeekMsgStart(self):
return libnorm.NormStreamSeekMsgStart(self) return libnorm.NormStreamSeekMsgStart(self)