通过套接字发送和接收字符串

时间:2014-05-19 08:24:09

标签: python sockets encoding floating-point typeerror

我通过tcp / ip socket接收和发送数据(坐标), 连接是cameraPC-> laptop->机器人。 我收到的字符串是:DET4 1 X:75.84 Y:60.96 VINKEL:208.80 LUTANDE:0

我取出X和Y坐标,这些是我想发送给机器人的数据。我是编码的新手,但据我所知,它不可能通过套接字发送浮点数,字符串或列表。这让我得到了字节。但是当转换为像SR.send(bytes(CamX, 'utf-8'))这样的字节时,我实际上正在发送b'CamX'。但是使用b前缀,机器人将无法正确读取它。

我和机器人公司谈过,他们建议SR.send("(" + str(CamX) + ", " + str(CamY) + ")"),他们已经成功地尝试了这一点。但我收到错误“TypeError:'str'不支持缓冲区接口”

到目前为止的计划:

#RECEIVING DATA FROM CAMERA#
import socket
host= "192.168.1.10"
port= 3000

print("start");
S = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
S.connect((host,port))
received = str(S.recv(1024), "utf-8")
print(received);
S.close()

#CONVERTING DATA TO X,Y COORDINATES#

CamX=received[9:14]
CamY=received[17:23]

CamX=float(CamX)
CamY=float(CamY)

print('X:', CamX)
print('Y:', CamY)


#SENDING DATA TO ROBOT#
host2="192.168.1.5"
print("start");
SR = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
SR.bind((host2,port))
SR.listen(5)
conn, addr=SR.accept()
print("Connected by ",addr)
SR.sendto(CamX,host2)

编辑,解决: 通过添加修复它  CamPos= '('+str(CamX) +','+str(CamY)+',0.2,0.01,3.14,0.01)'转换部分,  并使用conn.send(CamPos.encode('utf-8'))发送数据。 不知道为什么它现在有效,因为我认为我之前已经尝试过了。

0 个答案:

没有答案