#!/usr/bin/perl -w # dbl2dabc V0.1 # convert ioc variable list to dabc config file # v0.1: 7-Dec-2011 Joern Adamczewski-Musch, gsi # # to produce input lists, invoke following commands in ioc console: # dbl ai > ${TOP}/iocBoot/${IOC}/cbm_ai.dbl # dbl longin > ${TOP}/iocBoot/${IOC}/cbm_longin.dbl # these files will appear in same directory as st.cmd for ioc use English; use strict; use Getopt::Long; use FileHandle; use File::Path; use File::Basename; my $dbl_double_file = "./cbm_ai.dbl"; my $dbl_longin_file = "./cbm_longin.dbl"; my $dabc_config_file = "./EpicsRead.xml"; open( OUTFILE, '>', $dabc_config_file ) or die "Could not open $dabc_config_file: $! \n"; print "Generating dabc config file $dabc_config_file ...\n"; # first provide output file with standard header: print OUTFILE "\n"; print OUTFILE "\n"; print OUTFILE " \n"; print OUTFILE " \n"; print OUTFILE " \n"; print OUTFILE " \n"; print OUTFILE " \n"; print OUTFILE " \n"; print OUTFILE " \n"; print OUTFILE " \n"; print OUTFILE " \n"; print OUTFILE " \n"; print OUTFILE " \n"; print OUTFILE " \n"; print OUTFILE " \n"; print OUTFILE " \n"; print OUTFILE " \n"; print OUTFILE " \n"; #evaluate long records if existing my $rev=open( IFILE, '<', $dbl_longin_file ); if(!$rev) { # we do not have file, just set empty number with template: print "Could not open $dbl_longin_file\n"; print OUTFILE " \n"; } else { my @longints= ; my $numlongs = $#longints + 1; print "Using $numlongs longint records from file $dbl_longin_file\n"; print OUTFILE " \n"; foreach my $varint (@longints) { chomp($varint); my $outdata = sprintf(" ",$varint); print OUTFILE "$outdata\n"; } print OUTFILE " \n"; } #evaluate double records if existing $rev=open( DFILE, '<', $dbl_double_file ); if(!$rev) { # we do not have file, just set empty number with template: print "Could not open $dbl_double_file\n"; print OUTFILE " \n"; } else { my @longdubs= ; my $numdoubles = $#longdubs + 1; print "Using $numdoubles ai records from file $dbl_double_file\n"; print OUTFILE " \n"; foreach my $vardub (@longdubs) { chomp($vardub); my $outdata = sprintf(" ",$vardub); print OUTFILE "$outdata\n"; } print OUTFILE " \n"; } #provide footer print OUTFILE " \n"; print OUTFILE " \n"; print OUTFILE " \n"; print OUTFILE "\n"; print "\tdone.\n"; print "! Do not forget to adjust and Run setup! \n";