В Mac Mojave значение pySerial in_wating постоянно равно 1020, и чтение заполнено мусором и предыдущими данными. - PullRequest
0 голосов
/ 28 ноября 2018

pySerial in_wating - 1020 все время, и чтение заполнено барахлом и предыдущими данными

Здравствуйте,

У нас есть программное обеспечение Python, которое отлично работает в течение долгого времени со всеми компьютерами Mac OSX.версии до сейчас.Мы пробовали программное обеспечение на Mac Mojave, и оно не работало.

мы провели много тестов и обнаружили, что значение in_waiting равно нулю, если буфер пустой (это хорошо), но когда мы отправляем несколько байтов (не имеет значения, если 3 из 3000), значение in_waiting составляет 1020.

Это не все.Когда мы читаем 1020 байт (или 10000), мы видим много мусора и данные из предыдущих полученных значений в буфере чтения.

, специфичные для нашего продукта, мы используем CP2102.Программное обеспечение python на компьютере Mac отправляет параметры на внешний датчик, датчик начинает измерения и отправляет пакеты данных каждые 0,1 с.в предыдущей версии Mac Python проверяет in_waiting, и когда он имеет правильную длину, мы читаем его и отображаем.но теперь мы получаем 1020 все время, и информация спрятана где-то в буфере, и есть много результатов ... ПОМОЩЬ:)

спасибо

--- Код:

def receive(self, i = False, dly = 0.02): 
  sleep(dly) 
  try:
    iw = self.in_waiting
    if 0 == iw:
      log("receive in_waiting=0")
      return 'False'
    if False == i: 
      i = iw 
    if i > iw: 
      log("receive need more then in_waiting="+str(iw))
      return 'False'
    s = self.read(i)
    return s
  except: 
    self.status = 'False' 
  return 'False' 
...