於Python上使用PktEvCdll的API呼叫範例
張貼日期:Apr 07, 2020 8:21:10 AM
雖然很簡單, 沒有理由需要示範, 就當是示範有多簡單吧~
如果沒有PktEvCdll這個API, 可以先參考這篇 於Python上使用DLL裡的API呼叫範例
首先看到 PktEvCdll.h 這個C/C++的標頭檔內容提供的API說明
然後寫下Python的程式碼,
Part1: 配合API的宣告部分, 引用DLL裏的API的功能
Part2:設計收到封包的處理函式, 並啟動API的處理程序, 加上一些多餘的註解說明
(C/C++的類似處裡可參考 TSHS (Tag Stream History Server)#RawData )
這裡是用HFOCX的RawData資訊源作為示範, 將Python程式碼存檔為檔名 PktEvCdll_TSHS_HFOCX.py
然後用Python執行程式碼(以批次擋示意):
Py.bat
@set PATH=%PATH%;C:\Python3.8.1\scripts;C:\Python3.8.1
python.exe -i PktEvCdll_TSHS_HFOCX.py
只要資訊源和網路都正確, 執行後就能一直接收資料
不論源頭有重開機或網路曾斷過恢復都不用管,只要配合TSHS簡單的序號銜續便能資料不斷不漏不停
這種模式接收資料的狀態下可以繼續作Python的指令操作,
例如鍵入 3+8 按Enter後Python回應 11
執行Python程式碼呼叫API的功能 fnPktEvCdll_Stop() 便能停止接收資料, 不會再跳CB函式所寫的print
執行Python程式碼再次呼叫API的功能 fnPktEvCdll_Start(b"192.168.1.114:18220", cbPyPktEvCdllProcess)
便能再度開始接收資料, 如有其他可用的資訊源也可以在此指令中作變更