我正在尝试使用PC上的python控制台读取并写入运行在microblaze主机上的嵌入式C应用程序。两者之间的连接是通过FTDI芯片的USB-> UART。
关于我的技能/背景的简要说明:RF /微波工程师,具有丰富的硬件经验和HDL经验,但是几乎没有软件经验,当然也没有C或python经验。
问题/问题:
以下是描述uart_write函数的代码段:
*
void uart_write_char(char data)
{
putchar(data);
}
* 我想知道“打印”数据到控制台和“传输”数据到另一端之间是否有区别,因此我可以接收它并将其转储到文件中。
编辑:我还尝试了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_SUCCESS)
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.0006 状态:0xBFFF0015( VI_ERROR_TMO )
我非常感谢您提供有关此问题的任何建议,并很高兴提供更多代码段/信息。也渴望获得有关礼节礼貌和改善职位要求的潜力的任何反馈
干杯
答案 0 :(得分:0)
为了完整起见,我设法使用NIMAX来跟踪所有VISA事务,并使用VISA测试面板来实现工作状态,然后可以在代码中实现该解决方案
问题:我在仪器类定义中设置了波特率和读/写终止字符,但从未实现。看来我正在尝试使用BAUD = 9600的默认设置和不正确的读取终止进行查询。
修复,我将设置波特率并读取终止的代码行移到了设备类中,以便在将设备定义为工具时,它会在发生任何交易之前设置这些属性。现在我可以读写了。
干杯