Das Netzgerät Grundig PN 200 hat zwei programmierbare Spannungsausgänge (jeweils 0..20 V) mit einstellbarer Strombegrenzung (0..500 mA). Daten, Eigenschaften, Betriebsarten und Programmierung sind ausführlich in der zugehörigen Gebrauchsanweisung beschrieben.
Zur Bedienung des Geräte könnte man eine Klasse powersupply definieren, die im wesentlichen Funktionen zur Vorgabe der Spannungswerte und der Strombegrenzung der beiden Ausgänge A und B bereitstellt:
class powersupply : protected fserialbase { public: powersupply(); virtual ~powersupply(); void setA(double volts, double amps); void setA(double volts); void setB(double volts, double amps); void setB(double volts); }; |
Die Implementierung, zunächst die benötigten Zeichenfolgen:
const char InitString[] = { 20, 9, 25 }; const char ResetString[] = "*CLS\n"; const char OpMode[] = "OPER_IND\n"; const char GoToLocal[] = "\01"; const char SelectA[] = "SEL_A;"; const char SelectB[] = "SEL_B;"; const char SetVoltage[] = "VSET %05.2f\n"; const char SetCurrent[] = "ISET %5.3f\n"; const char SetBoth[] = "VSET %05.2f;ISET %5.3f\n"; |
Dann die Ausgestaltung der vorher angekündigten Funktionen:
powersupply::powersupply() : fserialbase(DEV1) { fprintf(FilePtr(), InitString); fprintf(FilePtr(), ResetString); fprintf(FilePtr(), OpMode); } powersupply::~powersupply() { sleep(5); // it's a slow device fprintf(FilePtr(), GoToLocal); } void powersupply::setA(double volts, double amps) { fprintf(FilePtr(), SelectA); fprintf(FilePtr(), SetBoth, volts, amps); } void powersupply::setA(double volts) { fprintf(FilePtr(), SelectA); fprintf(FilePtr(), SetVoltage, volts); } void powersupply::setB(double volts, double amps) { fprintf(FilePtr(), SelectB); fprintf(FilePtr(), SetBoth, volts, amps); } void powersupply::setB(double volts) { fprintf(FilePtr(), SelectB); fprintf(FilePtr(), SetVoltage, volts); } |
Der Übersichtlichkeit halber wurde eine Überprüfung der Vorgabewerte weggelassen. Um die Funktionen robust zu machen, sollten die vorgegebenen Spannungs- und Stromwerte daraufhin überprüft werden, ob sie im Einstellbereich des Netzgeräts liegen.