Ошибка «Кольцевой буфер RX заполнен» в PySerial, несмотря на очистку буферовPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Ошибка «Кольцевой буфер RX заполнен» в PySerial, несмотря на очистку буферов

Сообщение Anonymous »

Я работаю над проектом, в котором использую модуль PySerial для связи с системой управления батареями (BMS) через последовательный порт. В этом проекте я также использую ThingsBoard и Streamlit. Однако я продолжаю сталкиваться с ошибкой «Кольцевой буфер RX заполнен», хотя я каждый раз очищаю буферы. Кроме того, строки, которые я читаю, меняются каждый раз, когда я запускаю код.
import serial
import csv
from time import sleep

responseArray = list()

def writeBatteryData(rest_client, batteryUsed):
"""Writes the battery attributes' values to the connected BMS

Args:
batteryUsed (str): Battery used in the battery instance

Returns:
None
"""
with open('deviceForms/batteryForm.csv', 'r') as csvfile:
csvForm = csv.reader(csvfile)
form = list(csvForm)
numRows = len(form)

batteryForm = getDeviceAttributes(rest_client, batteryUsed, form, numRows)
start = 0
for start in range(numRows):
if form[start][0] == 'Charge Overcurrent':
break

with open('deviceForms/batteryThingSetCommands.csv', 'r') as csvfile:
csvForm = csv.reader(csvfile)
batteryCommandsForm = list(csvForm)

ser = serial.Serial(port='/dev/ttyACM1', baudrate=115200, timeout=5)
ser.reset_input_buffer()
ser.reset_output_buffer()
ser.write(b'select thingset\r\n')
response = ser.readline()

for i in range(start, numRows):
ser.write((batteryCommandsForm[i-start][1] + str(batteryForm[1]) + '}\r\n').encode())
sleep(0.1)
response = ser.readline()
responseArray.append(response)
sleep(0.1)
# Flushing buffer using read()
if ser.in_waiting > 0:
data = ser.read(ser.in_waiting)

ser.close()
print(responseArray)

writeBatteryData(rest_client, "NMCBattery")

Я пытался обеспечить очистку буфера, используя ser.reset_input_buffer() и ser.reset_output_buffer(), а также читая все оставшиеся данные с помощью ser.read(ser.in_waiting) . Однако проблема остается.
Вопросы:
1.Why am I still encountering the "RX ring buffer full" error despite flushing the buffers?
2.Why are the lines I read different every time?


Подробнее здесь: https://stackoverflow.com/questions/788 ... ng-buffers
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Зачем выполнять очистку с использованием std::endl, когда буфер не заполнен [дубликат]
    Anonymous » » в форуме C++
    0 Ответы
    35 Просмотры
    Последнее сообщение Anonymous
  • Существует ли библиотека C++, реализующая кольцевой буфер массивов динамического размера? [закрыто]
    Anonymous » » в форуме C++
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Кольцевой буфер в Java
    Anonymous » » в форуме JAVA
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • У меня есть тупик? Стоит ли вместо этого использовать кольцевой буфер с очередями?
    Anonymous » » в форуме C++
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Почему данные записываются в файл, хотя буфер не заполнен, когда программа заканчивается? [дублировать]
    Anonymous » » в форуме Linux
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»