IronPython спрашивает .NET, какие порты.Они перечислены по-разному.Скорее всего, вы просите открыть соединение, которое не существует в отношении IronPython / .NET.Чтобы узнать «реальный» номер порта, используйте следующий код, модифицированный из примеров сканирования pySerial.Затем используйте номер рядом с указанным COM.
import serial
def scan():
#scan for available ports. return a list of tuples (num, name)
available = []
for i in range(256):
try:
s = serial.Serial(i)
available.append( (i, s.portstr))
s.close() # explicit close 'cause of delayed GC in java
except serial.SerialException:
pass
#You must add this check, otherwise the scan won't complete
except IndexError as Error:
pass
for n,s in available:
print "(%d) %s" % (n,s)
return available
Для меня вывод выглядит следующим образом:
(0) COM9
(1) COM15
(2) COM16
(3) COM1
(4) COM15
Затем, когда вы пытаетесь открыть соединение, используйте номер слева, а НЕфактический COMportNumber - 1. Например, мне нужно открыть соединение с COM15, поэтому, используя приведенное выше сканирование:
def IOCardConnect():
try:
connection = serial.Serial(4, 115200, timeout=1, parity=serial.PARITY_NONE)
print "Connection Succesful"
return connection
except serial.SerialException as Error:
print Error
Кроме того, после подключения pySerial будет ожидать записи байтов в соединение, а не строк.,Поэтому убедитесь, что вы отправляете так:
#Use the built in bytes function to convert to a bytes array.
connection.write(bytes('Data_To_Send'))