winIDEA SDK
Loading...
Searching...
No Matches
fnet_can.py
# This script is licensed under BSD License, see file LICENSE.txt, or search for `License` in the SDK online help.
#
# (c) TASKING Germany GmbH, 2023
"""
This example shows basic FNet CAN controller initialization and usage.
(c) iSYSTEM Labs, 2022
"""
import isystem.connect as ic
winidea_id = ''
try:
# connect to last winIDEA
connMgr = ic.ConnectionMgr()
connMgr.connect(ic.CConnectionConfig().instanceId(winidea_id))
# initialize FNet CAN Controller
SessionCtrl = ic.CSessionCtrl(connMgr)
FNetCtrl = ic.CFNetCtrl(connMgr)
CANCtrl = FNetCtrl.CAN('CAN2LIN2.CAN1')
optCANCfg = CANCtrl.cfg()
SessionCtrl.begin_reset()
optCANCfg.set_mode(ic.ECAN_CAN_FD_ISO)
optCANCfg.set_allow_injection(False)
optCANCfg.set_arbitration (nBaudrate_kbps = 1000, nBitSamplingPoint = 70)
optCANCfg.set_FD_data_phase(nBaudrate_kbps = 1000, nBitSamplingPoint = 70)
SessionCtrl.end() #end first for cfg to take effect
SessionCtrl.begin_prepare()
# use FNetTrigger 5 in the example
FTrig = 5
optCANOp = CANCtrl.op()
# qualifier - starts on FTrig, not enabled from start
CANCtrl.op_qualifier_enable(FTrig)
CANCtrl.op_qualifier_enable_on_start(False)
# don't record all received messages
optCANOp.set_record_all_received(False)
# configure error in one call
optCANOp.set_error(bRecord = False, nFTrig = FTrig)
# configure comparator in one call
optCANOp.set_comparator(nComparator = 0, bRecord = False, nFTrig = FTrig, eLength = ic.ECAN_Standard, nID = 11, nMask = 0xff, eType = ic.ECAN_Data)
# record all injected messages
optCANOp.set_record_all_injected(True)
# configure action 0 in one call
optCANOp.set_action(nAction = 0, nFTrig = FTrig, eLength = ic.ECAN_Standard, nID = 11, bFD = True, bBRS = False, bESI = False, bRequest = False, rstrData = '01020304')
# apply new operation settings and restart operation
FNetCtrl.op_apply()
CANCtrl.ctrl_inject(eLength = ic.ECAN_Standard, nID = 11, bFD = True, bBRS = False, bESI = False, bRequest = False, rstrData = '01020304')
except Exception as ex:
print(ex)