服务器:
# -*- coding: utf-8 -*-
import socket
import math
import time
import sys
#import inference_realsense_hand_classification as inf
import rospy
import roslib
import json
from std_msgs.msg import Int32MultiArray
from std_msgs.msg import String
from std_msgs.msg import Float64MultiArray
import time
import datetime
# dual_data = [0.0,0.0,0.0,0.0,0.0,0.0,0.0]
#
#
#
def socket_server_l(handname):
dual_data = [0.0,0.0,0.0,0.0,0.0,0.0,0.0]
dual_data[0] = handname.data[0]
dual_data[1] = handname.data[1]
dual_data[2] = handname.data[2]
dual_data[3] = handname.data[3]
dual_data[4] = handname.data[4]
dual_data[5] = handname.data[5]
dual_data[6] = handname.data[6]
print("dual_data:",dual_data)
send_data = json.dumps(dual_data)
c.send(send_data.encode())
def socket_server_r(msg):
hand_msg_ = [0.0,0.0,0.0,0.0,0.0,0.0,0.0]
hand_msg_[0] = msg.data[0]
hand_msg_[1] = msg.data[1]
hand_msg_[2] = msg.data[2]
hand_msg_[3] = msg.data[3]
hand_msg_[4] = msg.data[4]
hand_msg_[5] = msg.data[5]
hand_msg_[6] = msg.data[6]
#time.sleep(0.1)
send_msg = json.dumps(hand_msg_)
c.send(send_msg.encode())
if __name__ == "__main__":
s = socket.socket() # 创建 socket 对象
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
address = ('192.168.103.13', 12345) #server IP local IP
readdress = ('192.168.103.9', 12345) #客户client IP guest IP
# host = socket.gethostname()
# port =60000
s.bind(address) # 绑定端口
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
# s.bind((host, port))
print("服务端开启")
s.listen(5)
c, addr = s.accept() # 建立客户端连接font1
print('connected with',addr)
rospy.init_node('tcp_dual_hand',anonymous=True)
rospy.Subscriber('gesture_left',Float64MultiArray, socket_server_l)
s.close()
rospy.spin()
客户端:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import roslib
import rospy
#import tf
#import math
#import numpy as np
#from tf import transformations
from std_msgs.msg import Float32
from std_msgs.msg import String
from geometry_msgs.msg import PoseArray, PoseStamped
from std_msgs.msg import Float64MultiArray
import socket
import json
if __name__ == '__main__':
s = socket.socket()
IP = "192.168.103.13"
port = 12345
s.connect((IP, port))
buf_pose = [0.0,0.0,0.0,0.0,0.0,0.0,0.0]
#vision_pose = Float64MultiArray()
#gesture_flag = s.recv(1024).decode()
rospy.init_node('tcp_dual_server', anonymous=True)
r_pub = rospy.Publisher('r_msg_send', Float64MultiArray, queue_size=10)
l_pub = rospy.Publisher('l_msg_send', Float64MultiArray, queue_size=10)
#gesture_flag = s.recv(1024).decode()
#rospy.init_node('talker', anonymous=True)
rate = rospy.Rate(50) # 10hz
while not rospy.is_shutdown():
# for data in s.recv(1024):
# sting_msg = data.decode()
buf_msg = s.recv(1024).decode()
buf_pose = json.loads(buf_msg)
vision_pose = Float64MultiArray(data = buf_pose)
if vision_pose.data[0] == 1:
r_pub.publish(vision_pose)
print ("vision_pose_r:", vision_pose)
elif vision_pose.data[0] == 2:
l_pub.publish(vision_pose)
print ("vision_pose_l:", vision_pose)
#print ("vision_pose:", vision_pose)
# print(buf_pose)
rate.sleep()
#rospy.spin()