2016-03-04 2 views
0

Я использую этот код для отправки информации в Pure Data, в консоли Python я вижу две разные переменные, однако Pure Data продолжает получать их вместе не как два отдельных номера ,Отправка нескольких значений через сокеты с помощью Python to Pure Data

import bge 

# run main program 
main() 

import socket 

# get controller 
cont2 = bge.logic.getCurrentController() 
# get object that controller is attached to 
owner2 = cont2.owner 
# get the current scene 
scene = bge.logic.getCurrentScene() 
# get a list of the objects in the scene 
objList = scene.objects 

# get object named Box 
enemy = objList["enemy"] 
enemy2 = objList["enemy2"] 

# get the distance between them 
distance = owner2.getDistanceTo(enemy) 
XValue = distance 
print (distance) 
# get the distance between them 
distance2 = owner2.getDistanceTo(enemy2) 
XValue = distance2 
print (distance2)  

tsr = str(distance + distance2)  
tsr += ';' 
host = '127.0.0.1' 
port = 50007 
msg = '123456;' 

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
s.connect((host, port)) 
s.send(tsr.encode()) 
s.shutdown(0) 
s.close() 

Мне нужно отправить до 10 различных расстояний от объектов, это делать с нахождением расстояния от врагов

+3

, пожалуйста, попробуйте обрезать свою проблему до минимального * примера. например довольно неуместно, что вы запрашиваете 'bge', чтобы получить ваши« враги », и что это за задания' msg' и 'XValue'? –

ответ

3

Проблема полностью в коде Python:

У вас есть две переменные distance1 и distance2 (давайте предположим, что distance1=666 и distance2=42 а затем построить строку:

tsr = str(distance1 + distance2) 

Теперь вы сначала оцените выражение distance1+distance2 (суммируя их до 708), а затем создайте строку из этого значения ("708"). Итак, ваш скрипт Python отправляет измененные данные.

Таким образом, ваш первый шаг, чтобы преобразовать значения строк до того «добавив,» их (так как добавление строк действительно добавление их):

tsr = str(distance1) + str(distance2) 

Но это действительно даст вам строка "66642", так как вы не сказали приложению отделить значения к значению пробелом.

Так один правильное решение:

tsr = str(distance1) + " " + str(distance2) 
tsr += ";" 
0
var1="5Hello3How3Are3you8I'm FINE2is4that3so?3yes" 
#initial measurement 

m=var1[0] 
m=int(m) 
print var1[1:1+m] 
INIT_LEN=1 
LENGTH=m 
n=1 
NUMBER_FRAMES=9-1 #number of bytes 9 

while n<=NUMBER_FRAMES: 
    INIT_LEN=INIT_LEN+LENGTH 
    l=var1[INIT_LEN] 
    INIT_LEN=INIT_LEN+1 
    LENGTH=int(l) 
    print var1[INIT_LEN:INIT_LEN+LENGTH] 
    n=n+1 

Если Youre готовы передать несколько строк concatinated в одной строке concatinated я предлагаю вам пройти через текущий код.

 Смежные вопросы

  • Нет связанных вопросов^_^