usersignalgenerator.cpp
1 /***************************************************************************
2  Copyright (C) 2002-2015 Kentaro Kitagawa
3  kitagawa@phys.s.u-tokyo.ac.jp
4 
5  This program is free software; you can redistribute it and/or
6  modify it under the terms of the GNU Library General Public
7  License as published by the Free Software Foundation; either
8  version 2 of the License, or (at your option) any later version.
9 
10  You should have received a copy of the GNU Library General
11  Public License and a list of authors along with this program;
12  see the files COPYING and AUTHORS.
13 ***************************************************************************/
14 #include "analyzer.h"
15 #include "charinterface.h"
16 #include "usersignalgenerator.h"
17 
18 REGISTER_TYPE(XDriverList, SG7130, "KENWOOD SG7130 signal generator");
19 REGISTER_TYPE(XDriverList, SG7200, "KENWOOD SG7200 signal generator");
20 REGISTER_TYPE(XDriverList, HP8643, "HP/Agilent 8643/8644 signal generator");
21 REGISTER_TYPE(XDriverList, HP8648, "HP/Agilent 8648 signal generator");
22 REGISTER_TYPE(XDriverList, HP8664, "HP/Agilent 8664/8665 signal generator");
23 REGISTER_TYPE(XDriverList, DPL32XGF, "DSTech. DPL-3.2XGF signal generator");
24 REGISTER_TYPE(XDriverList, RhodeSchwartzSMLSMV, "Rhode-Schwartz SML01/02/03/SMV03 signal generator");
25 
26 XSG7200::XSG7200(const char *name, bool runtime,
27  Transaction &tr_meas, const shared_ptr<XMeasure> &meas)
28  : XCharDeviceDriver<XSG>(name, runtime, ref(tr_meas), meas) {
29  interface()->setGPIBUseSerialPollOnWrite(false);
30  interface()->setGPIBUseSerialPollOnRead(false);
31 }
32 XSG7130::XSG7130(const char *name, bool runtime,
33  Transaction &tr_meas, const shared_ptr<XMeasure> &meas)
34  : XSG7200(name, runtime, ref(tr_meas), meas) {
35 }
36 void
37 XSG7200::changeFreq(double mhz) {
38  XScopedLock<XInterface> lock( *interface());
39  interface()->sendf("FR%fMHZ", mhz);
40  msecsleep(50); //wait stabilization of PLL
41 }
42 void
43 XSG7200::onRFONChanged(const Snapshot &shot, XValueNodeBase *) {
44 }
45 void
46 XSG7200::onOLevelChanged(const Snapshot &shot, XValueNodeBase *) {
47  interface()->sendf("LE%fDBM", (double)shot[ *oLevel()]);
48 }
49 void
50 XSG7200::onFMONChanged(const Snapshot &shot, XValueNodeBase *) {
51  interface()->send(shot[ *fmON()] ? "FMON" : "FMOFF");
52 }
53 void
54 XSG7200::onAMONChanged(const Snapshot &shot, XValueNodeBase *) {
55  interface()->send(shot[ *amON()] ? "AMON" : "AMOFF");
56 }
57 
58 XHP8643::XHP8643(const char *name, bool runtime,
59  Transaction &tr_meas, const shared_ptr<XMeasure> &meas)
60  : XCharDeviceDriver<XSG>(name, runtime, ref(tr_meas), meas) {
61  interface()->setGPIBUseSerialPollOnWrite(false);
62 // interface()->setGPIBWaitBeforeWrite(10);
63 // interface()->setGPIBWaitBeforeRead(10);
64 }
65 void
66 XHP8643::changeFreq(double mhz) {
67  XScopedLock<XInterface> lock( *interface());
68  interface()->sendf("FREQ:CW %f MHZ", mhz);
69  msecsleep(75); //wait stabilization of PLL < 1GHz
70 }
71 void
72 XHP8643::onRFONChanged(const Snapshot &shot, XValueNodeBase *) {
73  interface()->sendf("AMPL:STAT %s", shot[ *rfON()] ? "ON" : "OFF");
74 }
75 void
76 XHP8643::onOLevelChanged(const Snapshot &shot, XValueNodeBase *) {
77  interface()->sendf("AMPL:LEV %f DBM", (double)shot[ *oLevel()]);
78 }
79 void
80 XHP8643::onFMONChanged(const Snapshot &shot, XValueNodeBase *) {
81  interface()->sendf("FMSTAT %s", shot[ *fmON()] ? "ON" : "OFF");
82 }
83 void
84 XHP8643::onAMONChanged(const Snapshot &shot, XValueNodeBase *) {
85  interface()->sendf("AMSTAT %s", shot[ *amON()] ? "ON" : "OFF");
86 }
87 
88 XHP8648::XHP8648(const char *name, bool runtime,
89  Transaction &tr_meas, const shared_ptr<XMeasure> &meas)
90  : XHP8643(name, runtime, ref(tr_meas), meas) {
91 // interface()->setGPIBUseSerialPollOnWrite(false);
92 // interface()->setGPIBWaitBeforeWrite(10);
93 // interface()->setGPIBWaitBeforeRead(10);
94 }
95 void
96 XHP8648::onRFONChanged(const Snapshot &shot, XValueNodeBase *) {
97  interface()->sendf("OUTP:STAT %s", shot[ *rfON()] ? "ON" : "OFF");
98 }
99 void
100 XHP8648::onOLevelChanged(const Snapshot &shot, XValueNodeBase *) {
101  interface()->sendf("POW:AMPL %f DBM", (double)shot[ *oLevel()]);
102 }
103 
104 XHP8664::XHP8664(const char *name, bool runtime,
105  Transaction &tr_meas, const shared_ptr<XMeasure> &meas)
106  : XCharDeviceDriver<XSG>(name, runtime, ref(tr_meas), meas) {
107  interface()->setGPIBUseSerialPollOnWrite(false);
108 // interface()->setGPIBWaitBeforeWrite(10);
109 // interface()->setGPIBWaitBeforeRead(10);
110 }
111 void
112 XHP8664::changeFreq(double mhz) {
113  XScopedLock<XInterface> lock( *interface());
114  interface()->sendf("FREQ:CW %f MHZ", mhz);
115  msecsleep(50); //wait stabilization of PLL
116 }
117 void
118 XHP8664::onRFONChanged(const Snapshot &shot, XValueNodeBase *) {
119  interface()->sendf("AMPL:STAT %s", shot[ *rfON()] ? "ON" : "OFF");
120 }
121 void
122 XHP8664::onOLevelChanged(const Snapshot &shot, XValueNodeBase *) {
123  interface()->sendf("AMPL %f DBM", (double)shot[ *oLevel()]);
124 }
125 void
126 XHP8664::onFMONChanged(const Snapshot &shot, XValueNodeBase *) {
127  interface()->sendf("FM:STAT %s", shot[ *fmON()] ? "ON" : "OFF");
128 }
129 void
130 XHP8664::onAMONChanged(const Snapshot &shot, XValueNodeBase *) {
131  interface()->sendf("AM:STAT %s", shot[ *amON()] ? "ON" : "OFF");
132 }
133 
134 XDPL32XGF::XDPL32XGF(const char *name, bool runtime,
135  Transaction &tr_meas, const shared_ptr<XMeasure> &meas)
136  : XCharDeviceDriver<XSG>(name, runtime, ref(tr_meas), meas) {
137  interface()->setEOS("\r\n");
138  interface()->setSerialBaudRate(9600);
139  interface()->setSerialStopBits(1);
140  interface()->setSerialFlushBeforeWrite(true);
141  amON()->disable();
142  fmON()->disable();
143 }
144 void
145 XDPL32XGF::changeFreq(double mhz) {
146  XScopedLock<XInterface> lock( *interface());
147  interface()->queryf("F %fM", mhz);
148  msecsleep(50); //wait stabilization of PLL
149 }
150 void
151 XDPL32XGF::onRFONChanged(const Snapshot &shot, XValueNodeBase *) {
152  interface()->queryf("%s", shot[ *rfON()] ? "ON" : "OFF");
153 }
154 void
155 XDPL32XGF::onOLevelChanged(const Snapshot &shot, XValueNodeBase *) {
156  interface()->queryf("A %.1f", (double)shot[ *oLevel()]);
157 }
158 void
159 XDPL32XGF::onFMONChanged(const Snapshot &shot, XValueNodeBase *) {
160 }
161 void
162 XDPL32XGF::onAMONChanged(const Snapshot &shot, XValueNodeBase *) {
163 }
164 
165 XRhodeSchwartzSMLSMV::XRhodeSchwartzSMLSMV(const char *name, bool runtime,
166  Transaction &tr_meas, const shared_ptr<XMeasure> &meas)
167  : XCharDeviceDriver<XSG>(name, runtime, ref(tr_meas), meas) {
168  interface()->setEOS("\r\n");
169  interface()->setSerialBaudRate(9600);
170  interface()->setSerialStopBits(1);
171  interface()->setSerialFlushBeforeWrite(true);
172 
173 }
174 void
175 XRhodeSchwartzSMLSMV::changeFreq(double mhz) {
176  XScopedLock<XInterface> lock( *interface());
177  interface()->sendf(":SOUR:FREQ %f", mhz * 1e6);
178  msecsleep(50); //wait stabilization of PLL
179 }
180 void
181 XRhodeSchwartzSMLSMV::onRFONChanged(const Snapshot &shot, XValueNodeBase *) {
182  interface()->sendf(":OUTP:STAT %s", shot[ *rfON()] ? "ON" : "OFF");
183 }
184 void
185 XRhodeSchwartzSMLSMV::onOLevelChanged(const Snapshot &shot, XValueNodeBase *) {
186  interface()->sendf(":POW %.1f", (double)shot[ *oLevel()]);
187 }
188 void
189 XRhodeSchwartzSMLSMV::onFMONChanged(const Snapshot &shot, XValueNodeBase *) {
190  interface()->sendf(":FM:STAT %s", shot[ *fmON()] ? "ON" : "OFF");
191 }
192 void
193 XRhodeSchwartzSMLSMV::onAMONChanged(const Snapshot &shot, XValueNodeBase *) {
194  interface()->sendf(":AM:STAT %s", shot[ *amON()] ? "ON" : "OFF");
195 }

Generated for KAME4 by  doxygen 1.8.3