我正在通過一個可以輸出字符串位置的python程序讀取陀螺儀(sense-hat)的方向。我正在嘗試將這些數據用作處理程序中的一個輸入,以便根據陀螺儀的方向進行交互。我將如何獲得處理與Python程序接口?如何將python程序的輸出傳遞到處理程序
1
A
回答
1
我從來沒有用過Sense HAT,但我猜它是在幕後使用I2C。從理論上講,應該可以使用I2C io library來重新實現Processing中的代碼,但實際上可能需要付出相當大的努力,查看sense-hat library uses RTIMU以及它自己所做的所有幻想過濾。
爲了讓您的Python程序交談處理您至少有兩種選擇:
- pipe the output從Python程序中處理的
stdin
和解析什麼是通過 - 使用套接字來。
第二個選項應該是簡單,我能想到的多發地點:使用PyOSC爲Python和oscP5進行處理
- 原始UDP套接字
- OSC
我建議第二個選項再次:UDP是非常快,OSC的頂部,這使得它向東傳遞帶有參數的消息。
的Python腳本將:通過消息
- 輪詢方位數據
- 份額取向值等
/orientation
的處理草圖將:
- 是OSC服務器服務器並等待數據
- 從接收到的
/orientation
消息獲取3個浮動參數和繪製
下面是在Python一個未測試概念證明發件人腳本的:
import time from sense_hat import SenseHat from OSC import OSCClient, OSCMessage #update 60 times a second -> feel free to adjust this what works best delay = 1.0/60.0 # sense hat sense = SenseHat() # OSC client -> Processing client = OSCClient() client.connect(("localhost", 12000)) while True: # read sense hat orientation = sense.get_orientation_degrees() print("p: {pitch}, r: {roll}, y: {yaw}".format(**orientation)) # send data to Processing client.send(OSCMessage("/orientation", [orientation["pitch"],orientation["roll"],orientation["yaw"] ])) # wait time.sleep(delay)
和處理接收機:
import oscP5.*; import netP5.*; OscP5 oscP5; float pitch,roll,yaw; void setup() { size(400,400,P3D); frameRate(25); /* start oscP5, listening for incoming messages at port 12000 */ oscP5 = new OscP5(this,12000); } void draw() { background(0); text("pitch: " + pitch + "\nroll: " + roll + "\nyaw: " + yaw,10,15); } /* incoming osc message are forwarded to the oscEvent method. */ void oscEvent(OscMessage message) { message.print(); if(message.checkAddrPattern("/orientation")==true) { /* check if the typetag is the right one. -> expecting float (pitch),float (roll), float (yaw)*/ if(message.checkTypetag("fff")) { pitch = message.get(0).floatValue(); roll = message.get(1).floatValue(); yaw = message.get(2).floatValue(); } } }
注意您需要安裝PyOSC並運行Pr請先手動繪製草圖,否則您可能會收到有關OSCClient無法連接的Python錯誤。這個想法是處理成爲一個OSC服務器,Python腳本是一個OSCClient,服務器需要可供客戶端連接。 (你可以讓Python腳本,如果你想要一個OSC服務器和處理草圖如果你的作品好客戶端)
要安裝PyOSC嘗試:
sudo pip install pyosc
否則:
cd ~/Downloads wget https://pypi.python.org/packages/7c/e4/6abb118cf110813a7922119ed0d53e5fe51c570296785ec2a39f37606d85/pyOSC-0.3.5b-5294.tar.gz tar xvzf pyOSC-0.3.5b-5294.tar.gz cd pyOSC-0.3.5b-5294 sudo python setup.py install
再次,上述未經測試,但其想法是:
- 下載庫
- 將其解壓縮
- 導航到解壓縮文件夾
- 通過
sudo python setup.py install
0
我在bash腳本中使用了下面的代碼片段來從python程序獲取輸出。我希望這有幫助。
OUTPUT="$(python your_program.py)"
print($OUTPUT)
相關問題
- 1. Python瓶:如何將參數傳遞給函數處理程序
- 2. 如何將params傳遞到路由處理程序pre - hapi.js
- 3. 傳輸數據到處理程序
- 4. 將參數傳遞給python中的SAX處理程序
- 5. 如何將參數傳遞給Event.observe的處理程序?
- 6. 如何將參數傳遞給我的處理程序
- 7. 將數據從C++程序傳遞到linux上的python程序
- 8. ansible:傳遞變量的處理程序
- 9. 方法如何將參數傳遞給處理程序?
- 10. 如何將參數傳遞給事件處理程序
- 11. 如何將參數傳遞給win32com事件處理程序
- 12. 如何將數據從中間件傳遞給處理程序?
- 13. 如何將對象參數傳遞給事件處理程序?
- 14. 如何將參數傳遞給事件處理程序?
- 15. 如何將數據傳遞給錯誤處理程序?
- 16. 將python腳本輸出傳遞給另一個程序stdin
- 17. 將信息從應用程序傳遞到處理程序級別SOAP
- 18. 如何將環境從我的Python Web應用程序傳遞到Perl程序?
- 19. 如何將一個程序(ffmpeg)的輸出傳遞給python腳本?
- 20. 將附加信息傳遞到事件處理程序中
- 21. 將參數從EJB傳遞到SOAP處理程序解析器
- 22. 如何將程序輸出流式傳輸到wxpython listctrl?
- 23. 爲什麼我無法將csv處理程序傳遞給python線程函數?
- 24. 如何處理這種遞歸程序
- 25. 如何處理將HTML內容上傳到AppEngine應用程序?
- 26. 緩存HTTP處理程序.ashx輸出
- 27. 傳遞輸出值從C的程序以MATLAB(通過批處理文件)
- 28. 將自定義函數輸出添加到Python日誌記錄處理程序
- 29. 將參數傳遞給Vba中的事件處理程序
- 30. 將值傳遞給動態按鈕的事件處理程序
安裝它,你可以請給你想要達到什麼僞代碼呢? –
它取決於python程序在哪裏發送它的輸出。通常它可能會寫入標準輸出(使用'print'),因此Processing程序將讀取其標準輸入,並且我們將使用匿名管道傳遞。這並不總是合適的,這裏沒有足夠的信息來做出明確的決定。 – cdarke