pygpibtoolkit/plotter/gpib_plotter.py

Mon, 04 Jun 2018 22:27:41 +0200

author
David Douard <david.douard@logilab.fr>
date
Mon, 04 Jun 2018 22:27:41 +0200
changeset 108
dadf7c8d43ad
parent 104
916c255b3079
child 109
c2d93abebab3
permissions
-rw-r--r--

[plotter] use OSError instead of more specific SerialException

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
9af1509775b6 initial import
David Douard <david.douard@logilab.fr>
parents:
diff changeset
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
9af1509775b6 initial import
David Douard <david.douard@logilab.fr>
parents:
diff changeset
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
9af1509775b6 initial import
David Douard <david.douard@logilab.fr>
parents:
diff changeset
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
9af1509775b6 initial import
David Douard <david.douard@logilab.fr>
parents:
diff changeset
98
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 77
diff changeset
99
1
0670b1f5c155 make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents: 0
diff changeset
100 if __name__ == '__main__':
0670b1f5c155 make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents: 0
diff changeset
101 import optparse
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 77
diff changeset
102 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
103 '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
104 '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
105 opt.add_option(
4cbd3d410230 [plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
106 '-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
107 dest='filename',
4cbd3d410230 [plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
108 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
109 opt.add_option(
4cbd3d410230 [plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
110 '-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
111 dest='device',
4cbd3d410230 [plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
112 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
113 opt.add_option(
4cbd3d410230 [plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
114 '-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
115 dest='address',
4cbd3d410230 [plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
116 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
117 opt.add_option(
4cbd3d410230 [plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
118 '-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
119 action="store_true",
4cbd3d410230 [plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
120 dest="loop",
4cbd3d410230 [plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
121 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
122 "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
123 opt.add_option(
4cbd3d410230 [plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
124 '-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
125 action="store_true",
4cbd3d410230 [plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
126 dest="verbose",
4cbd3d410230 [plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
127 help="Verbose mode")
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 77
diff changeset
128
1
0670b1f5c155 make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents: 0
diff changeset
129 options, argv = opt.parse_args(sys.argv)
0
9af1509775b6 initial import
David Douard <david.douard@logilab.fr>
parents:
diff changeset
130
1
0670b1f5c155 make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents: 0
diff changeset
131 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
132 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
133
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 77
diff changeset
134 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
135 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
136 else:
0670b1f5c155 make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents: 0
diff changeset
137 outf = sys.stdout
0
9af1509775b6 initial import
David Douard <david.douard@logilab.fr>
parents:
diff changeset
138
1
0670b1f5c155 make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents: 0
diff changeset
139 try:
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 77
diff changeset
140 plotter = GPIBplotter(
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 77
diff changeset
141 device=options.device, address=int(options.address),
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 77
diff changeset
142 timeout=0.06)
108
dadf7c8d43ad [plotter] use OSError instead of more specific SerialException
David Douard <david.douard@logilab.fr>
parents: 104
diff changeset
143 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
144 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
145 [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
146 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
147 sys.exit(1)
0670b1f5c155 make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents: 0
diff changeset
148 if options.verbose:
0670b1f5c155 make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents: 0
diff changeset
149 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
150
0670b1f5c155 make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents: 0
diff changeset
151 loop = True
0670b1f5c155 make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents: 0
diff changeset
152 nloop = 0
0670b1f5c155 make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents: 0
diff changeset
153 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
154 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
155 if options.verbose:
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('.')
0670b1f5c155 make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents: 0
diff changeset
157 if plot:
0670b1f5c155 make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents: 0
diff changeset
158 outf.write(plot)
0670b1f5c155 make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents: 0
diff changeset
159 if options.verbose:
0670b1f5c155 make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents: 0
diff changeset
160 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
161 sys.stderr.write(
4cbd3d410230 [plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
162 '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
163 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
164 loop = False
0670b1f5c155 make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents: 0
diff changeset
165 else:
0670b1f5c155 make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents: 0
diff changeset
166 nloop += 1
0670b1f5c155 make 7470 plotter emulator more user friendly & several file renames
David Douard <david.douard@logilab.fr>
parents: 0
diff changeset
167 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
168 outf = open(fname + "_%d" % nloop + ext, 'w')

mercurial