32 lines
815 B
Python
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()
|