52 lines
1.2 KiB
Python
52 lines
1.2 KiB
Python
import icsneopy
|
|
import time
|
|
|
|
#
|
|
# App errors are responses from the device indicating internal runtime errors
|
|
# NOTE: To trigger the app error in this example, disable the DW CAN 01 network on the device
|
|
# (e.g. with ICS Device Manager)
|
|
#
|
|
def apperror():
|
|
devices = icsneopy.find_all_devices()
|
|
|
|
if len(devices) == 0:
|
|
print("no devices found")
|
|
return False
|
|
|
|
device = devices[0]
|
|
print(f"selected {device}")
|
|
|
|
def on_apperror(message):
|
|
if message.get_app_error_type() != icsneopy.AppErrorType.NetworkNotEnabled:
|
|
print("unexpected app error type")
|
|
return
|
|
print(message.get_app_error_string())
|
|
|
|
filter = icsneopy.MessageFilter(icsneopy.Message.Type.AppError)
|
|
callback = icsneopy.MessageCallback(on_apperror, filter)
|
|
device.add_message_callback(callback)
|
|
|
|
if not device.open():
|
|
print("unable to open device")
|
|
return False
|
|
|
|
if not device.go_online():
|
|
print("unable to go online")
|
|
return False
|
|
|
|
frame = icsneopy.CANMessage()
|
|
frame.network = icsneopy.Network(icsneopy.Network.NetID.DWCAN_01)
|
|
frame.arbid = 0x22
|
|
frame.data = (0xAA, 0xBB, 0xCC)
|
|
|
|
if not device.transmit(frame):
|
|
print("failed to transmit frame")
|
|
return False
|
|
|
|
time.sleep(2) # wait for error to come back
|
|
|
|
return True
|
|
|
|
if __name__ == "__main__":
|
|
apperror()
|