簡體   English   中英

通過python從不同功能通過串行發送數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM