agrobot_base/Python/mks_servo/mks_can.py

32 lines
815 B
Python

import can
def calcular_checksum(data):
return sum(data) & 0xFF
def main():
bus = can.interface.Bus(interface='slcan', channel='COM6', bitrate=500000)
device_id = 0x01
func_code = 0x30
data = [func_code]
crc = calcular_checksum([device_id] + data)
full_data = data + [crc]
msg = can.Message(arbitration_id=device_id, data=full_data, is_extended_id=False)
try:
bus.send(msg)
print("Comando 0x30 enviado com sucesso!")
except can.CanError as e:
print("Erro ao enviar:", e)
print("Aguardando resposta...")
resposta = bus.recv(timeout=1.0)
if resposta:
print(f"Resposta recebida: ID={hex(resposta.arbitration_id)}, Dados={resposta.data.hex()}")
else:
print("Nenhuma resposta.")
if __name__ == "__main__":
main()