Skip to content

Commit 5ee2bd8

Browse files
committed
add socket demo
1 parent 40b616d commit 5ee2bd8

File tree

3 files changed

+140
-0
lines changed

3 files changed

+140
-0
lines changed

demo/Client.py

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# coding:utf-8
2+
# // An highlighted block
3+
import traceback
4+
import socket
5+
import time
6+
import sys
7+
# RPi's IP
8+
SERVER_IP = "192.168.10.115" # 输入正确的目标ip地址,请查看树莓派ip
9+
SERVER_PORT = 9000
10+
11+
print("Starting socket: TCP...")
12+
13+
print("Please input!")
14+
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
15+
sock.connect((SERVER_IP, SERVER_PORT)) # 打开链接
16+
444
17+
sock.sendall(str.encode("12312"))
18+
received = sock.recv(1024)
19+
print("read: " + received.decode())
20+
while True:
21+
try:
22+
#
23+
# if len(data)>0:
24+
command = input()
25+
command += '\n'
26+
print("send: " + command)
27+
try:
28+
sock.sendall(str.encode(command))
29+
received = sock.recv(1024)
30+
print("read: " + received.decode())
31+
except ConnectionRefusedError:
32+
print('error')
33+
sock.close()
34+
pass
35+
except BlockingIOError:
36+
pass
37+
except:
38+
pass
39+
40+
except Exception:
41+
# print("exception")
42+
print(traceback.format_exc())
43+
sys.exit(1)

demo/REMADE.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# 使用说明
2+
## 使用说明
3+
* "Client.py"是客户端的样例,使用在电脑中
4+
* "Servo.py"是服务器端的执行文件,使用前要修改对应的ip地址信息,防止设备无法连接
5+
## 参考内容
6+
* [Socket 使用解析](https://blog.csdn.net/pashanhu6402/article/details/96428887?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162392592016780357215629%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=162392592016780357215629&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-96428887.first_rank_v2_pc_rank_v29&utm_term=socket&spm=1018.2226.3001.4187)
7+
8+
* [mycobot 使用说明](https://www.elephantrobotics.com/docs/myCobot/)
9+
10+
* [Scoket 函数解析](https://www.runoob.com/python/python-socket.html)

demo/Server.py

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
import time
2+
import socketserver
3+
from pymycobot.mycobot import MyCobot
4+
import numpy as np
5+
6+
7+
class TCPMessageHandler(socketserver.StreamRequestHandler):
8+
9+
def handle(self):
10+
"""
11+
Process socket data
12+
13+
"""
14+
# process received data.
15+
while True:
16+
try:
17+
# data=bytes.decode(self.rfile.readline().strip())
18+
data = bytes.decode(self.request.recv(1024))
19+
print(data)
20+
except Exception as ex:
21+
print(ex)
22+
return
23+
24+
data = data.split(',')
25+
commend = []
26+
27+
for dt in data:
28+
try:
29+
if dt.isdigit():
30+
commend.append(int(dt))
31+
else:
32+
commend.append(float(dt))
33+
except ValueError:
34+
commend.append(None)
35+
36+
if len(commend) > 0:
37+
print("Received:%s" % commend)
38+
self.request.sendall(str.encode(str(commend)))
39+
40+
41+
class SocketServer(object):
42+
def __init__(self, host, port):
43+
super().__init__()
44+
self.host = host
45+
self.port = port
46+
47+
def start_server(self):
48+
while True:
49+
try:
50+
server = socketserver.TCPServer((self.host, self.port),
51+
TCPMessageHandler)
52+
break
53+
except:
54+
time.sleep(1)
55+
continue
56+
try:
57+
print("server open seccess")
58+
server.serve_forever()
59+
60+
finally:
61+
print("server close")
62+
server.server_close()
63+
64+
65+
class Robot(object):
66+
def __init__(self, serial, baud):
67+
super().__init__()
68+
self.serial = serial
69+
self.baud = baud
70+
71+
def start_Robot(self):
72+
try:
73+
mc = MyCobot(self.serial, self.baud) # 树莓派版本打开机械臂,串口固定,无需USB连接
74+
print(mc) # 打印机械臂端口信息
75+
except:
76+
print("can not find cobot")
77+
exit(0)
78+
79+
80+
if __name__ == "__main__":
81+
host = '192.168.10.191' # 输入本机IP地址
82+
port = 9000
83+
serial = ''
84+
baud = 1000000
85+
server = SocketServer(host, port) # 声明服务器端口
86+
mycobot = Robot(serial, baud) # 声明机械臂接口
87+
server.start_server() # 永久打开服务器

0 commit comments

Comments
 (0)