回答
如果你想發送一個值到正在運行的Pd實例(獨立應用程序),你可以通過Pd的網絡設施來實現。
例如
[netreceive 65432 1]
|
[route value]
|
[print]
將接收經由從CMDLINE發送的數據:
echo "value 1.234567;" | pdsend 65432 localhost udp
也可以一次發送多個值,例如
echo "value 1.234567 3.141592;" | pdsend 65432 localhost udp
如果你發現pdsend
(如果你啓動可執行文件要送你有一個相當大的開銷!每條消息EG)減緩你的目的,你可以在你的應用程序直接構造消息,並使用普通的UDP-socket發送FUDI - 給Pd的消息。
FUDI消息確實是簡單的文本字符串,原子由空白和終止分號分隔,例如,
accelerator 1.23 3.14 2.97; button 1;
可能還考慮使用OSC,但對於這一點,你需要一些外部組件(由mrpeach OSC;通過mrpeach(或iemnet)淨)對鈀的一面。對於性能,我一直使用後者與複雜的跟蹤數據(每幀125fps數百個值)和流多聲道音頻,所以我不認爲這是一個問題。
如果你已經使用libPd只有想從主機應用程序進行通信,用亞當的解決方案(但你的問題是有點含糊不清這一點,所以我包括這個答案,以防萬一)
首先,檢查出ofxpd。它具有OpenFrameworks的出色的libpd實現。如果你從C++開始,你可能想從OpenFrameworks開始,因爲它有一些很好的文檔,並且通過ofxpd擴展與Pd很好的集成。
開始使用libpd有兩個很好的參考資料(雖然都沒有詳細介紹C++):the original article和Peter Brinkmann's book。
在libpd wiki上有一個p age for getting started with libpd。底部的鏈接項目在main.cpp中有一些代碼片段,演示瞭如何發送浮動到你的Pd補丁。
pd.sendBang("fromCPP");
pd.sendFloat("fromCPP", 100);
pd.sendSymbol("fromCPP", "test string");
在PD的補丁,你會建立一個[接收fromCPP],然後這些消息將在您更新寄存器。
爲了獲得打印輸出,您必須使用libpd中的接收器來接收字符串,然後對它們執行某些操作。 libpd附帶了PdBase,這是一個讓libpd啓動並運行的絕佳課程。 PdBase具有sendBang,sendFloat,sendMessage,並且還設置了接收器,以便您可以從Pd修補程序獲取輸出。
- 1. 在Python中實現libPD(純數據包裝)
- 2. C++適配器類來包裝實際實現
- 3. 如何 「包裝」 在C#實現
- 4. C++在Pascal中實現的.lib包裝
- 5. 線程包裝器實現問題
- 6. 爲C和C++安裝MessagePack實現時的鏈接器錯誤
- 7. Serilog的記錄器包裝的實現和使用
- 8. C++ CLI包裝器
- 9. C#的包裝器
- 10. Bing地圖REST服務C#API - 實現HTTPRequests的和論證包裝/拆包
- 11. 在C++中包裝不同的C API實現
- 12. 標準C++和MFC包裝器
- 13. 實現IEnumerable.GetEnumerator()在一個包裝Dictionary類和包裝主要結構
- 14. C++包裝C結構*和*和功能
- 15. Firefox C#包裝器/控件
- 16. C++的Crossplatform Sqlite3包裝器
- 17. C靜態庫包裝器
- 18. linphone的C#包裝器
- 19. C#VLC 1.1包裝器
- 20. C#包裝器如何
- 21. Encoding.com的C#包裝器?
- 22. C#的GnuPG包裝器#
- 23. authorize.net C#包裝器/庫
- 24. istream的C++/CLI包裝器
- 25. 如何實現一個最簡單的C++可調用對象包裝器?
- 26. InvalidCastException在本機C++中使用託管包裝器實現.net事件
- 27. 實現集合初始化在C#我的名單包裝
- 28. 包裝本機庫,實現在C#回調#
- 29. 自動生成可編譯的C# - 實現INotifyPropertyChanged的包裝類
- 30. 包裝ObjectContext實現的方法
謝謝,但即使使用UDP也太慢了。 我需要從紅外距離傳感器讀取數值,當我只使用一個傳感器時速度正常,但是當我使用兩個傳感器時,速度不再可接受。 – Wateredge
在這種情況下,我認爲問題不是在Pd端而是在發送端 - 例如, 'pdsend'的通話開銷。我已經相應地更新了答案。 –
謝謝,我試圖使用OSCpack,但是當我編譯示例代碼時,我得到:「SimpleSend.cpp:5:41:致命錯誤:osc/OscOutboundPacketStream.h:沒有這樣的文件或目錄」 這很奇怪,因爲該文件是那裏! 預先感謝您;) – Wateredge