[英]Serial Port data transfer between Python and C application (Running on Microblaze)
我正在嘗試使用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 )
感謝您提供有關此問題的任何建議,並樂意提供更多代碼片段/信息。 也熱衷於有關職位禮節的任何反饋意見以及改進職位要求的潛力
干杯,
為了完整起見,我設法制定出一個解決方案,使用NIMAX跟蹤所有VISA事務,並使用VISA測試面板實現工作狀態,然后可以在代碼中實現
問題 :我在儀器類定義中設置了波特率和讀/寫終止字符,但從未實現。 看來我正在嘗試使用BAUD = 9600的默認設置和不正確的讀取終止進行查詢。
Fix ,我將設置波特率並讀取終止的代碼行移到設備類中,以便當我將設備定義為Instrument時,它將在發生任何事務之前設置這些屬性。 現在我可以讀寫了。
干杯,
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.