从不同的函数在 python 中通过串行发送数据
Sending data over serial in python from different functions
我通常使用 C++ 和 C# 进行编程,并且正在努力适应 python 的工作方式,如果这是一个相当基本的问题,请原谅我。
我想通过 RS-232 在 python 中打开串行连接并从各种功能发送数据。这是我必须打开串口并发送数据的功能:
def sendData(data):
ser = serial.Serial('/dev/ttyUSB0', 115200)
data += "\r\n"
ser.write(data.encode())
很简单,但我想将 ser = serial.Serial('/dev/ttyUSB0', 115200)
行移到函数之外,这样我就可以自己调用这个函数。
现在,在其他语言中,我只是将 ser 变量设为 public,以便其他函数可以访问它,但我不确定我是否理解 python 中的变量如何正确工作.理想情况下,我想要这样的东西:
def main():
ser = serial.Serial('/dev/ttyUSB0', 115200)
while 1:
#misc code here
sendData(data)
我知道我可以通过函数调用传递 ser 变量并使其成为 sendData(ser, data),但这似乎没有必要。执行此操作的最佳方法是什么?
谢谢!
您可以在 main
函数中使用 global
关键字来分配 public 变量:
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:
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)
我通常使用 C++ 和 C# 进行编程,并且正在努力适应 python 的工作方式,如果这是一个相当基本的问题,请原谅我。
我想通过 RS-232 在 python 中打开串行连接并从各种功能发送数据。这是我必须打开串口并发送数据的功能:
def sendData(data):
ser = serial.Serial('/dev/ttyUSB0', 115200)
data += "\r\n"
ser.write(data.encode())
很简单,但我想将 ser = serial.Serial('/dev/ttyUSB0', 115200)
行移到函数之外,这样我就可以自己调用这个函数。
现在,在其他语言中,我只是将 ser 变量设为 public,以便其他函数可以访问它,但我不确定我是否理解 python 中的变量如何正确工作.理想情况下,我想要这样的东西:
def main():
ser = serial.Serial('/dev/ttyUSB0', 115200)
while 1:
#misc code here
sendData(data)
我知道我可以通过函数调用传递 ser 变量并使其成为 sendData(ser, data),但这似乎没有必要。执行此操作的最佳方法是什么?
谢谢!
您可以在 main
函数中使用 global
关键字来分配 public 变量:
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:
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)