Ненужные данные в последовательном соединении, которые появляются только при запуске скрипта на Anaconda Spyder - PullRequest
0 голосов
/ 17 января 2020

У меня есть код 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))

Этот код позволяет мне настроить устройство. Устройство не отправляет данные обратно, когда получает этот код.

Выполнение кода выше:

  1. Вкл. Тонн Я получаю то, что ожидаю: оно Отпечатки и пустой текст b '' .
  2. Вкл. Анаконда Спайдер Я получаю мусор, как b '\ x01u \ x00? \ xa6 \ xabg?' . Длина барахла зависит от того, сколько раз я запускаю Config_device (dev = ser, ID = 1, pos = 1) перед чтением последовательного порта.

Спасибо

...