У меня есть код python 3.7, который связывается с оборудованием, использующим последовательное соединение.
Код работает, как и должен, когда я запускаю его на Тонни ( https://thonny.org/) но когда я запускаю его на Spyder 3.3.6 (из Anaconda 4.8.1), последовательная связь не работает хорошо.
Библиотека, используемая для последовательной связи : PySerial v3.4 (как на Thonny, так и на Spyder).
Может кто-нибудь помочь мне понять, почему приведенный ниже код прекрасно работает на Thonny (python 3.7.6 x86), но не в Anaconda Spyder (* 1040) * 3.7.4 x64)?
import serial
def Config_device(dev,ID,pos):
s=b'\x00' + b'\x02' + struct.pack("B",ID//256)+ struct.pack("B",ID%256)+ b'\x00'+ struct.pack("B",pos)
crc8=0
for i in range(len(s)):
crc8 += s[i]
s+=struct.pack("B",crc8%256)
dev.write(s)
ser = serial.Serial()
ser.baudrate = 115200
ser.port = 'COM7'
ser.xonxoff = False
ser.rtscts = False
ser.dsrdtr = False
ser.dtr = 0
ser.rts = 0
ser.timeout = 1
ser.open()
'setting up device'
Config_device(dev=ser,ID=1,pos=1)
print(ser.read(50))
Этот код позволяет мне настроить устройство. Устройство не отправляет данные обратно, когда получает этот код.
Выполнение кода выше:
- Вкл. Тонн Я получаю то, что ожидаю: оно Отпечатки и пустой текст b '' .
- Вкл. Анаконда Спайдер Я получаю мусор, как b '\ x01u \ x00? \ xa6 \ xabg?' . Длина барахла зависит от того, сколько раз я запускаю Config_device (dev = ser, ID = 1, pos = 1) перед чтением последовательного порта.
Спасибо