<p>我正在尝试将Python程序从python2.7转换为python3.5。这个程序包括C库。C libs的调用不再工作,但不会产生错误消息。我要改变什么,它是在Python3工作</p>
<pre><code>class Yasdi:
"""YASDI Wrapper fuer Python"""
def __init__(self,yasdi_lib="libyasdi.so",maxDriverIDs=10,DriverNameBuffer=30):
"""Konstruktor
Parameter:
yasdi_lib = "libyasdi.so" |erwartet Pfad zur yasdi Lib
maxDriverIDs = 10 |Anzahl der max. moegleichen Schnittstellen
DriverNameBuffer = 30 |Anzahl der max.Namenslaenge des Schnittstellennamens"""
self.maxDriverIDs = maxDriverIDs
self.DriverIDArray = array.array("L",[0]*self.maxDriverIDs)
self.DriverNameBuffer = " "*DriverNameBuffer
self.yasdi = ctypes.cdll.LoadLibrary(yasdi_lib)
def yasdiGetDriver(self):
"""Gibt die Anzahl zur verfuegung stehender Schnittstellen zurueck"""
result = self.yasdi.yasdiGetDriver(self.DriverIDArray.buffer_info()[0],self.maxDriverIDs)
return result
def yasdiGetDriverName(self,driverID):
"""Gibt den Namen eine Schnittstelle zurueck, zum Beispiel: COM1 oder /drv/ttyS0 etc.
Parameter:
driverID = erwartet Schnittstellnummer (z.B. 0)"""
self.yasdi.yasdiGetDriverName(driverID,self.DriverNameBuffer,len(self.DriverNameBuffer))
return self.DriverNameBuffer.replace("\x00","").rstrip().lstrip()
def yasdiSetDriverOnline(self,driverID):
"""Setzt eine Schnittstelle(driver) online, Achtung: unter Linux muss die Schnittstelle freigegeben werden!
Parameter:
driverID = Nummer der Schnittstelle (Com1 = 0 etc.)
Rueckgabe:
0: bei Erfolg
1: bei Fehler"""
result = self.yasdi.yasdiSetDriverOnline(driverID)
return result
def yasdiSetDriverOffline(self,driverID):
"""Gibt die Schnittstelle wieder Frei
Parameter:
driverID = erwartet Schnittstellnummer (z.B. 0)"""
self.yasdi.yasdiSetDriverOffline(driverID)
</code></pre>