gpt4 book ai didi

python - 如何从类方法全局使用定义为 ser 的序列号?

转载 作者:太空宇宙 更新时间:2023-11-03 19:15:20 26 4
gpt4 key购买 nike

当我在类 ser 之外分配此值时,如何从类方法中使用 ser ?就像下面它在 Window 中不起作用一样。

import socket, 
datetime,
threading,
os,
serial

# declare once
ser = serial.Serial('COM3', 19200)

class AServer(threading.Thread):
def __init__(self, port):
threading.Thread.__init__(self)
self.port = port

def now(self):
d = datetime.datetime.now()
return d.strftime("%d/%m/%y %H:%M:%S")

def run(self):
host = ''
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((host, self.port))
print 'successfully, waiting...'
s.listen(1)
conn, addr = s.accept()
print 'contact', addr, 'on', self.now()

while 1:
try:
data = conn.recv(1024)
except socket.error:
print 'lost', addr, 'waiting..'
s.listen(1)
conn, addr = s.accept()
print 'contact', addr, 'on', self.now()
continue

if not data:
print 'lost', addr, 'waiting..'
s.listen(1)
conn, addr = s.accept()
print 'contact', addr, 'on', self.now()
else:
print "received msg:", data
conn.send('roger')
if data.startswith('blablabla'):
ser.write('\x02\x01\x80\x00\x03\x80')
else:
print "not ok"

t = AServer(80)
t.start()

最佳答案

这与 Python 的命名空间有关。您需要说明您要访问全局 ser 变量

# declare once 
ser = serial.Serial('COM3', 19200)

class AServer(threading.Thread):
def __init__(self, port):
threading.Thread.__init__(self)
self.port = port

global se
self._ser = ser # local reference to global variable

关于python - 如何从类方法全局使用定义为 ser 的序列号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11510941/

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