Skip to content

Commit 15bca9a

Browse files
committed
push code
1 parent e1fd2d0 commit 15bca9a

File tree

2 files changed

+439
-263
lines changed

2 files changed

+439
-263
lines changed

pymycobot/common.py

Lines changed: 60 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ class ProtocolCode(object):
2424
IS_CONTROLLER_CONNECTED = 0x14
2525
READ_NEXT_ERROR = 0x15
2626
SET_FRESH_MODE = 0x16
27-
GET_FRESH_MODE = 0x17
27+
GET_FRESH_MODE = 0x17
2828
SET_FREE_MODE = 0x1A
2929
IS_FREE_MODE = 0x1B
3030

@@ -86,12 +86,12 @@ class ProtocolCode(object):
8686
GET_GRIPPER_VALUE = 0x65
8787
SET_GRIPPER_STATE = 0x66
8888
SET_GRIPPER_VALUE = 0x67
89-
SET_GRIPPER_CALIBRATION = 0x68
89+
SET_GRIPPER_CALIBRATION = 0x68
9090
IS_GRIPPER_MOVING = 0x69
9191
SET_COLOR = 0x6A
9292
SET_ELETRIC_GRIPPER = 0x6B
9393
INIT_ELETRIC_GRIPPER = 0x6C
94-
94+
9595
GET_ACCEI_DATA = 0x73
9696

9797
# Basic
@@ -113,7 +113,7 @@ class ProtocolCode(object):
113113

114114
# Get the measured distance
115115
GET_TOF_DISTANCE = 0xC0
116-
116+
117117
# Coordinate transformation
118118
SET_TOOL_REFERENCE = 0x81
119119
GET_TOOL_REFERENCE = 0x82
@@ -125,25 +125,25 @@ class ProtocolCode(object):
125125
GET_MOVEMENT_TYPE = 0x88
126126
SET_END_TYPE = 0x89
127127
GET_END_TYPE = 0x8A
128-
128+
129129
# Impact checking
130130
SET_JOINT_CURRENT = 0x90
131131
GET_JOINT_CURRENT = 0x91
132132
SET_CURRENT_STATE = 0x92
133-
133+
134134
# planning speed
135135
GET_PLAN_SPEED = 0xD0
136136
GET_PLAN_ACCELERATION = 0xD1
137137
SET_PLAN_SPEED = 0xD2
138138
SET_PLAN_ACCELERATION = 0xD3
139-
139+
140140
# Motor status read
141141
GET_SERVO_SPEED = 0xE1
142142
GET_SERVO_CURRENTS = 0xE2
143143
GET_SERVO_VOLTAGES = 0xE3
144144
GET_SERVO_STATUS = 0xE4
145145
GET_SERVO_TEMPS = 0xE5
146-
146+
147147
GET_BASE_COORDS = 0xF0
148148
BASE_TO_SINGLE_COORDS = 0xF1
149149
COLLISION = 0xF2
@@ -154,23 +154,23 @@ class ProtocolCode(object):
154154
JOG_INC_COORD = 0xF7
155155
COLLISION_SWITCH = 0xF8
156156
IS_COLLISION_ON = 0xF9
157-
157+
158158
# IIC
159159
# SET_IIC_STATE = 0xA4
160160
# GET_IIS_BYTE = 0xA5
161-
# SET_IIC_BYTE = 0xA6
162-
161+
# SET_IIC_BYTE = 0xA6
162+
163163
# mypalletizer lite
164164
END = "\r"
165165
COORDS_SET = "G0"
166166
SLEEP_TIME = "G4"
167-
BACK_ZERO = "G28"
167+
BACK_ZERO = "G28"
168168
ABS_CARTESIAN = "G90"
169169
REL_CARTESIAN = "G91"
170170
SET_JOINT = "G92"
171171
SET_PWM = "M1"
172-
GPIO_CLOSE = "M2"
173-
GPIO_ON = "M3"
172+
GPIO_CLOSE = "M3"
173+
GPIO_ON = "M2"
174174
GRIPPER_ZERO = "M4"
175175
GIRPPER_OPEN = "M5"
176176
GIRPPER_CLOSE = "M6"
@@ -186,7 +186,7 @@ class ProtocolCode(object):
186186
LOCK_SERVOS = "M18"
187187
GET_CURRENT_COORD_INFO = "M114"
188188
GET_BACK_ZERO_STATUS = "M119"
189-
189+
190190

