我正在尝试使用我的 PC 上的 python 控制台来读取和写入在 microblaze 主机上运行的嵌入式 C 应用程序。两者之间的连接是通过 FTDI 芯片的 USB -> UART。
关于我的技能/背景的简要说明:RF/微波工程师,大量的硬件经验和大量的 HDL 经验,但是很少或没有软件经验,当然没有 C 或 python 经验。
问题/问题:
- 我可以使用 PuTTy 或 Termite 控制台输入命令(例如“频率?”)并从函数接收预期的返回值。我什至可以使用函数的“设置”版本来设置值。在我的 C 应用程序中,uart_write_char 函数正在使用“putchar()”,我怀疑它只是打印字符和字符串,而不是“传输”数据(字节、双精度、浮点数等)。
这是描述 uart_write 函数的代码片段:
*
void uart_write_char(char data)
{
putchar(data);
}
*我想知道“打印”数据到控制台和“传输”数据到另一端之间是否有区别,所以我可以接收它并将其转储到文件中。
- 我想知道在我的 python 端使用 pyVISA 接收通过串口传输的数据的最佳方法。在我使用 ResourceManager() 和 openResource() 打开端口的那一刻,我相应地设置了波特率,但是我似乎无法“查询”设备。查询是一个 pyVISA 函数(?),它是先写后读。在这种情况下,我希望发送命令“频率?” 到嵌入式 microblaze,我希望结果会被传回。如果我可以使用 PuTTy 或 Termite 等控制台成功完成此操作,那么使用 pyVISA 查询功能有什么区别?也许编码?
编辑:我还尝试了https://media.readthedocs.org/pdf/pyvisa/1.6/pyvisa.pdf中记录的 query_ascii_value() 和 query_binary_value() 结果仍然相同,我在 python 中收到超时错误安慰。
更新我已经使用 NI-MAX 来捕获 Trace IO,并且超时似乎在读取端。如果我连接到设备,我假设它会完成写入功能,这是真的吗?这是 Ni-MAX 日志
viOpenDefaultRM (0x00001001) 进程 ID:0x000082C8 线程 ID:0x00006F90 开始时间:15:21:12.0642 调用持续时间 00:00:00.0139 状态:0 (VI_SUCCESS)
viClose (0x00000000) 进程 ID:0x000082C8 线程 ID: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") 进程 ID: 0x000082C8 线程 ID: 0x00006F90 开始时间: 15:21 :12.0781 通话时间 00:00:00.0000 状态:0 (VI_SUCCESS)
viOpen (0x00001001, "ASRL6::INSTR", 0 (0x0), 0 (0x0), 0x00000001) 进程 ID: 0x000082C8 线程 ID: 0x00006F90 开始时间: 15:21:12.0792 调用持续时间 00:00:00.0657 状态: 0 ( VI_成功)
viParseRsrcEx (0x00001001, "ASRL6::INSTR", 4 (0x4), 6 (0x6), "INSTR", NULL, NULL) 进程 ID: 0x000082C8 线程 ID: 0x00006F90 开始时间: 15:21:12.1450 调用持续时间 00:00 :00.0000 状态:0 (VI_SUCCESS)
viWrite (ASRL6::INSTR (0x00000001), "tx_lo_freq?...", 14 (0xE), 14 (0xE)) 进程 ID: 0x000082C8 线程 ID: 0x00006F90 开始时间: 15:21:24.5897 调用持续时间 00:00: 00.0000 状态:0 (VI_SUCCESS)
- viRead (ASRL6::INSTR (0x00000001), 0x000001DF461F5420, 20480 (0x5000), 0 (0x0)) 进程 ID: 0x000082C8 线程 ID: 0x00006F90 开始时间: 15:21:24.5897 调用持续时间 00:00:02.01500 00:00: 02.0500 )
我很感激有关此问题的任何建议,并很高兴提供更多代码片段/信息。也热衷于任何关于帖子礼仪的反馈以及改进帖子请求的潜力
干杯,