2016-07-14 8 views
1

EEGヘッドセットから受信データを読み込むために、私のプロジェクトの1つにUDPソケットプログラムを使用しています。次に、このデータを使用してロボットアームのサーボモータを制御します。私はソケットを作成し、データを印刷するために使用しているコードは正常に動作します。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を探して番号をコピーする方法はありますか?または、33個のセクションのストリームでTargetCodeが常に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ループを使用する方法はありますか?あるいはそれが単語TargetCodeを見たら何らかの方法でそれ以降の番号を取得する? –

+0

これで、eegからターゲットコードを抽出するだけでいいですか?それは文字列ですか? –

+0

文字列の場合、数値の抽出は>> int(outputData.split( "\ n")[1] .split( "")[1]) –

関連する問題