if link.write(buf): return True return False # 将一个16位的int型数拆成两个8位的 def split_hl(item): item &= 0xffff result = [(item & 0xff00) >> 8, item & 0xff] return result # 求校验和 def solve_sum(buf): sum_m = 0 for it in buf: sum_m += it sum_m &= 0xff return sum_m if __name__ == '__main__': link = Communtcation(serial_name, 2000000, 8) # 串口链接 if link.open(): run() else: rospy.loginfo("Open serialport %s fail" % (serial_name)) exit(0) link.close()
#!/usr/bin/env python # coding=utf-8 # Filename : hc_servo_control.py # Author : Chen Zhizhong # Created Date : 2014/10/9 21:14 # Description : Servo controls including arms, hands & body lifter import rospy from bitathome_hardware_control.srv import * from hc_serialport_communication import Communtcation from hc_motor_cmd import solve_sum node_name = "hc_servo_control" # 节点名称 serial_name = "/dev/ttyUSB1" # 串口名称 link = Communtcation(serial_name, 19200, 8) # 串口链接 # 限制数值范围 def constrain(val, v_min, v_max): """ :param val: 数值 :param v_min: 下限 :param v_max: 上限 """ if val < v_min: return v_min elif val > v_max: return v_max else: return val