|
3 | 3 | from serial import Serial |
4 | 4 | from time import sleep |
5 | 5 | import sys |
| 6 | +import click |
6 | 7 |
|
7 | | -device = "/tmp/ptyp0" |
8 | | -if(len(sys.argv) > 1) : |
9 | | - device = sys.argv[1] |
| 8 | +@click.command() |
| 9 | +@click.option("--device", "-d", default="/tmp/ptyp0") |
| 10 | +@click.option("--address", "-a", type=int, default=3) |
| 11 | +@click.option("--repeat", "-r", type=int, default=0) |
| 12 | +@click.option("--period", "-p", type=float, default=1) |
| 13 | +@click.option("--baud", "-d", type=int, default=9600) |
| 14 | +def run(device, address, repeat, period, baud): |
| 15 | + s = Serial(device, baud) |
| 16 | + crc = Crc(width = 16, poly = 0x8005,reflect_in = True, xor_in = 0xffff, reflect_out = True, xor_out = 0x0000) |
10 | 17 |
|
11 | | -slave_address = 0x03 |
12 | | -if(len(sys.argv) > 2) : |
13 | | - slave_address = int(sys.argv[2]) |
| 18 | + count = 0 |
| 19 | + while True: |
| 20 | + if count > repeat + 1 and repeat > 0: |
| 21 | + break |
| 22 | + else: |
| 23 | + count -= 1 |
| 24 | + function = 0x2b |
| 25 | + frame = [address, function, 0x0f, 0x01, 0x00] |
| 26 | + crc_calc = crc.bit_by_bit(frame) |
| 27 | + frame.append(crc_calc & 0xff) |
| 28 | + frame.append((crc_calc >> 8) & 0xff) |
| 29 | + s.write(bytes(frame)) |
| 30 | + print([hex(d) for d in frame]) |
| 31 | + data = (s.read_all()) |
| 32 | + print(data, len(data)) |
| 33 | + print([chr(d) for d in data]) |
| 34 | + sleep(period) |
14 | 35 |
|
15 | | -s = Serial(device, 9600) |
16 | | -#s = Serial("/dev/ttyUSB0", 9600) |
17 | | -crc = Crc(width = 16, poly = 0x8005,reflect_in = True, xor_in = 0xffff, reflect_out = True, xor_out = 0x0000) |
18 | | - |
19 | | -function = 0x2b |
20 | | -frame = [slave_address, function, 0x0f, 0x01, 0x00] |
21 | | - |
22 | | -crc_calc = crc.bit_by_bit(frame) |
23 | | -frame.append(crc_calc & 0xff) |
24 | | -frame.append((crc_calc >> 8) & 0xff) |
25 | | -s.write(bytes(frame)) |
26 | | -print([hex(d) for d in frame]) |
27 | | -sleep(2) |
28 | | -data = (s.read_all()) |
29 | | -print(data, len(data)) |
30 | | -print([chr(d) for d in data]) |
| 36 | +if __name__ == "__main__": |
| 37 | + run() |
0 commit comments