[英]Sending data over serial in python from different functions
我通常使用C ++和C#進行編程,並試圖習慣python的工作方式,因此如果這是一個非常基本的問題,請原諒我。
我想在python上通過RS-232打開一個串行連接,並從各種功能發送數據。 這是我打開串行端口並發送數據所需的功能:
def sendData(data):
ser = serial.Serial('/dev/ttyUSB0', 115200)
data += "\r\n"
ser.write(data.encode())
非常簡單,但是我想將ser = serial.Serial('/dev/ttyUSB0', 115200)
行移到函數外,以便我可以自己調用此函數。
現在,在其他語言中,我只是將ser變量公開,以便其他函數可以訪問它,但是我不確定我是否了解變量如何在python中正常工作。 理想情況下,我想要這樣的東西:
def main():
ser = serial.Serial('/dev/ttyUSB0', 115200)
while 1:
#misc code here
sendData(data)
我知道我可以通過函數調用傳遞ser變量並將其設為sendData(ser,data),但這似乎是不必要的。 最好的方法是什么?
謝謝!
您可以在main
函數中使用global
關鍵字來分配公共變量:
ser = None
def sendData(data):
data += "\r\n"
ser.write(data.encode())
def main():
global ser
ser = serial.Serial('/dev/ttyUSB0', 115200)
while 1:
#misc code here
sendData(data)
甚至更好,使用一個類:
class SerialWrapper:
def __init__(self, device):
self.ser = serial.Serial(device, 115200)
def sendData(self, data):
data += "\r\n"
self.ser.write(data.encode())
def main():
ser = SerialWrapper('/dev/ttyUSB0')
while 1:
#misc code here
ser.sendData(data)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.