gpt4 book ai didi

Python3 C 库的使用

转载 作者:行者123 更新时间:2023-12-01 06:50:27 27 4
gpt4 key购买 nike

我正在尝试将 Python 程序从 Python 2.7 转换为 Python 3.5。该程序包含 C 库。 C 库的调用不再起作用,但不会引发任何错误消息。我需要改变什么才能让它在Python3中工作?

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)

最佳答案

上面的代码很好 - 问题出在不同的部分。请注意,Python 3 中的字符串默认是 Unicode - 这是我的问题!

关于Python3 C 库的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59031932/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com