2016-07-14 28 views
1

我正在爲我的一個項目使用UDP套接字程序來讀取來自EEG耳機的傳入數據。然後,我使用這些數據來控制機器人手臂中的伺服電機。我用來創建套接字並打印數據的代碼正常工作。如何在Python中過濾來自套接字的傳入數據?

import socket 
import subprocess 

UDP_IP = "169.254.110.133" 
UDP_PORT = 50000 

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
sock.bind((UDP_IP, UDP_PORT)) 

while True: 
     (data,addr) = sock.recvfrom(1024) 
     print(data) 

正在進入的數據是從耳機原始EEG數據和它看起來像這樣在終端:

SourceTime 31972 

TargetCode 1 

ResultCode 0 

Feedback 1 

PauseApplication 0 

CursorPosX 717 

CursorPosY 2047 

CursorPosZ 2047 

此數據具有33個不同的部分,每個部分幾毫秒。數據總是以相同的順序出現。對於我的代碼,我只需要從數據中獲取幾條信息(TargetCode,ResultCode和Feedback)。如何過濾掉這些部分並在我的代碼中使用它們。有沒有辦法查找TargetCode並複製數字?或者因爲TargetCode在33部分的數據流中始終是24號,我可以以這種方式提取它嗎?

回答

0

這可能有幫助。

服務器

import socket    

s = socket.socket()   
UDP_IP = "169.254.110.133" 
UDP_PORT = 50000    
sock.bind((UDP_IP, UDP_PORT))   

s.listen(5)     
while True: 
    c, addr = s.accept()  
    c.send('Connected to server.') 
    c.close()   

客戶

import socket    
UDP_IP = "169.254.110.133" 
UDP_PORT = 50000 
s = socket.socket()   
s.connect((UDP_IP,UDP_PORT)) 
print (s.recv(1024)) 
s.close      
+0

我很欣賞的響應,但是,這並不準確似乎解決我的問題。該程序的服務器端是EEG耳機程序,它只是要求我輸入IP和端口號來發送數據。在客戶端,我需要一種方法來從傳入流中提取幾位數據。有沒有辦法使用for for循環呢?或者某種方式來說,如果它看到單詞TargetCode之後獲得數字? –

+0

所以你只需要從eeg中提取目標代碼?它是一個字符串嗎? –

+0

如果它是一個字符串,那麼數字提取將是>> int(outputData.split(「\ n」)[1] .split(「」)[1]) –

相關問題