11"""
22Interface for slcan compatible interfaces (win32/linux).
3- (Linux could use slcand/socketcan as well).
3+
4+ Note Linux users can use slcand/socketcan as well.
45"""
56
67from __future__ import absolute_import
1516
1617logger = logging .getLogger (__name__ )
1718
19+
1820class slcanBus (BusABC ):
1921 """
2022 slcan interface
@@ -73,15 +75,13 @@ def __init__(self, channel, ttyBaudrate=115200, timeout=1, bitrate=None, **kwarg
7375 self .serialPort = io .TextIOWrapper (io .BufferedRWPair (self .serialPortOrig , self .serialPortOrig , 1 ),
7476 newline = '\r ' , line_buffering = True )
7577
76- # why do we sleep here?
7778 time .sleep (self ._SLEEP_AFTER_SERIAL_OPEN )
7879
7980 if bitrate is not None :
8081 self .close ()
8182 if bitrate in self ._BITRATES :
8283 self .write (self ._BITRATES [bitrate ])
8384 else :
84- # this only prints the keys of the dict
8585 raise ValueError ("Invalid bitrate, choose one of " + (', ' .join (self ._BITRATES )) + '.' )
8686
8787 self .open ()
@@ -93,27 +93,31 @@ def recv(self, timeout=None):
9393
9494 canId = None
9595 remote = False
96+ extended = False
9697 frame = []
9798 readStr = self .serialPort .readline ()
98- if not readStr : # if not None and not empty
99+ if not readStr :
99100 return None
100101 else :
101- if readStr [0 ] == 'T' : # extended frame
102+ if readStr [0 ] == 'T' :
103+ # extended frame
102104 canId = int (readStr [1 :9 ], 16 )
103105 dlc = int (readStr [9 ])
104106 extended = True
105107 for i in range (0 , dlc ):
106108 frame .append (int (readStr [10 + i * 2 :12 + i * 2 ], 16 ))
107- elif readStr [0 ] == 't' : # normal frame
109+ elif readStr [0 ] == 't' :
110+ # normal frame
108111 canId = int (readStr [1 :4 ], 16 )
109112 dlc = int (readStr [4 ])
110113 for i in range (0 , dlc ):
111114 frame .append (int (readStr [5 + i * 2 :7 + i * 2 ], 16 ))
112- extended = False
113- elif readStr [ 0 ] == 'r' : # remote frame
115+ elif readStr [ 0 ] == 'r' :
116+ # remote frame
114117 canId = int (readStr [1 :4 ], 16 )
115118 remote = True
116- elif readStr [0 ] == 'R' : # remote extended frame
119+ elif readStr [0 ] == 'R' :
120+ # remote extended frame
117121 canId = int (readStr [1 :9 ], 16 )
118122 extended = True
119123 remote = True
0 commit comments