@Beser4
Инженер радиоэлектроник, программист МК

PySerial. Почему возникает ошибка при записи в COM порт?

Вот понадобилось написать простенький скрипт для связи с модемом. Установил библиотеку PySerial, и при попытке записи в порт получаю вот такой багрепорт:
import serial
>>> ser = serial.Serial('COM4', baudrate=115200, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, bytesize=serial.EIGHTBITS, xonxoff=1)
>>> ser.write("at")
Traceback (most recent call last):
  File "<pyshell#13>", line 1, in <module>
    ser.write("at")
  File "C:\Python34\lib\site-packages\serial\serialwin32.py", line 283, in write
    data = to_bytes(data)
  File "C:\Python34\lib\site-packages\serial\serialutil.py", line 76, in to_bytes
    b.append(item)  # this one handles int and str for our emulation and ints for Python 3.x
TypeError: an integer is required
ser.open()
>>> ser.isOpen()
True
>>> ser.write('AT')
Traceback (most recent call last):
  File "<pyshell#30>", line 1, in <module>
    ser.write('AT')
  File "C:\Python34\lib\site-packages\serial\serialwin32.py", line 283, in write
    data = to_bytes(data)
  File "C:\Python34\lib\site-packages\serial\serialutil.py", line 76, in to_bytes
    b.append(item)  # this one handles int and str for our emulation and ints for Python 3.x
TypeError: an integer is required
>>>

Что я мог сделать не так?
Система Windiws 8.1, Python 3.4, PySerial 2.6. В терминале порт отлично открывается, пишется и читается.
  • Вопрос задан
  • 3940 просмотров
Решения вопроса 1
@anelyubin
Возможно потому, что порт сначала нужно открыть. stackoverflow.com/questions/676172/full-examples-o...

Попробуй писать в виде строки байтов:
ser.write(b"at")
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@slepowl
учу-верчу python
Вообще, он же говорит что ожидает число.
попробуйте запись так:
ser.write("AT".encode('cp1251'))

Еще попробуйте сначала закрыть порт, а потом открыть. т.е. в начале скрипта ser.close() затем ser.open()
Попробуйте в настройках порта выставить таймаут. timeout=5 (к примеру)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы