我通过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'))
发送数据。
不知道为什么它现在有效,因为我认为我之前已经尝试过了。