2016-07-14 25 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]) –

相关问题