Я работаю над проектом, в котором использую модуль 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
Ошибка «Кольцевой буфер RX заполнен» в PySerial, несмотря на очистку буферов ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Зачем выполнять очистку с использованием std::endl, когда буфер не заполнен [дубликат]
Anonymous » » в форуме C++ - 0 Ответы
- 35 Просмотры
-
Последнее сообщение Anonymous
-
-
-
У меня есть тупик? Стоит ли вместо этого использовать кольцевой буфер с очередями?
Anonymous » » в форуме C++ - 0 Ответы
- 12 Просмотры
-
Последнее сообщение Anonymous
-