Считывание данных FIFO FT2332H

#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]))