191191
class DataProcessor(object):
192192
# Functional approach
@@ -195,9 +195,12 @@ def _encode_int8(self, data):
195195

196196
def _encode_int16(self, data):
197197
if isinstance(data, int):
198-
return [ord(i) if isinstance(i, str) else i for i in list(struct.pack(">h", data))]
198+
return [
199+
ord(i) if isinstance(i, str) else i
200+
for i in list(struct.pack(">h", data))
201+
]
199202
else:
200-
return sum([list(struct.pack('>h', elem)) for elem in data], [])
203+
return sum([list(struct.pack(">h", elem)) for elem in data], [])
201204

202205
def _decode_int8(self, data):
203206
return struct.unpack("B", data)[0]
@@ -219,8 +222,7 @@ def _int2coord(self, _int):
219222

220223
def _flatten(self, _list):
221224
return sum(
222-
([x] if not isinstance(x, list) else self._flatten(x)
223-
for x in _list), []
225+
([x] if not isinstance(x, list) else self._flatten(x) for x in _list), []
224226
)
225227

226228
def _process_data_command(self, args):
@@ -229,16 +231,15 @@ def _process_data_command(self, args):
229231

230232
return self._flatten(
231233
[
232-
[self._encode_int16(int(i))
233-
for i in x] if isinstance(x, list) else x
234+
[self._encode_int16(int(i)) for i in x] if isinstance(x, list) else x
234235
for x in args
235236
]
236237
)
237238

238239
def _is_frame_header(self, data, pos1, pos2):
239240
return data[pos1] == ProtocolCode.HEADER and data[pos2] == ProtocolCode.HEADER
240241

241-
def _process_received(self, data, genre, arm = 6):
242+
def _process_received(self, data, genre, arm=6):
242243
if not data:
243244
return []
244245
if genre == 177:
@@ -250,7 +251,7 @@ def _process_received(self, data, genre, arm = 6):
250251
data_len = len(data)
251252
# Get valid header: 0xfe0xfe
252253
header_i, header_j = 0, 1
253-
while header_j < data_len-4:
254+
while header_j < data_len - 4:
254255
if self._is_frame_header(data, header_i, header_j):
255256
if arm == 6:
256257
cmd_id = data[header_i + 3]
@@ -267,8 +268,7 @@ def _process_received(self, data, genre, arm = 6):
267268
data_len = data[header_i + 2] - 2
268269
elif arm == 12:
269270
data_len = data[header_i + 3] - 2
270-
unique_data = [ProtocolCode.GET_BASIC_INPUT,
271-
ProtocolCode.GET_DIGITAL_INPUT]
271+
unique_data = [ProtocolCode.GET_BASIC_INPUT, ProtocolCode.GET_DIGITAL_INPUT]
272272

273273
if cmd_id in unique_data:
274274
data_pos = header_i + 5
@@ -278,28 +278,38 @@ def _process_received(self, data, genre, arm = 6):
278278
data_pos = header_i + 4
279279
elif arm == 12:
280280
data_pos = header_i + 5
281-
282-
valid_data = data[data_pos: data_pos + data_len]
281+
282+
valid_data = data[data_pos : data_pos + data_len]
283283

