@@ -33,6 +33,27 @@ class VCI_CAN_OBJ(Structure):
3333STATUS_OK = 0x01
3434STATUS_ERR = 0x00
3535
36+ TIMING_DICT = {
37+ 5000 : (0xBF , 0xFF ),
38+ 10000 : (0x31 , 0x1C ),
39+ 20000 : (0x18 , 0x1C ),
40+ 33330 : (0x09 , 0x6F ),
41+ 40000 : (0x87 , 0xFF ),
42+ 50000 : (0x09 , 0x1C ),
43+ 66660 : (0x04 , 0x6F ),
44+ 80000 : (0x83 , 0xFF ),
45+ 83330 : (0x03 , 0x6F ),
46+ 100000 : (0x04 , 0x1C ),
47+ 125000 : (0x03 , 0x1C ),
48+ 200000 : (0x81 , 0xFA ),
49+ 250000 : (0x01 , 0x1C ),
50+ 400000 : (0x80 , 0xFA ),
51+ 500000 : (0x00 , 0x1C ),
52+ 666000 : (0x80 , 0xB6 ),
53+ 800000 : (0x00 , 0x16 ),
54+ 1000000 : (0x00 , 0x14 ),
55+ }
56+
3657try :
3758 if platform .system () == "Windows" :
3859 CANalystII = WinDLL ("./ControlCAN.dll" )
@@ -45,7 +66,7 @@ class VCI_CAN_OBJ(Structure):
4566
4667
4768class CANalystIIBus (BusABC ):
48- def __init__ (self , channel , device = 0 , baud = 10000000 , Timing0 = 0x00 , Timing1 = 0x14 , can_filters = None ):
69+ def __init__ (self , channel , device = 0 , baud = None , Timing0 = None , Timing1 = None , can_filters = None ):
4970 """
5071
5172 :param channel: channel number
@@ -69,36 +90,14 @@ def __init__(self, channel, device=0, baud=10000000, Timing0=0x00, Timing1=0x14,
6990
7091 self .channel_info = "CANalyst-II: device {}, channels {}" .format (self .device , self .channels )
7192
72- if baud == 1000000 :
73- Timing0 , Timing1 = (0x00 , 0x14 )
74- elif baud == 800000 :
75- Timing0 , Timing1 = (0x00 , 0x16 )
76- elif baud == 666000 :
77- Timing0 , Timing1 = (0x80 , 0xB6 )
78- elif baud == 500000 :
79- Timing0 , Timing1 = (0x00 , 0x1C )
80- elif baud == 400000 :
81- Timing0 , Timing1 = (0x80 , 0xFA )
82- elif baud == 250000 :
83- Timing0 , Timing1 = (0x01 , 0x1C )
84- elif baud == 200000 :
85- Timing0 , Timing1 = (0x81 , 0xFA )
86- elif baud == 125000 :
87- Timing0 , Timing1 = (0x03 , 0x1C )
88- elif baud == 100000 :
89- Timing0 , Timing1 = (0x04 , 0x1C )
90- elif baud == 80000 :
91- Timing0 , Timing1 = (0x83 , 0xFF )
92- elif baud == 50000 :
93- Timing0 , Timing1 = (0x09 , 0x1C )
94- elif baud == 40000 :
95- Timing0 , Timing1 = (0x87 , 0xFF )
96- elif baud == 20000 :
97- Timing0 , Timing1 = (0x18 , 0x1C )
98- elif baud == 10000 :
99- Timing0 , Timing1 = (0x31 , 0x1C )
100- elif baud == 5000 :
101- Timing0 , Timing1 = (0xBF , 0xFF )
93+ if baud is not None :
94+ try :
95+ Timing0 , Timing1 = TIMING_DICT [baud ]
96+ except KeyError :
97+ raise ValueError ("Baudrate is not supported" )
98+
99+ if Timing0 is None or Timing1 is None :
100+ raise ValueError ("Timing registers are not set" )
102101
103102 self .init_config = VCI_INIT_CONFIG (0 , 0xFFFFFFFF , 0 , 1 , Timing0 , Timing1 , 0 )
104103
0 commit comments