source: trunk/FACT++/MAINPAGE@ 10680

Last change on this file since 10680 was 10680, checked in by tbretz, 14 years ago
Added some hint about the TQtWidget warning from root.
File size: 9.7 KB
Line 
1// **************************************************************************
2/** @mainpage
3
4@brief FACT++ - The FACT slow control software
5
6@author thomas.bretz@epfl.ch et al.
7@version 1.0
8
9@section install_sec Installation
10
11FACT++ can be downloaded from the svn by
12
13\verbatim
14 svn checkout https://fact.isdc.unige.ch/svn/trunk/FACT++ [localdir]
15\endverbatim
16
17it includes a dim version which is automatically compiled.
18
19For compilation use
20
21\verbatim
22 ./configure
23 make
24\endverbatim
25
26Check the \b ./configure options with \b --help. It might look
27confusing, but some features like FITS or QT4 can be switched off,
28if the necessary library is not at hand and the feature is not needed.
29For example, if the GUI is not needed its compilation can be switched
30off by disabling QT4 support with \b --without-qt4.
31
32If you use a custom built root version on your system without QT
33support, but have a distribution packe (e.g. debian package) with
34QT support available, you can give the path to root executables,
35for example, with <B>--with-rootsys=/usr/bin</B>. All other paths
36are extracted from subsequent calls to \b root-config.
37
38Running \b ./configure will take some time. It tries to really check
39carefully that everything needed is available on your system, so that you
40get errors before you start compilation.
41
42If \b ./configure fails please and you send a bug report please attach
43the file config.log.
44
45If \b make fails please and you send a bug report please attach
46the complete output of <B>make V=1</B>.
47
48\b Reminder: These programs use shared libraries, i.e. whenever you re-compile
49part of the project some of them might be re-compiled as well. As a result
50already running programs might crash unexpectedly! This is \b not a bug.
51
52In principle configure also supports
53
54\verbatim
55 make install
56\endverbatim
57
58which would install the package and the libraries in your system,
59although at the moment this is not recommended
60
61@subsection rootwarning ROOT warnings during compilation
62
63During compilation of the GUI you get some warning from root's TQtWidget.h.
64These warnings are completely harmless and can be ignored. However, it is sometimes
65advicable to get rid of them to get a clean compiler run which makes development
66easier.
67
68Therefore replace
69\verbatim
70inline void resize(const QSize &size) { QPixmap newSize(size); *(QPixmap *)this = newSize; }
71\endverbatim
72by
73\verbatim
74inline void resize(const QSize &sz) { QPixmap newSize(sz); *(QPixmap *)this = newSize; }
75\endverbatim
76in TQtWidget.h
77
78
79@subsection packages Required packages
80
81The following section gives a list of packages which were necessary after
82a fresh Ubuntu 11.04 installation. In addition to all the development
83packages the corresponding package with the library is needed.
84
85<i>Required</i>
86- subversion
87- gcc
88- g++
89- make
90- libreadline6-dev
91- libcfitsio3-dev
92- libccfits-dev
93- libmysqlclient-dev
94- libmysql++-dev
95- libboost-all-dev
96- libx11-dev
97
98<i>If you want 'did'</i>
99- lesstif2-dev
100
101<i>To compile the gui</i>
102- libqt4-dev
103- root (see section about root, currently recommended versions 5.18/00b-5.26/00e)
104
105<i>To create your own documentation</i>
106- graphviz
107- doxygen
108- help2man
109
110<i>For developers</i>
111- autoconf
112- autoconf-archive
113- libtool
114- qt4-designer
115
116<i>Some nice to have (FACT++)</i>
117- colorsvn
118- colorgcc
119- colordiff
120
121<i>Some nice to have (system)</i>
122- fte
123- efte
124- htop
125
126@section How to install root 5.26/00 on Ubuntu 11.04 (natty)
127
128- install gpp4.4, gcc4.4, g++4.4 (root does not compile with gcc4.5)
129- make links to hidden X11 libraries:
130<B><pre>
131cd /usr/local
132sudo ln -s x86_64-linux-gnu/libX* .
133</pre></B>
134- in the root source directory
135<B><pre>
136./configure --enable-qt --with-cc=gcc-4.4 --with-cxx=g++-4.4 --with-xrootd-opts=--syslibs=/usr/lib/x86_64-linux-gnu --prefix=/usr/local
137</pre></B>
138- \b make
139- <b>sudo make install</b>
140- pray
141- don't forget to set LD_LIBRARY_PATH correctly before you try to start the fact gui
142
143
144@section Demo Current demonstration programs
145
146- \b dserver2: A virtual board (A TCP/IP server). It is sending a
147 "hello" message after accepting a communication and then in 3s
148 intervals the current UTC time. The board can be set to state 1 or back
149 to state 0 (just as a demonstration)
150- \b dclient5: A control program. It accesses two viratual boards (start them
151 with 'dserver2 5000' and 'dserver2 4001') If both boards are connected the START
152 command can be issued to get them to state 'Running'. In this state
153 an asynchronous time stamp can be requested sending the TIME command.
154 to get back from Running to Connected use STOP.
155- \b test3: a dim console which allows to control all dim servers
156 by sending commands via the dim network.
157- Both, \b dclient5 and \b test3 accept the command line options -c0, -c1, -c2
158 to switch between different console types (or no console in the case of
159 \b dclient5). In the console you get help with 'h' and the available
160 command with 'c' You get the avilable command-line options with --help
161
162First start the two dserver2s. Then start a dclient5 (if you want it
163with console use one of the -c options) and a test3 console (with one
164of the console options if you like) you can now control the hardware
165boards with the START, STOP and TIME commands or stop (Ctrl-C) and
166start one of the programs to see what's happening. In the test3 case
167you first have to \e cd to the server to which you want to talk by \b
168DATA_LOGGER. Don't forget to start \b dns if you want to control dclient5
169from test3 via Dim.
170
171@section dimremarks Remarks about Dim usage
172
173To be able to write all received data directly to the FITS files,
174padding has been disabled calling dic_diable_padding() and
175dis_disable_padding(). This is done in our own error handler
176DimErrorRedirecter. Since this should be one of the first
177objects created in any environment it is quite save. However, every
178Dim client or server in our network which does not use the
179DimErrorRedirecter \b must call these two functions as early as
180possible.
181
182@section exitcodes Exit Code
183@section newcommand How to add a new command?
184@section description How to add help textes to services and commands?
185
186@section addtab How to add a new tab in the gui?
187
188Do the following steps in exactly this order:
189- Insert the new page from the context menu of the QTabWidget
190- Copy the QDockWidget from one of the other tabs to the clipboard
191- Paste the copied QDockWidget and add it to the new tab (only the tab should be highlited)
192- Now click on the context menu of the region in the tab (QWidget) and change the layout to grid layout
193
194
195@section Documentation
196
197Each program has an extensive help text (except the examples). This help text can
198be displayed with the \b --help option. For each program a man-page is automatically
199created (from the help-output), which (at the moment) can be accessed with <B>man
200FILE</B>.
201
202@section References
203
204@subsection generalref General references
205- <A HREF="http://www.cplusplus.com/reference">The C++ reference</A>
206- <A HREF="http://www.boost.org">boost.org: The boost C++ libraries</A>
207- <A HREF="http://www.highscore.de/cpp/boost/titelseite.html">Boris Sch&auml;ling: Die Boost C++ Bibliotheken</A>
208- <A HREF="http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html">GNU Readline</A>
209- <A HREF="http://www.gnu.org/software/ncurses">GNU Ncurses</A>
210- <A HREF="http://dim.web.cern.ch/">Distributed Information Management (DIM)</A>
211- <A HREF="http://dim.web.cern.ch/dim/cpp_doc/DimCpp.html">Distributed Information Management (DIM) - C++ reference</A>
212- <A HREF="http://qt.nokia.com/">Qt homepage</A>
213- <A HREF="http://qt.nokia.com/downloads/">Qt downloads</A>
214
215@subsection boostref Boost references
216- <A HREF="http://www.boost.org/doc/libs/1_45_0/libs/bind/bind.html">boost::bind (V1.45.0)</A>
217- <A HREF="http://www.boost.org/doc/libs/1_45_0/doc/html/boost_asio.html">boost asio (V1.45.0)</A>
218- <A HREF="http://www.boost.org/doc/libs/1_45_0/doc/html/date_time.html">boost date_time (V1.45.0)</A>
219- <A HREF="http://www.boost.org/doc/libs/1_45_0/doc/html/program_options.html">boost program_options (V1.45.0)</A>
220- <A HREF="http://www.boost.org/doc/libs/1_45_0/libs/filesystem/v3/doc/index.htm">boost filesystem (V1.45.0)</A>
221- <A HREF="http://www.boost.org/doc/libs/1_45_0/libs/regex/doc/html/index.html">boost regex (V1.45.0)</A>
222- <A HREF="http://www.boost.org/doc/libs/1_45_0/libs/system/doc/index.html">boost system (error codes) (V1.45.0)</A>
223- <A HREF="http://www.boost.org/doc/libs/1_45_0/doc/html/thread.html">boost thread (V1.45.0)</A>
224- <A HREF="http://www.boost.org/doc/libs/1_45_0/libs/conversion/lexical_cast.htm">boost lexical_cast (V1.45.0)</A>
225
226@subsection fitsref FITS references
227- <A HREF="http://heasarc.gsfc.nasa.gov/docs/heasarc/fits.html">The FITS data format</A>
228- <A HREF="http://heasarc.gsfc.nasa.gov/fitsio/">FITS homepage</A>
229- <A HREF="http://heasarc.gsfc.nasa.gov/fitsio/CCfits/">CCfits - A C++ wrapper to cfitsio</A>
230- <A HREF="http://heasarc.gsfc.nasa.gov/docs/software/ftools/fv/">fv - A very simple viewer to FITS file contents</A>
231
232@subsection qtroot How to integrate root in QT?
233
234- <A HREF="http://doc.trolltech.com/4.3/designer-creating-custom-widgets.html">QT4: Creating custom widgets</A>
235- <A HREF="http://root.cern.ch/download/doc/26ROOTandQt.pdf">root: QT integration (pdf)</A>
236
237
238@section Available programs
239
240- dns: Dim's domain-name-server (needed for any communication between Dim servers and clients)
241- did: A simple graphical interface to analyse everything in a Dim network
242
243@section Examples
244
245There are a few example programs
246- \b ./argv: Example for usage of the class Configure (command line options, configuration file)
247- \b ./time: Example for the usage of the class Time (time input/output, conversion)
248- \b ./log, \b ./logtime: A simple Dim-Service/-Client combination using MessageDimRX/MessageDimTX
249
250**/
251// **************************************************************************
Note: See TracBrowser for help on using the repository browser.