Mon, 04 Jun 2018 22:28:05 +0200
[plotter] add a --mockup option to the demo main function
66
2a97995628a3
added copyright header to every python file
David Douard <david.douard@logilab.fr>
parents:
40
diff
changeset
|
1 | # This program is free software; you can redistribute it and/or modify it under |
2a97995628a3
added copyright header to every python file
David Douard <david.douard@logilab.fr>
parents:
40
diff
changeset
|
2 | # the terms of the GNU General Public License as published by the Free Software |
2a97995628a3
added copyright header to every python file
David Douard <david.douard@logilab.fr>
parents:
40
diff
changeset
|
3 | # Foundation; either version 2 of the License, or (at your option) any later |
2a97995628a3
added copyright header to every python file
David Douard <david.douard@logilab.fr>
parents:
40
diff
changeset
|
4 | # version. |
2a97995628a3
added copyright header to every python file
David Douard <david.douard@logilab.fr>
parents:
40
diff
changeset
|
5 | # |
2a97995628a3
added copyright header to every python file
David Douard <david.douard@logilab.fr>
parents:
40
diff
changeset
|
6 | # This program is distributed in the hope that it will be useful, but WITHOUT |
2a97995628a3
added copyright header to every python file
David Douard <david.douard@logilab.fr>
parents:
40
diff
changeset
|
7 | # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS |
2a97995628a3
added copyright header to every python file
David Douard <david.douard@logilab.fr>
parents:
40
diff
changeset
|
8 | # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details |
2a97995628a3
added copyright header to every python file
David Douard <david.douard@logilab.fr>
parents:
40
diff
changeset
|
9 | # |
2a97995628a3
added copyright header to every python file
David Douard <david.douard@logilab.fr>
parents:
40
diff
changeset
|
10 | # You should have received a copy of the GNU General Public License along with |
2a97995628a3
added copyright header to every python file
David Douard <david.douard@logilab.fr>
parents:
40
diff
changeset
|
11 | # this program; if not, write to the Free Software Foundation, Inc., |
2a97995628a3
added copyright header to every python file
David Douard <david.douard@logilab.fr>
parents:
40
diff
changeset
|
12 | # 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
2a97995628a3
added copyright header to every python file
David Douard <david.douard@logilab.fr>
parents:
40
diff
changeset
|
13 | """ Copyright (c) 2007-2008 David Douard (Paris, FRANCE). |
91
f2a8f688dbc0
project moved to bitbucket
David Douard <david.douard@logilab.fr>
parents:
87
diff
changeset
|
14 | https://bitbucket.org/dddouard/pygpibtoolkit -- mailto:david.douard@sdfa3.org |
66
2a97995628a3
added copyright header to every python file
David Douard <david.douard@logilab.fr>
parents:
40
diff
changeset
|
15 | """ |
2a97995628a3
added copyright header to every python file
David Douard <david.douard@logilab.fr>
parents:
40
diff
changeset
|
16 | |
87
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
77
diff
changeset
|
17 | import sys |
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
77
diff
changeset
|
18 | import os |
40
1bbea188a7e5
refactoring: moved everything of the library to a "pygpibtoolkit" module.
David Douard <david.douard@logilab.fr>
parents:
32
diff
changeset
|
19 | from pygpibtoolkit import pygpib as gpib |
1bbea188a7e5
refactoring: moved everything of the library to a "pygpibtoolkit" module.
David Douard <david.douard@logilab.fr>
parents:
32
diff
changeset
|
20 | from pygpibtoolkit.prologix import GPIB |
0 | 21 | |
87
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
77
diff
changeset
|
22 | |
12
a04bea92c509
some code refactoring and several improvements in gpib_plotter (should be more robust & quicker)
David Douard <david.douard@logilab.fr>
parents:
8
diff
changeset
|
23 | class GPIBplotter(GPIB): |
87
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
77
diff
changeset
|
24 | _replies = { |
1
0670b1f5c155
make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents:
0
diff
changeset
|
25 | "OE": "0", |
0670b1f5c155
make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents:
0
diff
changeset
|
26 | "OH": "0,0,10000,7500", |
0670b1f5c155
make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents:
0
diff
changeset
|
27 | "OI": "7470A", |
0670b1f5c155
make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents:
0
diff
changeset
|
28 | "OP": "0,0,10000,7500", |
0670b1f5c155
make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents:
0
diff
changeset
|
29 | "OO": "0,1,0,0,0,0,0,0", |
0670b1f5c155
make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents:
0
diff
changeset
|
30 | "OF": "40,40", |
0670b1f5c155
make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents:
0
diff
changeset
|
31 | "OS": "24", |
0670b1f5c155
make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents:
0
diff
changeset
|
32 | } |
87
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
77
diff
changeset
|
33 | |
1
0670b1f5c155
make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents:
0
diff
changeset
|
34 | def __init__(self, device="/dev/ttyUSB0", baudrate=115200, timeout=0.1, |
98
4cbd3d410230
[plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents:
91
diff
changeset
|
35 | address=5, started_cb=None): |
87
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
77
diff
changeset
|
36 | super().__init__(device, baudrate, timeout, address, mode=0) |
98
4cbd3d410230
[plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents:
91
diff
changeset
|
37 | self.plot_started_cb = started_cb |
0 | 38 | |
98
4cbd3d410230
[plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents:
91
diff
changeset
|
39 | def plot_started(self): |
4cbd3d410230
[plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents:
91
diff
changeset
|
40 | if callable(self.plot_started_cb): |
4cbd3d410230
[plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents:
91
diff
changeset
|
41 | self.plot_started_cb() |
27
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
12
diff
changeset
|
42 | |
1
0670b1f5c155
make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents:
0
diff
changeset
|
43 | def load_plot(self, wait_timeout=0): |
0670b1f5c155
make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents:
0
diff
changeset
|
44 | """ |
0670b1f5c155
make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents:
0
diff
changeset
|
45 | Make a full plot process. |
0 | 46 | |
1
0670b1f5c155
make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents:
0
diff
changeset
|
47 | 'wait_timeout' is the first timeout. Same semantic as the |
0670b1f5c155
make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents:
0
diff
changeset
|
48 | 'timeout' property of a serial connection (if set to None, it |
0670b1f5c155
make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents:
0
diff
changeset
|
49 | will block until the GPIB device actually perform a plot |
0670b1f5c155
make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents:
0
diff
changeset
|
50 | command.) |
0670b1f5c155
make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents:
0
diff
changeset
|
51 | """ |
0670b1f5c155
make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents:
0
diff
changeset
|
52 | res = "" |
87
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
77
diff
changeset
|
53 | i = 0 |
98
4cbd3d410230
[plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents:
91
diff
changeset
|
54 | # replies dict is modified in some cases, so make a copy |
1
0670b1f5c155
make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents:
0
diff
changeset
|
55 | replies = self._replies.copy() |
98
4cbd3d410230
[plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents:
91
diff
changeset
|
56 | |
4cbd3d410230
[plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents:
91
diff
changeset
|
57 | if wait_timeout is not None and not isinstance( |
4cbd3d410230
[plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents:
91
diff
changeset
|
58 | wait_timeout, (float, int)): |
87
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
77
diff
changeset
|
59 | raise TypeError("wait_timeout (%s:%s) has wrong type" % ( |
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
77
diff
changeset
|
60 | repr(wait_timeout), type(wait_timeout))) |
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
77
diff
changeset
|
61 | if wait_timeout < 0: |
1
0670b1f5c155
make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents:
0
diff
changeset
|
62 | raise ValueError |
87
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
77
diff
changeset
|
63 | |
1
0670b1f5c155
make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents:
0
diff
changeset
|
64 | self._cnx.timeout = wait_timeout |
0670b1f5c155
make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents:
0
diff
changeset
|
65 | firstloop = True |
98
4cbd3d410230
[plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents:
91
diff
changeset
|
66 | while i < self._retries: |
4cbd3d410230
[plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents:
91
diff
changeset
|
67 | l = self._cnx.readline().strip().decode() |
77
1e539617d6ac
fix small bugs in qgpib plotter
David Douard <david.douard@logilab.fr>
parents:
66
diff
changeset
|
68 | if l and firstloop: |
1
0670b1f5c155
make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents:
0
diff
changeset
|
69 | self._cnx.timeout = self._timeout |
0670b1f5c155
make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents:
0
diff
changeset
|
70 | firstloop = False |
98
4cbd3d410230
[plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents:
91
diff
changeset
|
71 | self.plot_started() |
4cbd3d410230
[plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents:
91
diff
changeset
|
72 | if not l: |
87
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
77
diff
changeset
|
73 | if i == 0: # > (self._retries/2): |
98
4cbd3d410230
[plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents:
91
diff
changeset
|
74 | # we just received new stuffs (i is reset in the else blk) |
8
aa3d55f78563
adjust timing parameters & fixes
David Douard <david.douard@logilab.fr>
parents:
1
diff
changeset
|
75 | for k, v in replies.items(): |
12
a04bea92c509
some code refactoring and several improvements in gpib_plotter (should be more robust & quicker)
David Douard <david.douard@logilab.fr>
parents:
8
diff
changeset
|
76 | # check wether we should reply smthg |
a04bea92c509
some code refactoring and several improvements in gpib_plotter (should be more robust & quicker)
David Douard <david.douard@logilab.fr>
parents:
8
diff
changeset
|
77 | eres = res.replace('\n', '').strip() |
98
4cbd3d410230
[plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents:
91
diff
changeset
|
78 | shouldreply = any(eres.endswith(k + sfx) |
4cbd3d410230
[plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents:
91
diff
changeset
|
79 | for sfx in ('', ';', ';OE')) |
4cbd3d410230
[plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents:
91
diff
changeset
|
80 | if shouldreply: |
4cbd3d410230
[plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents:
91
diff
changeset
|
81 | self._cnx.write(("%s" % v).encode()) |
8
aa3d55f78563
adjust timing parameters & fixes
David Douard <david.douard@logilab.fr>
parents:
1
diff
changeset
|
82 | if k == "OS": |
98
4cbd3d410230
[plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents:
91
diff
changeset
|
83 | # don't remember why we need this... |
8
aa3d55f78563
adjust timing parameters & fixes
David Douard <david.douard@logilab.fr>
parents:
1
diff
changeset
|
84 | replies[k] = "16" |
aa3d55f78563
adjust timing parameters & fixes
David Douard <david.douard@logilab.fr>
parents:
1
diff
changeset
|
85 | break |
98
4cbd3d410230
[plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents:
91
diff
changeset
|
86 | self._cnx.write(b'\r') |
87
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
77
diff
changeset
|
87 | # time.sleep(0.1) |
12
a04bea92c509
some code refactoring and several improvements in gpib_plotter (should be more robust & quicker)
David Douard <david.douard@logilab.fr>
parents:
8
diff
changeset
|
88 | i += 1 |
8
aa3d55f78563
adjust timing parameters & fixes
David Douard <david.douard@logilab.fr>
parents:
1
diff
changeset
|
89 | else: |
87
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
77
diff
changeset
|
90 | # if not res: |
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
77
diff
changeset
|
91 | # print "Plotting..." |
12
a04bea92c509
some code refactoring and several improvements in gpib_plotter (should be more robust & quicker)
David Douard <david.douard@logilab.fr>
parents:
8
diff
changeset
|
92 | res += l + '\n' |
8
aa3d55f78563
adjust timing parameters & fixes
David Douard <david.douard@logilab.fr>
parents:
1
diff
changeset
|
93 | i = 0 |
87
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
77
diff
changeset
|
94 | # time.sleep(0.1) |
12
a04bea92c509
some code refactoring and several improvements in gpib_plotter (should be more robust & quicker)
David Douard <david.douard@logilab.fr>
parents:
8
diff
changeset
|
95 | if res: |
87
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
77
diff
changeset
|
96 | print("DONE (received %d characters)" % len(res)) |
1
0670b1f5c155
make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents:
0
diff
changeset
|
97 | return res |
0 | 98 | |
87
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
77
diff
changeset
|
99 | |
109
c2d93abebab3
[plotter] add a --mockup option to the demo main function
David Douard <david.douard@logilab.fr>
parents:
108
diff
changeset
|
100 | def main(): |
c2d93abebab3
[plotter] add a --mockup option to the demo main function
David Douard <david.douard@logilab.fr>
parents:
108
diff
changeset
|
101 | global GPIBplotter |
c2d93abebab3
[plotter] add a --mockup option to the demo main function
David Douard <david.douard@logilab.fr>
parents:
108
diff
changeset
|
102 | |
1
0670b1f5c155
make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents:
0
diff
changeset
|
103 | import optparse |
87
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
77
diff
changeset
|
104 | opt = optparse.OptionParser( |
98
4cbd3d410230
[plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents:
91
diff
changeset
|
105 | 'A simple HP7470A GPIB plotter emulator for ' |
4cbd3d410230
[plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents:
91
diff
changeset
|
106 | 'USB-GPIB bundle (ProLogix)') |
4cbd3d410230
[plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents:
91
diff
changeset
|
107 | opt.add_option( |
4cbd3d410230
[plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents:
91
diff
changeset
|
108 | '-f', '--filename', default=None, |
4cbd3d410230
[plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents:
91
diff
changeset
|
109 | dest='filename', |
4cbd3d410230
[plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents:
91
diff
changeset
|
110 | help='Output filename. If not set, write to stdout') |
4cbd3d410230
[plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents:
91
diff
changeset
|
111 | opt.add_option( |
4cbd3d410230
[plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents:
91
diff
changeset
|
112 | '-d', '--device', default='/dev/ttyUSB0', |
4cbd3d410230
[plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents:
91
diff
changeset
|
113 | dest='device', |
4cbd3d410230
[plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents:
91
diff
changeset
|
114 | help='Device of the RS232 connection (default: /dev/ttyUSB0)') |
4cbd3d410230
[plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents:
91
diff
changeset
|
115 | opt.add_option( |
4cbd3d410230
[plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents:
91
diff
changeset
|
116 | '-a', '--address', default=0, |
4cbd3d410230
[plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents:
91
diff
changeset
|
117 | dest='address', |
4cbd3d410230
[plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents:
91
diff
changeset
|
118 | help='GPIB address of the device') |
4cbd3d410230
[plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents:
91
diff
changeset
|
119 | opt.add_option( |
4cbd3d410230
[plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents:
91
diff
changeset
|
120 | '-l', '--loop', default=False, |
4cbd3d410230
[plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents:
91
diff
changeset
|
121 | action="store_true", |
4cbd3d410230
[plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents:
91
diff
changeset
|
122 | dest="loop", |
4cbd3d410230
[plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents:
91
diff
changeset
|
123 | help=("Continuously wait for new plots. If set, filename must be " |
4cbd3d410230
[plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents:
91
diff
changeset
|
124 | "set and files will be created with _n at the end")) |
4cbd3d410230
[plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents:
91
diff
changeset
|
125 | opt.add_option( |
4cbd3d410230
[plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents:
91
diff
changeset
|
126 | '-v', '--verbose', default=False, |
4cbd3d410230
[plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents:
91
diff
changeset
|
127 | action="store_true", |
4cbd3d410230
[plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents:
91
diff
changeset
|
128 | dest="verbose", |
4cbd3d410230
[plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents:
91
diff
changeset
|
129 | help="Verbose mode") |
109
c2d93abebab3
[plotter] add a --mockup option to the demo main function
David Douard <david.douard@logilab.fr>
parents:
108
diff
changeset
|
130 | opt.add_option( |
c2d93abebab3
[plotter] add a --mockup option to the demo main function
David Douard <david.douard@logilab.fr>
parents:
108
diff
changeset
|
131 | '-m', '--mockup', default=False, |
c2d93abebab3
[plotter] add a --mockup option to the demo main function
David Douard <david.douard@logilab.fr>
parents:
108
diff
changeset
|
132 | action="store_true", |
c2d93abebab3
[plotter] add a --mockup option to the demo main function
David Douard <david.douard@logilab.fr>
parents:
108
diff
changeset
|
133 | dest='mockup', |
c2d93abebab3
[plotter] add a --mockup option to the demo main function
David Douard <david.douard@logilab.fr>
parents:
108
diff
changeset
|
134 | help='Use a pseudo GPIB connection (for test purpose)') |
87
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
77
diff
changeset
|
135 | |
1
0670b1f5c155
make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents:
0
diff
changeset
|
136 | options, argv = opt.parse_args(sys.argv) |
0 | 137 | |
1
0670b1f5c155
make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents:
0
diff
changeset
|
138 | if options.loop and not options.filename: |
0670b1f5c155
make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents:
0
diff
changeset
|
139 | opt.error('If loop is set, you *must* provide a filename') |
0670b1f5c155
make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents:
0
diff
changeset
|
140 | |
87
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
77
diff
changeset
|
141 | if options.filename: |
1
0670b1f5c155
make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents:
0
diff
changeset
|
142 | outf = open(options.filename, "w") |
0670b1f5c155
make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents:
0
diff
changeset
|
143 | else: |
0670b1f5c155
make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents:
0
diff
changeset
|
144 | outf = sys.stdout |
0 | 145 | |
109
c2d93abebab3
[plotter] add a --mockup option to the demo main function
David Douard <david.douard@logilab.fr>
parents:
108
diff
changeset
|
146 | if options.mockup: |
c2d93abebab3
[plotter] add a --mockup option to the demo main function
David Douard <david.douard@logilab.fr>
parents:
108
diff
changeset
|
147 | from pygpibtoolkit.plotter.gpib_plotter_mockup import GPIBplotter |
c2d93abebab3
[plotter] add a --mockup option to the demo main function
David Douard <david.douard@logilab.fr>
parents:
108
diff
changeset
|
148 | |
1
0670b1f5c155
make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents:
0
diff
changeset
|
149 | try: |
87
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
77
diff
changeset
|
150 | plotter = GPIBplotter( |
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
77
diff
changeset
|
151 | device=options.device, address=int(options.address), |
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
77
diff
changeset
|
152 | timeout=0.06) |
108
dadf7c8d43ad
[plotter] use OSError instead of more specific SerialException
David Douard <david.douard@logilab.fr>
parents:
104
diff
changeset
|
153 | except (OSError, gpib.ConnectionError) as e: |
98
4cbd3d410230
[plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents:
91
diff
changeset
|
154 | sys.stderr.write('Connection error:\n\t' + '\n\t'.join( |
4cbd3d410230
[plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents:
91
diff
changeset
|
155 | [str(x) for x in e.args]) + '\n') |
1
0670b1f5c155
make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents:
0
diff
changeset
|
156 | sys.stderr.write('Check your parameters\n') |
0670b1f5c155
make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents:
0
diff
changeset
|
157 | sys.exit(1) |
0670b1f5c155
make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents:
0
diff
changeset
|
158 | if options.verbose: |
0670b1f5c155
make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents:
0
diff
changeset
|
159 | sys.stderr.write('connection established\n') |
0670b1f5c155
make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents:
0
diff
changeset
|
160 | |
0670b1f5c155
make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents:
0
diff
changeset
|
161 | loop = True |
0670b1f5c155
make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents:
0
diff
changeset
|
162 | nloop = 0 |
0670b1f5c155
make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents:
0
diff
changeset
|
163 | while loop: |
12
a04bea92c509
some code refactoring and several improvements in gpib_plotter (should be more robust & quicker)
David Douard <david.douard@logilab.fr>
parents:
8
diff
changeset
|
164 | plot = plotter.load_plot(wait_timeout=0.1) |
1
0670b1f5c155
make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents:
0
diff
changeset
|
165 | if options.verbose: |
0670b1f5c155
make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents:
0
diff
changeset
|
166 | sys.stderr.write('.') |
0670b1f5c155
make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents:
0
diff
changeset
|
167 | if plot: |
0670b1f5c155
make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents:
0
diff
changeset
|
168 | outf.write(plot) |
0670b1f5c155
make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents:
0
diff
changeset
|
169 | if options.verbose: |
0670b1f5c155
make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents:
0
diff
changeset
|
170 | sys.stderr.write('\n') |
98
4cbd3d410230
[plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents:
91
diff
changeset
|
171 | sys.stderr.write( |
4cbd3d410230
[plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents:
91
diff
changeset
|
172 | 'Received a new plot (written to %s)\n' % outf.name) |
1
0670b1f5c155
make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents:
0
diff
changeset
|
173 | if not options.loop: |
0670b1f5c155
make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents:
0
diff
changeset
|
174 | loop = False |
0670b1f5c155
make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents:
0
diff
changeset
|
175 | else: |
0670b1f5c155
make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents:
0
diff
changeset
|
176 | nloop += 1 |
0670b1f5c155
make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents:
0
diff
changeset
|
177 | fname, ext = os.path.splitext(options.filename) |
98
4cbd3d410230
[plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents:
91
diff
changeset
|
178 | outf = open(fname + "_%d" % nloop + ext, 'w') |
109
c2d93abebab3
[plotter] add a --mockup option to the demo main function
David Douard <david.douard@logilab.fr>
parents:
108
diff
changeset
|
179 | |
c2d93abebab3
[plotter] add a --mockup option to the demo main function
David Douard <david.douard@logilab.fr>
parents:
108
diff
changeset
|
180 | |
c2d93abebab3
[plotter] add a --mockup option to the demo main function
David Douard <david.douard@logilab.fr>
parents:
108
diff
changeset
|
181 | if __name__ == '__main__': |
c2d93abebab3
[plotter] add a --mockup option to the demo main function
David Douard <david.douard@logilab.fr>
parents:
108
diff
changeset
|
182 | main() |