can.py 841 Bytes
Newer Older
Damien George's avatar
Damien George committed
1
2
from pyb import CAN

Henrik Sölver's avatar
Henrik Sölver committed
3
CAN.initfilterbanks(14)
4
5
6
7
can = CAN(1)
print(can)

can.init(CAN.LOOPBACK)
Damien George's avatar
Damien George committed
8
9
print(can)
print(can.any(0))
10

Henrik Sölver's avatar
Henrik Sölver committed
11
12
13
# Catch all filter
can.setfilter(0, CAN.MASK16, 0, (0, 0, 0, 0))

Damien George's avatar
Damien George committed
14
15
16
can.send('abcd', 123)
print(can.any(0))
print(can.recv(0))
17
18
19
20
21
22
23

can.send('abcd', -1)
print(can.recv(0))

can.send('abcd', 0x7FF + 1)
print(can.recv(0))

Henrik Sölver's avatar
Henrik Sölver committed
24
# Test too long message
25
26
27
28
29
30
31
32
33
try:
    can.send('abcdefghi', 0x7FF)
except ValueError:
    print('passed')
else:
    print('failed')

del can

Henrik Sölver's avatar
Henrik Sölver committed
34
# Testing extended IDs
35
can = CAN(1, CAN.LOOPBACK, extframe = True)
Henrik Sölver's avatar
Henrik Sölver committed
36
37
38
# Catch all filter
can.setfilter(0, CAN.MASK32, 0, (0, 0))

39
40
41
42
43
print(can)

try:
    can.send('abcde', 0x7FF + 1)
except ValueError:
Henrik Sölver's avatar
Henrik Sölver committed
44
    print('failed')
45
46
47
48
49
50
else:
    r = can.recv(0)
    if r[0] == 0x7FF+1 and r[3] == b'abcde':
        print('passed')
    else:
        print('failed, wrong data received')