00001 /* Gnome gxsm - Gnome X Scanning Microscopy 00002 * universal STM/AFM/SARLS/SPALEED/... controlling and 00003 * data analysis software 00004 * 00005 * Copyright (C) 1999 The Free Software Foundation 00006 * 00007 * Authors: Percy Zahl <zahl@fkp.uni-hannover.de> 00008 * additional features: Andreas Klust <klust@fkp.uni-hannover.de> 00009 * 00010 * This program is free software; you can redistribute it and/or modify 00011 * it under the terms of the GNU General Public License as published by 00012 * the Free Software Foundation; either version 2 of the License, or 00013 * (at your option) any later version. 00014 * 00015 * This program is distributed in the hope that it will be useful, 00016 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00017 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00018 * GNU General Public License for more details. 00019 * 00020 * You should have received a copy of the GNU General Public License 00021 * along with this program; if not, write to the Free Software 00022 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. 00023 */ 00024 00025 #ifndef __PROBE_SCAN_H 00026 #define __PROBE_SCAN_H 00027 00028 #include <iostream> 00029 00030 #include <gtk/gtk.h> 00031 00032 #include <unistd.h> 00033 #include <sys/mman.h> 00034 #include <sys/types.h> 00035 #include <sys/stat.h> 00036 #include <asm/page.h> 00037 #include <fcntl.h> 00038 00039 #include "config.h" 00040 #include "gxsm/mem2d.h" 00041 #include "gxsm/scan.h" 00042 #include "gxsm/xsmhard.h" 00043 #include "gxsm/glbvars.h" 00044 #include "gxsm/plugin.h" 00045 #include "app_probe.h" 00046 #include "include/dsp-pci32/xsm/xsmcmd.h" 00047 00048 #include "probe_base.h" 00049 00050 extern GxsmPlugin DSPProbe_pi; 00051 00052 // storage class for probe control parameters 00053 class SPM_Probe_p : public ProbeBase { 00054 public: 00055 SPM_Probe_p(gchar *SetName = "ProbeCntrl", gchar *SetTitle = "Probe Data"); 00056 ~SPM_Probe_p(); 00057 int Resize(){ 00058 scan->Resize(nx, nsrcs); 00059 return 0; 00060 }; 00061 00062 double xS, xE; // start and end point 00063 double GapAdj; // Gap Adjustment, Ang/Volt from current Setpoit 00064 double ACAmp; // AC out Anteil 00065 double ACFrq; // AC Modulations Frq. 00066 double ACPhase; // Phase for LockIn 00067 double ACMultiplier; // Multiplier for AC data (1, >1 make used of increased resolution) 00068 int nx; // #points 00069 int delay; // delay between data aquisition 00070 int channels; // channels to aquire (>=1Value, >=2Amp, >=3Z) 00071 int nAve; // averaging 00072 int nRep; // # Repitions 00073 double CIval; // CP=CS=0.; CI=this while Probe 00074 int srcs; // input channel mask 00075 int nsrcs; // number of input sources 00076 int outp; // output channel 00077 gchar *resName; // resource name 00078 gchar *resTitle; // title / tab label 00079 Mem2d *scan; // data 00080 }; 00081 00082 /* 00083 * Probe (Force/Dist, STS, Oszi...)) Ableitung 00084 * this "scan" is handled seperatly by ProbeControl 00085 * e.g. is not managed by the "surface-channel-system" 00086 * ============================================================ 00087 */ 00088 00089 class ProbeScan : public Scan{ 00090 public: 00091 ProbeScan(); 00092 ~ProbeScan(); 00093 00094 int Save(gchar *fname); 00095 int Load(gchar *fname); 00096 00097 int Probe(XSM_Hardware *hw, SPM_Probe_p *prbp); 00098 int Stop(); 00099 00100 private: 00101 int StopProbeFlg; 00102 }; 00103 00104 #endif 00105