2014-07-03 47 views
3

我有一個處理程序(處理現場音頻)和一個用python編寫的程序(打電話給gatttool通過藍牙低能量與外設通信)。有沒有一種簡單的方法將值從處理髮送到python?我應該創建一個串行連接並以這種方式傳遞字節嗎?處理草圖和python程序之間的通信?

+0

要清楚 - 你在哪裏運行處理腳本?它是否與python腳本在同一臺設備上運行? –

+0

是的,他們在同一臺計算機上運行。 – orangenarwhals

回答

8

請記住,它們運行在同一臺計算機上,最好使用套接字在Python端創建一個服務器,並在處理端創建一個客戶端,然後將數據從客戶端發送到服務器辦法。 Python服務器將等待來自處理客戶端的連接,並在收到數據後使用它。

你可以找到例子,如所有網站上,但這裏是由等待處理和Python文檔給出的例子:

Processing client:

import processing.net.*; 
Client myClient; 

void setup() { 
    size(200, 200); 
    /* Connect to the local machine at port 5204 
    * (or whichever port you choose to run the 
    * server on). 
    * This example will not run if you haven't 
    * previously started a server on this port. 
    */ 
    myClient = new Client(this, "127.0.0.1", 5204); 
} 

void draw() { 
    myClient.write("Paging Python!"); // send whatever you need to send here 
} 

Python server:

# Echo server program 
import socket 

HOST = ''     # Symbolic name meaning all available interfaces 
PORT = 50007    # Arbitrary non-privileged port 
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
s.bind((HOST, PORT)) 
s.listen(1) 
conn, addr = s.accept() 
print('Connected by', addr) 
while True: 
    data = conn.recv(1024) 
    if not data: break 
    print(data) # Paging Python! 
    # do whatever you need to do with the data 
conn.close() 
# optionally put a loop here so that you start 
# listening again after the connection closes 
+0

這太棒了!我想象着花了一段時間在串行連接上佔用了大量的字節,謝謝你們不要那麼擔心。 – orangenarwhals

+0

沒問題,很高興我能幫忙:) –