#fifo #ftdi
#fifo #ftdi
Вопрос:
Я попытался прочитать буфер FIFO в FT2332H, и это было успешно, но данные поступают в формате, затрудняющем их обработку или отображение.. Вот пример … Я использую библиотеку ftd2xx
while True:
rxn = d.getQueueStatus()
if (rxn>1024):
print(bytearray(d.read(1024)))
Вывод такой, как показано ниже.. Каждый 4 — байт, полученный из буфера .. Как получить каждый
bytearray(b'4444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444')
Это результат без bytearray
print((d.read(1024)))
b'4444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444'
Комментарии:
1. Привет, итак… в чем именно проблема сейчас? Преобразование одного байта в биты? Кстати, похоже на python. Почему вы не отметили это?
Ответ №1:
Предполагая, что это python:
Вы можете индексировать каждый отдельный байт в массиве байтов с помощью []
my_buffer = bytearray(d.read(1024)
теперь my_buffer[0]
содержит значение первого байта в вашем байтовом массиве, представленное как целое число со значением 0-255. Вам нужно будет дополнительно преобразовать это целое число в символ, чтобы создать символьный массив / строку. ASCII — это типичная корреляция между целочисленным значением и его символьным представлением. Порядок байтов в вашем буфере FIFO зависит от того, что помещает байты в FIFO на стороне FT232, не подключенной к USB. Многие устройства сначала отправляют наиболее важные данные, но вы должны сверить это с паспортом данных этого устройства.
Комментарии:
1. Отлично, это сработало.. Большое спасибо.. Новый код имеет вид if (rxn>1024): print(«rxn= «, rxn) my_buffer = bytearray(d.read(1024)) print(chr(my_buffer[0]))