應用程式/解決方案‎ > ‎雜記‎ > ‎2020‎ > ‎

於Python上使用PktEvCdll的API呼叫範例

張貼者:2020年4月7日 上午1:21Wei-Xiuang Wang   [ 已更新 2020年4月7日 上午1:33 ]

雖然很簡單, 沒有理由需要示範, 就當是示範有多簡單吧~
如果沒有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)
便能再度開始接收資料, 如有其他可用的資訊源也可以在此指令中作變更


Comments