284284
# process valid data
285285
res = []
286-
if data_len in [6, 8, 12 ,24]:
286+
if data_len in [6, 8, 12, 24]:
287287
for header_i in range(0, len(valid_data), 2):
288-
one = valid_data[header_i: header_i + 2]
288+
one = valid_data[header_i : header_i + 2]
289289
res.append(self._decode_int16(one))
290290
elif data_len == 2:
291-
if genre in [ProtocolCode.GET_PLAN_SPEED, ProtocolCode.GET_PLAN_ACCELERATION]:
292-
return [self._decode_int8(valid_data[0:1]), self._decode_int8(valid_data[1:])]
291+
if genre in [
292+
ProtocolCode.GET_PLAN_SPEED,
293+
ProtocolCode.GET_PLAN_ACCELERATION,
294+
]:
295+
return [
296+
self._decode_int8(valid_data[0:1]),
297+
self._decode_int8(valid_data[1:]),
298+
]
293299
if genre in [ProtocolCode.IS_SERVO_ENABLE]:
294300
return [self._decode_int8(valid_data[1:2])]
295301
res.append(self._decode_int16(valid_data))
296302
elif data_len == 3:
297303
res.append(self._decode_int16(valid_data[1:]))
298304
else:
299-
if genre in [ProtocolCode.GET_SERVO_VOLTAGES, ProtocolCode.GET_SERVO_STATUS, ProtocolCode.GET_SERVO_TEMPS]:
305+
if genre in [
306+
ProtocolCode.GET_SERVO_VOLTAGES,
307+
ProtocolCode.GET_SERVO_STATUS,
308+
ProtocolCode.GET_SERVO_TEMPS,
309+
]:
300310
for i in range(data_len):
301-
data1 = self._decode_int8(valid_data[i:i+1])
302-
res.append(0xff & data1 if data1 <0 else data1)
311+
data1 = self._decode_int8(valid_data[i : i + 1])
312+
res.append(0xFF & data1 if data1 < 0 else data1)
303313
return res
304314
res.append(self._decode_int8(valid_data))
305315
if genre == ProtocolCode.GET_ACCEI_DATA:
@@ -312,8 +322,8 @@ def _process_single(self, data):
312322

313323

314324
def write(self, command, method=None):
315-
if len(command)>3 and command[3] == 176 and len(command) > 5:
316-
command = "'"+command[4]+"'"+"("+command[5]+")"
325+
if len(command) > 3 and command[3] == 176 and len(command) > 5:
326+
command = "'" + command[4] + "'" + "(" + command[5] + ")"
317327
command = command.encode()
318328
if method == "socket":
319329
data = b""
@@ -325,7 +335,7 @@ def write(self, command, method=None):
325335
if len(command) > 3 and command[3] == 177:
326336
while True:
327337
data = self.sock.recv(1024)
328-
if b'password' in data:
338+
if b"password" in data:
329339
break
330340
elif len(command) > 3 and command[3] == 192:
331341
while True:
@@ -337,13 +347,14 @@ def write(self, command, method=None):
337347
self.sock.settimeout(1)
338348
data = self.sock.recv(1024)
339349
except:
340-
data = b''
350+
data = b""
341351
return data
342352
else:
343353
self.log.debug("_write: {}".format([hex(i) for i in command]))
344354
self._serial_port.write(command)
345355
self._serial_port.flush()
346356

357+
347358
def read(self, genre):
348359
datas = b""
349360
data_len = -1
@@ -353,34 +364,34 @@ def read(self, genre):
353364
wait_time = 0.1
354365
if genre == ProtocolCode.GET_SSID_PWD:
355366
time.sleep(0.1)
356-
if self._serial_port.inWaiting()>0:
367+
if self._serial_port.inWaiting() > 0:
357368
datas = self._serial_port.read(self._serial_port.inWaiting())
358369
return datas
359370
elif genre == ProtocolCode.GET_ACCEI_DATA:
360371
wait_time = 1
361-
while True and time.time() - t < wait_time:
372+
while True and time.time() - t < wait_time:
362373
data = self._serial_port.read()
363374
# print("1:",data)
364-
k+=1
365-
if data_len == 1 and data == b'\xfa':
375+
k += 1
376+
if data_len == 1 and data == b"\xfa":
366377
datas += data
367378
break
368379
elif len(datas) == 2:
369-
data_len = struct.unpack("b",data)[0]
380+
data_len = struct.unpack("b", data)[0]
370381
datas += data
371-
elif len(datas)>2 and data_len>0:
382+
elif len(datas) > 2 and data_len > 0:
372383
datas += data
373384
data_len -= 1
374-
elif data == b'\xfe':
375-
if datas == b'':
385+
elif data == b"\xfe":
386+
if datas == b"":
376387
datas += data
377388
pre = k
378389
else:
379-
if k-1 == pre:
390+
if k - 1 == pre:
380391
datas += data
381392
else:
382-
datas = b'\xfe'
383-
pre = k
393+
datas = b"\xfe"
394+
pre = k
384395
else:
385396
datas = None
386397
return datas

0 commit comments

Comments
 (0)