Я пытаюсь использовать консоль python со своего ПК для чтения и записи во встроенное приложение C, работающее на хосте microblaze. Соединение между ними - USB -> UART через чип FTDI.
Краткое примечание о моих навыках / опыте : инженер по радиочастотным / микроволновым технологиям, большой опыт работы с аппаратным обеспечением и большой опыт работы с HDL, но практически не имеет опыта работы с программным обеспечением, конечно же, ни в C, ни в python.
Проблемные / Вопросы :
- Я могу использовать консоль PuTTy или Termite для ввода команд (например, «частота?») И получения ожидаемых возвращаемых значений от функций. Я даже могу установить значения, используя «установленную» версию функции. В моем C-приложении функция uart_write_char использует 'putchar ()', и я подозреваю, что она просто печатает символы и строки, а не "передает" данные (байты, двойные числа, числа с плавающей запятой и т. Д.).
Вот фрагмент кода, описывающий функцию uart_write:
*
void uart_write_char(char data)
{
putchar(data);
}
*
Я хотел бы знать, есть ли разница между «печатью» данных на консоль и «передачей» данных на другой конец, чтобы я мог получить их и вывести в файл.
- Я хотел бы знать, как лучше всего использовать pyVISA на моей стороне Python для получения данных, передаваемых через последовательный порт. В тот момент, когда я открываю порт с помощью ResourceManager () и openResource (), я соответственно устанавливаю скорость передачи данных, однако я не могу «запросить» устройство. Запрос - это функция pyVISA (?), Которая представляет собой запись, за которой следует чтение. В этом случае я хотел бы передать команду «частота?» на встроенный микроблейз, и я ожидаю, что результат будет передан обратно. Если я могу сделать это успешно с помощью консоли, такой как PuTTy или Termite, в чем разница с использованием функции запроса pyVISA? возможно кодировка?
Редактировать: Я также пробовал query_ascii_value () и query_binary_value (), как описано в https://media.readthedocs.org/pdf/pyvisa/1.6/pyvisa.pdf
Результат остается прежним, я получаю сообщение об ошибке Timeout в консоли Python.
ОБНОВЛЕНИЕ Я использовал NI-MAX для захвата трассировки ввода-вывода, и время ожидания истекло. Если я подключен к устройству, я предполагаю, что он завершит функцию записи, это правда? Вот журнал Ni-MAX
viOpenDefaultRM (0x00001001)
Идентификатор процесса: 0x000082C8 Идентификатор потока: 0x00006F90
Время начала: 15: 21: 12.0642 Продолжительность звонка 00: 00: 00.0139
Статус: 0 (VI_SUCCESS)
viClose (0x00000000)
Идентификатор процесса: 0x000082C8 Идентификатор потока: 0x00006F90
Время начала: 15: 21: 12.0781 Продолжительность звонка 00: 00: 00.0000
Статус: 0x3FFF0082 (VI_WARN_NULL_OBJECT)
viParseRsrcEx (0x00001001, "ASRL6 :: INSTR", 4 (0x4), 6 (0x6), "INSTR", "ASRL6 :: INSTR", "COM6")
Идентификатор процесса: 0x000082C8 Идентификатор потока: 0x00006F90
Время начала: 15: 21: 12.0781 Продолжительность звонка 00: 00: 00.0000
Статус: 0 (VI_SUCCESS)
viOpen (0x00001001, "ASRL6 :: INSTR", 0 (0x0), 0 (0x0), 0x00000001)
Идентификатор процесса: 0x000082C8 Идентификатор потока: 0x00006F90
Время начала: 15: 21: 12.0792 Продолжительность звонка 00: 00: 00.0657
Статус: 0 (VI_SUCCESS)
viParseRsrcEx (0x00001001, "ASRL6 :: INSTR", 4 (0x4), 6 (0x6), "INSTR", NULL, NULL)
Идентификатор процесса: 0x000082C8 Идентификатор потока: 0x00006F90
Время начала: 15: 21: 12.1450 Продолжительность звонка 00: 00: 00.0000
Статус: 0 (VI_SUCCESS)
viWrite (ASRL6 :: INSTR (0x00000001), "tx_lo_freq? ...", 14 (0xE), 14 (0xE))
Идентификатор процесса: 0x000082C8 Идентификатор потока: 0x00006F90
Время начала: 15: 21: 24.5897 Продолжительность звонка 00: 00: 00.0000
Статус: 0 (VI_SUCCESS)
- viRead (ASRL6 :: INSTR (0x00000001), 0x000001DF461F5420, 20480 (0x5000), 0 (0x0))
Идентификатор процесса: 0x000082C8 Идентификатор потока: 0x00006F90
Время начала: 15: 21: 24.5897 Продолжительность звонка 00: 00: 02.0006
Статус: 0xBFFF0015 ( VI_ERROR_TMO )
Я ценю любые советы по этому вопросу и с радостью предоставлю еще несколько фрагментов кода / информацию. Также хотелось бы получить отзывы о почтовом этикете и возможности улучшения почтового запроса
Приветствия