Skip to content

Commit 3864a73

Browse files
committed
fix bug
1 parent d6e1d79 commit 3864a73

File tree

3 files changed

+17
-9
lines changed

3 files changed

+17
-9
lines changed

pymycobot/common.py

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -265,18 +265,18 @@ def _flatten(self, lst):
265265
flat_list.extend(self._flatten(item))
266266
return flat_list
267267

268-
def _process_data_command(self, genre, args):
268+
def _process_data_command(self, genre, _class, args):
269269
if not args:
270270
return []
271271

272272
processed_args = []
273273
for index in range(len(args)):
274274
if isinstance(args[index], list):
275-
if genre == ProtocolCode.SET_ENCODERS_DRAG and index == 0 and __class__.__name__ == "CobotX":
275+
if genre == ProtocolCode.SET_ENCODERS_DRAG and index == 0 and _class == "CobotX":
276276
for data in args[index]:
277277
byte_value = data.to_bytes(4, byteorder='big', signed=True)
278278
res = []
279-
for i in range(4):
279+
for i in range(len(byte_value)):
280280
res.append(byte_value[i])
281281
processed_args.extend(res)
282282
else:
@@ -285,7 +285,14 @@ def _process_data_command(self, genre, args):
285285
if isinstance(args[index], str):
286286
processed_args.append(ord(args[index]))
287287
else:
288-
processed_args.append(args[index])
288+
if genre == ProtocolCode.SET_SERVO_DATA and _class == "CobotX" and index == 2:
289+
byte_value = args[index].to_bytes(2, byteorder='big', signed=True)
290+
res = []
291+
for i in range(len(byte_value)):
292+
res.append(byte_value[i])
293+
processed_args.extend(res)
294+
else:
295+
processed_args.append(args[index])
289296

290297
return processed_args
291298

@@ -411,6 +418,7 @@ def write(self, command, method=None):
411418

412419
else:
413420
self._serial_port.reset_input_buffer()
421+
print(command)
414422
self.log.debug("_write: {}".format([hex(i) for i in command]))
415423
self._serial_port.write(command)
416424
self._serial_port.flush()

pymycobot/error.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -246,9 +246,9 @@ def calibration_parameters(**kwargs):
246246
elif parameter == 'solution_angle':
247247
if value > 90 or value < -90:
248248
raise CobotXDataException("The angle range is -90° ~ 90°, but received {}".format(value))
249-
elif parameter == 'servo_id':
249+
elif parameter == 'address':
250250
if value < 20 or value > 22:
251-
raise CobotXDataException("The angle servo_id is 20 ~ 22, but received {}".format(value))
251+
raise CobotXDataException("The angle address is 20 ~ 22, but received {}".format(value))
252252
elif parameter == 'value':
253253
if value < 1 or value > 32000:
254254
raise CobotXDataException("The angle value is 1 ~ 32000, but received {}".format(value))

pymycobot/generate.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ def _mesg(self, genre, *args, **kwargs):
105105
**kwargs: support `has_reply`
106106
has_reply: Whether there is a return value to accept.
107107
"""
108-
command_data = self._process_data_command(genre, args)
108+
command_data = self._process_data_command(genre, self.__class__.__name__, args)
109109

110110
if genre == 178:
111111
# 修改wifi端口
@@ -567,7 +567,7 @@ def set_servo_data(self, servo_id, data_id, value):
567567
data_id: Data address.
568568
value: 0 - 4096
569569
"""
570-
self.calibration_parameters(class_name = self.__class__.__name__, servo_id=servo_id, value=value)
570+
self.calibration_parameters(class_name = self.__class__.__name__, id=servo_id, address=data_id, value=value)
571571
return self._mesg(ProtocolCode.SET_SERVO_DATA, servo_id, data_id, value)
572572

573573
def get_servo_data(self, servo_id, data_id):
@@ -583,7 +583,7 @@ def get_servo_data(self, servo_id, data_id):
583583
Return:
584584
values 0 - 4096
585585
"""
586-
self.calibration_parameters(class_name = self.__class__.__name__, servo_id=servo_id)
586+
self.calibration_parameters(class_name = self.__class__.__name__, id=servo_id, address=data_id)
587587
return self._mesg(
588588
ProtocolCode.GET_SERVO_DATA, servo_id, data_id, has_reply=True
589589
)

0 commit comments

Comments
 (0)