2
2
Enable basic CAN over a PCAN USB device.
3
3
"""
4
4
5
- from .basic import * # Do this first since the wildcard imports a lot
6
-
7
5
import logging
8
6
import time
9
7
from datetime import datetime
8
+ import platform
10
9
11
10
from typing import Optional
12
11
16
15
from ...exceptions import CanError , CanOperationError , CanInitializationError
17
16
18
17
18
+ from .basic import (
19
+ PCAN_BITRATES ,
20
+ PCAN_FD_PARAMETER_LIST ,
21
+ PCAN_CHANNEL_NAMES ,
22
+ PCAN_BAUD_500K ,
23
+ PCAN_TYPE_ISA ,
24
+ PCANBasic ,
25
+ PCAN_ERROR_OK ,
26
+ PCAN_ALLOW_ERROR_FRAMES ,
27
+ PCAN_PARAMETER_ON ,
28
+ PCAN_RECEIVE_EVENT ,
29
+ PCAN_DEVICE_NUMBER ,
30
+ PCAN_ERROR_QRCVEMPTY ,
31
+ PCAN_ERROR_BUSLIGHT ,
32
+ PCAN_ERROR_BUSHEAVY ,
33
+ PCAN_MESSAGE_EXTENDED ,
34
+ PCAN_MESSAGE_RTR ,
35
+ PCAN_MESSAGE_FD ,
36
+ PCAN_MESSAGE_BRS ,
37
+ PCAN_MESSAGE_ESI ,
38
+ PCAN_MESSAGE_ERRFRAME ,
39
+ PCAN_MESSAGE_STANDARD ,
40
+ TPCANMsgFD ,
41
+ TPCANMsg ,
42
+ PCAN_CHANNEL_IDENTIFYING ,
43
+ PCAN_LISTEN_ONLY ,
44
+ PCAN_PARAMETER_OFF ,
45
+ TPCANHandle ,
46
+ PCAN_PCIBUS1 ,
47
+ PCAN_USBBUS1 ,
48
+ PCAN_PCCBUS1 ,
49
+ PCAN_LANBUS1 ,
50
+ PCAN_CHANNEL_CONDITION ,
51
+ PCAN_CHANNEL_AVAILABLE ,
52
+ PCAN_CHANNEL_FEATURES ,
53
+ FEATURE_FD_CAPABLE ,
54
+ PCAN_DICT_STATUS ,
55
+ )
56
+
57
+
19
58
# Set up logging
20
59
log = logging .getLogger ("can.pcan" )
21
60
54
93
HAS_EVENTS = False
55
94
56
95
57
- pcan_bitrate_objs = {
58
- 1000000 : PCAN_BAUD_1M ,
59
- 800000 : PCAN_BAUD_800K ,
60
- 500000 : PCAN_BAUD_500K ,
61
- 250000 : PCAN_BAUD_250K ,
62
- 125000 : PCAN_BAUD_125K ,
63
- 100000 : PCAN_BAUD_100K ,
64
- 95000 : PCAN_BAUD_95K ,
65
- 83000 : PCAN_BAUD_83K ,
66
- 50000 : PCAN_BAUD_50K ,
67
- 47000 : PCAN_BAUD_47K ,
68
- 33000 : PCAN_BAUD_33K ,
69
- 20000 : PCAN_BAUD_20K ,
70
- 10000 : PCAN_BAUD_10K ,
71
- 5000 : PCAN_BAUD_5K ,
72
- }
73
-
74
-
75
- pcan_fd_parameter_list = [
76
- "nom_brp" ,
77
- "nom_tseg1" ,
78
- "nom_tseg2" ,
79
- "nom_sjw" ,
80
- "data_brp" ,
81
- "data_tseg1" ,
82
- "data_tseg2" ,
83
- "data_sjw" ,
84
- ]
85
-
86
- pcan_channel_names = {
87
- "PCAN_NONEBUS" : PCAN_NONEBUS ,
88
- "PCAN_ISABUS1" : PCAN_ISABUS1 ,
89
- "PCAN_ISABUS2" : PCAN_ISABUS2 ,
90
- "PCAN_ISABUS3" : PCAN_ISABUS3 ,
91
- "PCAN_ISABUS4" : PCAN_ISABUS4 ,
92
- "PCAN_ISABUS5" : PCAN_ISABUS5 ,
93
- "PCAN_ISABUS6" : PCAN_ISABUS6 ,
94
- "PCAN_ISABUS7" : PCAN_ISABUS7 ,
95
- "PCAN_ISABUS8" : PCAN_ISABUS8 ,
96
- "PCAN_DNGBUS1" : PCAN_DNGBUS1 ,
97
- "PCAN_PCIBUS1" : PCAN_PCIBUS1 ,
98
- "PCAN_PCIBUS2" : PCAN_PCIBUS2 ,
99
- "PCAN_PCIBUS3" : PCAN_PCIBUS3 ,
100
- "PCAN_PCIBUS4" : PCAN_PCIBUS4 ,
101
- "PCAN_PCIBUS5" : PCAN_PCIBUS5 ,
102
- "PCAN_PCIBUS6" : PCAN_PCIBUS6 ,
103
- "PCAN_PCIBUS7" : PCAN_PCIBUS7 ,
104
- "PCAN_PCIBUS8" : PCAN_PCIBUS8 ,
105
- "PCAN_PCIBUS9" : PCAN_PCIBUS9 ,
106
- "PCAN_PCIBUS10" : PCAN_PCIBUS10 ,
107
- "PCAN_PCIBUS11" : PCAN_PCIBUS11 ,
108
- "PCAN_PCIBUS12" : PCAN_PCIBUS12 ,
109
- "PCAN_PCIBUS13" : PCAN_PCIBUS13 ,
110
- "PCAN_PCIBUS14" : PCAN_PCIBUS14 ,
111
- "PCAN_PCIBUS15" : PCAN_PCIBUS15 ,
112
- "PCAN_PCIBUS16" : PCAN_PCIBUS16 ,
113
- "PCAN_USBBUS1" : PCAN_USBBUS1 ,
114
- "PCAN_USBBUS2" : PCAN_USBBUS2 ,
115
- "PCAN_USBBUS3" : PCAN_USBBUS3 ,
116
- "PCAN_USBBUS4" : PCAN_USBBUS4 ,
117
- "PCAN_USBBUS5" : PCAN_USBBUS5 ,
118
- "PCAN_USBBUS6" : PCAN_USBBUS6 ,
119
- "PCAN_USBBUS7" : PCAN_USBBUS7 ,
120
- "PCAN_USBBUS8" : PCAN_USBBUS8 ,
121
- "PCAN_USBBUS9" : PCAN_USBBUS9 ,
122
- "PCAN_USBBUS10" : PCAN_USBBUS10 ,
123
- "PCAN_USBBUS11" : PCAN_USBBUS11 ,
124
- "PCAN_USBBUS12" : PCAN_USBBUS12 ,
125
- "PCAN_USBBUS13" : PCAN_USBBUS13 ,
126
- "PCAN_USBBUS14" : PCAN_USBBUS14 ,
127
- "PCAN_USBBUS15" : PCAN_USBBUS15 ,
128
- "PCAN_USBBUS16" : PCAN_USBBUS16 ,
129
- "PCAN_PCCBUS1" : PCAN_PCCBUS1 ,
130
- "PCAN_PCCBUS2" : PCAN_PCCBUS2 ,
131
- "PCAN_LANBUS1" : PCAN_LANBUS1 ,
132
- "PCAN_LANBUS2" : PCAN_LANBUS2 ,
133
- "PCAN_LANBUS3" : PCAN_LANBUS3 ,
134
- "PCAN_LANBUS4" : PCAN_LANBUS4 ,
135
- "PCAN_LANBUS5" : PCAN_LANBUS5 ,
136
- "PCAN_LANBUS6" : PCAN_LANBUS6 ,
137
- "PCAN_LANBUS7" : PCAN_LANBUS7 ,
138
- "PCAN_LANBUS8" : PCAN_LANBUS8 ,
139
- "PCAN_LANBUS9" : PCAN_LANBUS9 ,
140
- "PCAN_LANBUS10" : PCAN_LANBUS10 ,
141
- "PCAN_LANBUS11" : PCAN_LANBUS11 ,
142
- "PCAN_LANBUS12" : PCAN_LANBUS12 ,
143
- "PCAN_LANBUS13" : PCAN_LANBUS13 ,
144
- "PCAN_LANBUS14" : PCAN_LANBUS14 ,
145
- "PCAN_LANBUS15" : PCAN_LANBUS15 ,
146
- "PCAN_LANBUS16" : PCAN_LANBUS16 ,
147
- }
148
-
149
-
150
96
class PcanBus (BusABC ):
151
97
def __init__ (
152
98
self ,
@@ -248,14 +194,14 @@ def __init__(
248
194
"""
249
195
self .channel_info = str (channel )
250
196
self .fd = kwargs .get ("fd" , False )
251
- pcan_bitrate = pcan_bitrate_objs .get (bitrate , PCAN_BAUD_500K )
197
+ pcan_bitrate = PCAN_BITRATES .get (bitrate , PCAN_BAUD_500K )
252
198
253
199
hwtype = PCAN_TYPE_ISA
254
200
ioport = 0x02A0
255
201
interrupt = 11
256
202
257
203
if not isinstance (channel , int ):
258
- channel = pcan_channel_names [channel ]
204
+ channel = PCAN_CHANNEL_NAMES [channel ]
259
205
260
206
self .m_objPCANBasic = PCANBasic ()
261
207
self .m_PcanHandle = channel
@@ -274,7 +220,7 @@ def __init__(
274
220
275
221
fd_parameters_values = [f_clock ] + [
276
222
"{}={}" .format (key , kwargs .get (key , None ))
277
- for key in pcan_fd_parameter_list
223
+ for key in PCAN_FD_PARAMETER_LIST
278
224
if kwargs .get (key , None ) is not None
279
225
]
280
226
@@ -651,11 +597,12 @@ def _detect_available_configs():
651
597
def status_string (self ) -> Optional [str ]:
652
598
"""
653
599
Query the PCAN bus status.
654
- :return: The status in string.
600
+
601
+ :return: The status description, if any was found.
655
602
"""
656
- if self . status () in PCAN_DICT_STATUS :
603
+ try :
657
604
return PCAN_DICT_STATUS [self .status ()]
658
- else :
605
+ except KeyError :
659
606
return None
660
607
661
608
0 commit comments