Sat, 19 May 2018 00:07:15 +0200
[prologix] beginning of a proper prologix dongle emulator
101
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
1 | # This program is free software; you can redistribute it and/or modify it under |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
2 | # the terms of the GNU General Public License as published by the Free Software |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
3 | # Foundation; either version 2 of the License, or (at your option) any later |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
4 | # version. |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
5 | # |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
6 | # This program is distributed in the hope that it will be useful, but WITHOUT |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
7 | # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
8 | # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
9 | # |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
10 | # You should have received a copy of the GNU General Public License along with |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
11 | # this program; if not, write to the Free Software Foundation, Inc., |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
12 | # 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
13 | """Copyright (c) 2007-2018 David Douard (Paris, FRANCE). |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
14 | https://bitbucket.org/dddouard/pygpibtoolkit -- mailto:david.douard@sdfa3.org |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
15 | |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
16 | prologix emulator |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
17 | ================= |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
18 | |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
19 | Base class for writing an emulator of a Prologix dongle. |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
20 | |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
21 | This aims at writing tests and virtual devices to check tools. |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
22 | |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
23 | """ |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
24 | |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
25 | import os |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
26 | import serial |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
27 | import time |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
28 | import subprocess |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
29 | import tempfile |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
30 | import threading |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
31 | from queue import Queue |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
32 | import logging |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
33 | from logging import debug, info, warning, error # noqa |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
34 | |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
35 | |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
36 | logging.basicConfig() |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
37 | logger = logging.getLogger(__name__) |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
38 | |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
39 | SOCAT = '/usr/bin/socat' |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
40 | |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
41 | |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
42 | class BasePrologixEmulator: |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
43 | |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
44 | def __init__(self): |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
45 | """ |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
46 | """ |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
47 | self.tmpdir = tempfile.mkdtemp() |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
48 | busside = os.path.join(self.tmpdir, 'bus') |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
49 | serialside = os.path.join(self.tmpdir, 'serial') |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
50 | self.socatp = subprocess.Popen([ |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
51 | SOCAT, |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
52 | 'PTY,raw,echo=0,link={}'.format(busside), |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
53 | 'PTY,raw,echo=0,link={}'.format(serialside)]) |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
54 | self.serialurl = serialside |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
55 | |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
56 | time.sleep(0.1) # wait a bit for socat to be started |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
57 | self.cnx = serial.Serial(busside, timeout=0) |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
58 | |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
59 | self.running = True |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
60 | self.output = Queue() |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
61 | self.mainloop = threading.Thread(target=self.run) |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
62 | self.reset() |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
63 | |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
64 | self.mainloop.start() |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
65 | |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
66 | def reset(self): |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
67 | self.output.queue.clear() # should probably protect this... |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
68 | self.mode = 1 |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
69 | self.addr = 5 |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
70 | |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
71 | def close(self): |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
72 | self.running = False |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
73 | self.socatp.kill() |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
74 | self.socatp.wait() |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
75 | self.mainloop.join() |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
76 | |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
77 | def run(self): |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
78 | while self.running: |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
79 | data = self.cnx.readline().strip() |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
80 | if data: |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
81 | if data[:2] == b'++': |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
82 | self.parse_cmd(data) |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
83 | else: |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
84 | self.parse_data(data) |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
85 | elif not self.output.empty(): |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
86 | data = self.output.get() |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
87 | logger.info('Sending %r' % data) |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
88 | self.cnx.write(data) |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
89 | else: |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
90 | time.sleep(0.01) |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
91 | |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
92 | def send(self, data): |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
93 | for row in data.splitlines(): |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
94 | self.output.put(row) |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
95 | |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
96 | def parse_data(self, row): |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
97 | logger.info('Received %r' % row) |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
98 | self.output.put(b'OK\r\n') |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
99 | |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
100 | def parse_cmd(self, row): |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
101 | logger.info('Received CMD %r' % row) |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
102 | cmd = row.decode().split() |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
103 | args = cmd[1:] |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
104 | cmd = cmd[0][2:] |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
105 | getattr(self, 'parse_cmd_{}'.format(cmd))(args) |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
106 | |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
107 | def parse_cmd_mode(self, args): |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
108 | if not args: |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
109 | self.output.put(('%s\r\n' % self.mode).encode()) |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
110 | else: |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
111 | try: |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
112 | if len(args) == 1: |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
113 | mode = int(args[0]) |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
114 | assert mode in (0, 1) |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
115 | logger.info('Set mode=%s' % mode) |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
116 | self.mode = mode |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
117 | else: |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
118 | raise Exception() |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
119 | except: |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
120 | self.output.put(b'Error\r\n') |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
121 | |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
122 | def parse_cmd_addr(self, args): |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
123 | if not args: |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
124 | self.output.put(('%s\r\n' % self.addr).encode()) |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
125 | else: |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
126 | try: |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
127 | if len(args) == 1: |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
128 | addr = int(args[0]) |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
129 | assert 0 <= addr <= 31 |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
130 | logger.info('Set addr=%s' % addr) |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
131 | self.addr = addr |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
132 | else: |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
133 | raise Exception() |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
134 | except: |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
135 | self.output.put(b'Error\r\n') |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
136 | |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
137 | |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
138 | def main(): |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
139 | emul = BasePrologixEmulator() |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
140 | cnx = serial.Serial(emul.serialurl, timeout=0) |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
141 | for i in range(10): |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
142 | data = '++cmd %s' % i |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
143 | print('SEND', data) |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
144 | cnx.write(data.encode() + b'\r\n') |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
145 | time.sleep(0.1) |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
146 | print('GOT %r' % cnx.readall()) |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
147 | |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
148 | emul.close() |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
149 | |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
150 | |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
151 | if __name__ == '__main__': |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
152 | logger.setLevel(logging.DEBUG) |
975576e55563
[prologix] beginning of a proper prologix dongle emulator
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
153 | main() |