Форум сайта python.su
Доброго вам времени суток. Прошу помочь разобраться с проблемой.
Перешел на версию 3.3.3, для работы понадобился скриптик, использующий pyserial.
На версии питона 2.7 все работало как часы, на версии 3.3.3 при .write()
выдает ошибку:
File “<pyshell#6>”, line 1, in <module>
port.write('n')
File “C:\Python33\lib\site-packages\serial\serialwin32.py”, line 283, in write
data = to_bytes(data)
File “C:\Python33\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
что за ересь может быть?
Офлайн
Знаешь я тоже столкнулся с этой проблемой. Не найдя никаких ответов в интернете решил сам исправить молотком и напильником. исправил Я следующее:
в файле serialwin32.py на 283 строчки в место data = to_bytes(data) написал
data = bytes(data, encoding = ‘ASCII’).
Не проверял посылает правильный байт или нет, но ошибку не выдаёт.
Офлайн
У меня такой проблемы не возникло. Установлен pyserial-2.6, работает без глюков на Python 3.3.
Код который работает в Python 3.3:
import serial
ser = serial.Serial('COM1', 9600)
#—–отправить данные—————————–
data = (bytes('data', encoding='ascii'))
ser.write (data)
print(data)
#—————————————–
#—–получить данные——————————-
s=str(ser.readline())
print (s)
#——————————————
Advanced Serial Port Monitor – очень удобная прога для мониторинга com порта.
bytes('data', encoding='ascii') - посылает правильный байт (проверено)
Вместо ‘data’ (текст) можно вставить переменную.
Отредактировано romario82 (Апрель 28, 2014 16:07:40)
Офлайн