Tôi hiện đang gặp sự cố với mô-đun pySerial trong Python. Vấn đề của tôi liên quan đến việc kết nối và ngắt kết nối với một thiết bị. Tôi có thể kết nối thành công với thiết bị của mình và liên lạc với nó miễn là tôi muốn, và ngắt kết nối nó bất cứ khi nào tôi muốn. Tuy nhiên, tôi không thể kết nối lại với thiết bị khi kết nối đã bị ngắt.Kết nối lại với thiết bị với pySerial
Đây là lớp wrapper rằng chương trình của tôi sử dụng để giao tiếp với các cổng nối tiếp:
import serial, tkMessageBox
class Controller:
""" Wrapper class for managing the serial connection with the MS-2000. """
def __init__(self, settings):
self.ser = None
self.settings = settings
def connect(self):
""" Connect or disconnect to MS-2000. Return connection status."""
try:
if self.ser == None:
self.ser = serial.Serial(self.settings['PORT'],
self.settings['BAUDRATE'])
print "Successfully connected to port %r." % self.ser.port
return True
else:
if self.ser.isOpen():
self.ser.close()
print "Disconnected."
return False
else:
self.ser.open()
print "Connected."
return True
except serial.SerialException, e:
return False
def isConnected(self):
'''Is the computer connected with the MS-2000?'''
try:
return self.ser.isOpen()
except:
return False
def write(self, command):
""" Sends command to MS-2000, appending a carraige return. """
try:
self.ser.write(command + '\r')
except Exception, e:
tkMessageBox.showerror('Serial connection error',
'Error sending message "%s" to MS-2000:\n%s' %
(command, e))
def read(self, chars):
""" Reads specified number of characters from the serial port. """
return self.ser.read(chars)
Có ai biết lý do tại sao vấn đề này tồn tại và những gì tôi có thể cố gắng làm để sửa chữa nó?
Whats ngoại lệ/dấu vết bạn nhận được khi bạn cố gắng kết nối lại? Bạn có đang sử dụng Windows hay Linux không? – jedwards
Bạn có ý gì khi "kết nối bị ngắt kết nối"? Bạn có nghĩa là rút cáp nối tiếp, hoặc chỉ cần thoát khỏi quá trình python của bạn? – TJD
@andrew donelick Không liên quan đến câu trả lời cho vấn đề của bạn, nhưng tại sao bạn không khởi tạo đối tượng 'Serial' trong' __init __() '? –