<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://ocotal.iarc.uaf.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=127.0.0.1&amp;*</id>
	<title>IARC 207 Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://ocotal.iarc.uaf.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=127.0.0.1&amp;*"/>
	<link rel="alternate" type="text/html" href="http://ocotal.iarc.uaf.edu/index.php?title=Special:Contributions/127.0.0.1"/>
	<updated>2026-05-12T18:38:05Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.34.2</generator>
	<entry>
		<id>http://ocotal.iarc.uaf.edu/index.php?title=WERC_datasite_architecture&amp;diff=379</id>
		<title>WERC datasite architecture</title>
		<link rel="alternate" type="text/html" href="http://ocotal.iarc.uaf.edu/index.php?title=WERC_datasite_architecture&amp;diff=379"/>
		<updated>2007-07-06T23:16:58Z</updated>

		<summary type="html">&lt;p&gt;127.0.0.1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= WERC datasite architecture =&lt;br /&gt;
&lt;br /&gt;
WERC uses the Linux operating system for running downloads and &lt;br /&gt;
storing the data from the Campbell Scientific CR10 family of &lt;br /&gt;
dataloggers.&lt;br /&gt;
&lt;br /&gt;
The following setup and conventions might be viewed as a type of&lt;br /&gt;
ad-hoc database, but the implementation is straightforward, using&lt;br /&gt;
ordinary directories and (''flat'') files.&lt;br /&gt;
&lt;br /&gt;
==site root==&lt;br /&gt;
&lt;br /&gt;
A '''site root''' directory is established on the data-gathering&lt;br /&gt;
host computer, e.g., /home/site/.&lt;br /&gt;
&lt;br /&gt;
Individual sites could be found directly under this location, e.g.,&lt;br /&gt;
as:&lt;br /&gt;
&lt;br /&gt;
    /home/site/SITE1/&lt;br /&gt;
    /home/site/SITE2/&lt;br /&gt;
&lt;br /&gt;
but since we have so many different projects and locations, it makes sense to&lt;br /&gt;
provide subdirectories for those entities to help keep things organized,&lt;br /&gt;
and so the sites are usually defined under &amp;quot;area&amp;quot; directories:&lt;br /&gt;
&lt;br /&gt;
    /home/site/AREA1/SITE1/&lt;br /&gt;
    /home/site/AREA1/SITE2/&lt;br /&gt;
    /home/site/AREA2/SITE1/&lt;br /&gt;
    /home/site/AREA2/SITE5/&lt;br /&gt;
&lt;br /&gt;
Here we're showing two &amp;quot;areas&amp;quot; or &amp;quot;projects&amp;quot;, but some of the sites contained&lt;br /&gt;
therein have the same names.  In practice, it might be preferrable to keep the&lt;br /&gt;
site names unique, for example to allow utility programs to refer to the sites&lt;br /&gt;
without having to specify the area.&lt;br /&gt;
&lt;br /&gt;
In any case, the &amp;quot;area&amp;quot; directories don't necessarily have any assumed&lt;br /&gt;
meaning or importance other than organization -- though they could do...&lt;br /&gt;
&lt;br /&gt;
== site directory ==&lt;br /&gt;
&lt;br /&gt;
A ''site'' -- here assumed to be a local or remote location with a data logger &lt;br /&gt;
and attached sensors -- is defined by a directory.  What that directory contains&lt;br /&gt;
depends on how things are configured; a ''site'' could just have files in its&lt;br /&gt;
site directory, or it might include other subdirectories, e.g., var/, etc/, web/&lt;br /&gt;
tmp/, whatever makes sense for the intended use.&lt;br /&gt;
&lt;br /&gt;
What '''really''' defines a ''site'' for the purposes here is the existence of&lt;br /&gt;
a '''site rc''' file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== site rc file ==&lt;br /&gt;
&lt;br /&gt;
In Unix-speak, ''rc'' files are plain text configuration files, very similar&lt;br /&gt;
to INI files found on (older? versions of) the Windows operating system.  ('''rc''&lt;br /&gt;
itself might stand for &amp;quot;resource configuration&amp;quot;, but other definitions can likewise&lt;br /&gt;
be found.)&lt;br /&gt;
&lt;br /&gt;
For this WERC datasite system, we chose to use the filename '''siterc''' or it's&lt;br /&gt;
dotted (and so, &amp;quot;hidden&amp;quot;) version, '''.siterc''', for storing configuration &lt;br /&gt;
settings.&lt;br /&gt;
&lt;br /&gt;
Further, we defined a simple syntax for the site rc files:&lt;br /&gt;
&lt;br /&gt;
    section:&lt;br /&gt;
       entry=value&lt;br /&gt;
       ...&lt;br /&gt;
&lt;br /&gt;
where the rc file can contain any number of sections, and any number of &lt;br /&gt;
''entry=value'' entries under each section.&lt;br /&gt;
&lt;br /&gt;
In practice, our convention has been to have an rc file section corresponding&lt;br /&gt;
to -- and sharing the name of -- the programs that are used to gather, process,&lt;br /&gt;
and move data on the site's behalf.  Any program settings specific to the site&lt;br /&gt;
can then be viewed and configured directly in the rc file, e.g., using a text&lt;br /&gt;
editor -- subject to the normal user &amp;amp; group permissions inherent to the&lt;br /&gt;
Linux operating system.&lt;br /&gt;
&lt;br /&gt;
Here's an [[WERC-datasite-siterc-example|example '''siterc''' file]] from&lt;br /&gt;
one of our active sites (with key settings changed).&lt;/div&gt;</summary>
		<author><name>127.0.0.1</name></author>
		
	</entry>
	<entry>
		<id>http://ocotal.iarc.uaf.edu/index.php?title=WERC-datasite-siterc-example&amp;diff=381</id>
		<title>WERC-datasite-siterc-example</title>
		<link rel="alternate" type="text/html" href="http://ocotal.iarc.uaf.edu/index.php?title=WERC-datasite-siterc-example&amp;diff=381"/>
		<updated>2007-07-06T22:36:51Z</updated>

		<summary type="html">&lt;p&gt;127.0.0.1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;  name=East Headwater&lt;br /&gt;
  type=CSI CR10&lt;br /&gt;
  logfile=/home/site/nslope/east_hw/var/log&lt;br /&gt;
  werc_id=EH&lt;br /&gt;
  &lt;br /&gt;
  Campbell::Comm: = Campbell::Comm-sagriver:&lt;br /&gt;
  # Campbell::Comm: = Campbell::Comm-toolik:&lt;br /&gt;
  &lt;br /&gt;
  Campbell::Comm-sagriver:&lt;br /&gt;
      host=sagriver.datanet.werc.nondns&lt;br /&gt;
      lockfile=/var/lock/uaf-sagriver&lt;br /&gt;
      port=5555&lt;br /&gt;
      code=ATXC1ATD5551212&lt;br /&gt;
      READONLY_FLAGS=0&lt;br /&gt;
      timezone=AKST&lt;br /&gt;
      timeout=-10&lt;br /&gt;
      radio_window = 1+60, 10+60&lt;br /&gt;
      radio_stats=/var/tmp/cc/radio-stats/sagriver&lt;br /&gt;
  &lt;br /&gt;
  Campbell::Comm-toolik:&lt;br /&gt;
      host=toolik.datanet.werc.nondns&lt;br /&gt;
      lockfile=/var/lock/uaf-toolik&lt;br /&gt;
      port=5555&lt;br /&gt;
      code=ATXC0ATD5551212&lt;br /&gt;
      READONLY_FLAGS=0&lt;br /&gt;
      timezone=AKST&lt;br /&gt;
      timeout=-10&lt;br /&gt;
      radio_window = 1+60, 10+60&lt;br /&gt;
      radio_stats=/var/tmp/cc/radio-stats/toolik&lt;br /&gt;
  &lt;br /&gt;
  loggerdata:&lt;br /&gt;
    # use_ascii=0&lt;br /&gt;
      use_ascii=1&lt;br /&gt;
      datapointer=/home/site/nslope/east_hw/var/DSP&lt;br /&gt;
      datafile=/home/site/nslope/east_hw/var/data&lt;br /&gt;
      newdatafile=/home/site/nslope/east_hw/var/newdata&lt;br /&gt;
      retries=2&lt;br /&gt;
      retrydelay=3&lt;br /&gt;
      ascii_arrays=1&lt;br /&gt;
      settime=10&lt;br /&gt;
      program=var/program&lt;br /&gt;
      getprogram_days=10&lt;br /&gt;
      flags=var/flags&lt;br /&gt;
      copylogs=var/&lt;br /&gt;
      session=var/session&lt;br /&gt;
  &lt;br /&gt;
  split-csv:&lt;br /&gt;
      source = var/newdata&lt;br /&gt;
      append = data/.@1-@n/SPOOL&lt;br /&gt;
      verbose = 1&lt;br /&gt;
      mkdir = 1&lt;br /&gt;
  &lt;br /&gt;
  rawdata2proc:&lt;br /&gt;
      procfs = proc/raw/&lt;br /&gt;
      datafile = var/newdata&lt;br /&gt;
      timestamp-106 = Year_RTM, Day_RTM, Hour_Minute_RTM&lt;br /&gt;
      timestamp-115 = Year_RTM, Day_RTM, Hour_Minute_RTM&lt;br /&gt;
  &lt;br /&gt;
  miscellaneous:&lt;br /&gt;
      radioaddress=555-1212&lt;br /&gt;
  &lt;br /&gt;
  rawdata2html:&lt;br /&gt;
      page=web/current-raw.html&lt;br /&gt;
      title = N.Slope, Kuparuk R, East headwater&lt;br /&gt;
      data=var/newdata&lt;br /&gt;
      numberfields=1&lt;br /&gt;
  &lt;br /&gt;
  guidata2html:&lt;br /&gt;
      page=web/current.html&lt;br /&gt;
      title = Upper Kuparuk R., East headwater site&lt;br /&gt;
      data=var/newdata&lt;br /&gt;
      template = ../.web/uk_template.html&lt;br /&gt;
      vars = web/template.var&lt;br /&gt;
  &lt;br /&gt;
  tabulardata:&lt;br /&gt;
      datafile=var/data&lt;br /&gt;
      vars = web/template.var&lt;br /&gt;
      hours = 168&lt;br /&gt;
  &lt;br /&gt;
  files2spool4web:&lt;br /&gt;
      from = web/&lt;br /&gt;
      to = WEBHOST/NorthSlope/upper_kuparuk/e_headwater/&lt;br /&gt;
      statefile = var/files2spool4web-state&lt;br /&gt;
  &lt;br /&gt;
  check-headers:&lt;br /&gt;
      headers=var/headers&lt;br /&gt;
  &lt;br /&gt;
  check-program:&lt;br /&gt;
      program=var/program&lt;br /&gt;
      annotate=1&lt;br /&gt;
      text=web/csi-program.txt&lt;br /&gt;
  &lt;br /&gt;
  push-datafile:&lt;br /&gt;
      datafile = var/newdata&lt;br /&gt;
      statefile = var/.push-datafile&lt;br /&gt;
      pushdir = /home/waterprj/near-real-time/rawdatafiles/&lt;/div&gt;</summary>
		<author><name>127.0.0.1</name></author>
		
	</entry>
	<entry>
		<id>http://ocotal.iarc.uaf.edu/index.php?title=WERC_datasite_architecture&amp;diff=378</id>
		<title>WERC datasite architecture</title>
		<link rel="alternate" type="text/html" href="http://ocotal.iarc.uaf.edu/index.php?title=WERC_datasite_architecture&amp;diff=378"/>
		<updated>2007-07-06T22:33:55Z</updated>

		<summary type="html">&lt;p&gt;127.0.0.1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= WERC datasite architecture =&lt;br /&gt;
&lt;br /&gt;
WERC uses the Linux operating system for running downloads and &lt;br /&gt;
storing the data from the Campbell Scientific CR10 family of &lt;br /&gt;
dataloggers.&lt;br /&gt;
&lt;br /&gt;
The following setup and conventions might be viewed as a type of&lt;br /&gt;
ad-hoc database, but the implementation is straightforward, using&lt;br /&gt;
ordinary directories and (''flat'') files.&lt;br /&gt;
&lt;br /&gt;
==site root==&lt;br /&gt;
&lt;br /&gt;
A '''site root''' directory is established on the data-gathering&lt;br /&gt;
host computer, e.g., /home/site/.&lt;br /&gt;
&lt;br /&gt;
Individual sites could be found directly under this location, e.g.,&lt;br /&gt;
as:&lt;br /&gt;
&lt;br /&gt;
    /home/site/SITE1/&lt;br /&gt;
    /home/site/SITE2/&lt;br /&gt;
&lt;br /&gt;
but since we have so many different projects and locations, it makes sense to&lt;br /&gt;
provide subdirectories for those entities to help keep things organized,&lt;br /&gt;
and so the sites are usually defined under &amp;quot;area&amp;quot; directories:&lt;br /&gt;
&lt;br /&gt;
    /home/site/AREA1/SITE1/&lt;br /&gt;
    /home/site/AREA1/SITE2/&lt;br /&gt;
    /home/site/AREA2/SITE1/&lt;br /&gt;
    /home/site/AREA2/SITE5/&lt;br /&gt;
&lt;br /&gt;
Here we're showing two &amp;quot;areas&amp;quot; or &amp;quot;projects&amp;quot;, but some of the sites contained&lt;br /&gt;
therein have the same names.  In practice, it might be preferrable to keep the&lt;br /&gt;
site names unique, for example to allow utility programs to refer to the sites&lt;br /&gt;
without having to specify the area.&lt;br /&gt;
&lt;br /&gt;
In any case, the &amp;quot;area&amp;quot; directories don't necessarily have any assumed&lt;br /&gt;
meaning or importance other than organization -- though they could do...&lt;br /&gt;
&lt;br /&gt;
== site directory ==&lt;br /&gt;
&lt;br /&gt;
A ''site'' -- here assumed to be a local or remote location with a data logger &lt;br /&gt;
and attached sensors -- is defined by a directory.  What that directory contains&lt;br /&gt;
depends on how things are configured; a ''site'' could just have files in its&lt;br /&gt;
site directory, or it might include other subdirectories, e.g., var/, etc/, web/&lt;br /&gt;
tmp/, whatever makes sense for the intended use.&lt;br /&gt;
&lt;br /&gt;
What '''really''' defines a ''site'' for the purposes here is the existence of&lt;br /&gt;
a '''site rc''' file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== site rc file ==&lt;br /&gt;
&lt;br /&gt;
In Unix-speak, ''rc'' files are plain text configuration files, very similar&lt;br /&gt;
to INI files found on (older? versions of) the Windows operating system.  ('''rc''&lt;br /&gt;
itself might stand for &amp;quot;resource configuration&amp;quot;, but other definitions can likewise&lt;br /&gt;
be found.)&lt;br /&gt;
&lt;br /&gt;
For this WERC datasite system, we chose to use the filename '''siterc''' or it's&lt;br /&gt;
dotted (and so, &amp;quot;hidden&amp;quot;) version, '''.siterc''', for storing configuration &lt;br /&gt;
settings.&lt;br /&gt;
&lt;br /&gt;
Further, we defined a simple syntax for the site rc files:&lt;br /&gt;
&lt;br /&gt;
    section:&lt;br /&gt;
       entry=value&lt;br /&gt;
       ...&lt;br /&gt;
&lt;br /&gt;
where the rc file can contain any number of sections, and any number of &lt;br /&gt;
''entry=value'' entries under each section.&lt;br /&gt;
&lt;br /&gt;
In practice, our convention has been to have an rc file section corresponding&lt;br /&gt;
to -- and sharing the name of -- the programs that are used to gather, process,&lt;br /&gt;
and move data on the site's behalf.  Any program settings specific to the site&lt;br /&gt;
can then be viewed and configured directly in the rc file, e.g., using a text&lt;br /&gt;
editor -- subject to the normal user &amp;amp; group permissions inherent to the&lt;br /&gt;
Linux operating system.&lt;br /&gt;
&lt;br /&gt;
Here's an [[WERC-datasite-siterc-example|example]] '''siterc''' file from&lt;br /&gt;
one of our active sites (with key settings changed).&lt;/div&gt;</summary>
		<author><name>127.0.0.1</name></author>
		
	</entry>
	<entry>
		<id>http://ocotal.iarc.uaf.edu/index.php?title=WERC_datasite_architecture&amp;diff=377</id>
		<title>WERC datasite architecture</title>
		<link rel="alternate" type="text/html" href="http://ocotal.iarc.uaf.edu/index.php?title=WERC_datasite_architecture&amp;diff=377"/>
		<updated>2007-07-06T22:21:40Z</updated>

		<summary type="html">&lt;p&gt;127.0.0.1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= WERC datasite architecture =&lt;br /&gt;
&lt;br /&gt;
WERC uses the Linux operating system for running downloads and &lt;br /&gt;
storing the data from the Campbell Scientific CR10 family of &lt;br /&gt;
dataloggers.&lt;br /&gt;
&lt;br /&gt;
The following setup and conventions might be viewed as a type of&lt;br /&gt;
ad-hoc database, but the implementation is straightforward, using&lt;br /&gt;
ordinary directories and (''flat'') files.&lt;br /&gt;
&lt;br /&gt;
==site root==&lt;br /&gt;
&lt;br /&gt;
A '''site root''' directory is established on the data-gathering&lt;br /&gt;
host computer, e.g., /home/site/.&lt;br /&gt;
&lt;br /&gt;
Individual sites could be found directly under this location, e.g.,&lt;br /&gt;
as:&lt;br /&gt;
&lt;br /&gt;
    /home/site/SITE1/&lt;br /&gt;
    /home/site/SITE2/&lt;br /&gt;
&lt;br /&gt;
but since we have so many different projects and locations, it makes sense to&lt;br /&gt;
provide subdirectories for those entities to help keep things organized,&lt;br /&gt;
and so the sites are usually defined under &amp;quot;area&amp;quot; directories:&lt;br /&gt;
&lt;br /&gt;
    /home/site/AREA1/SITE1/&lt;br /&gt;
    /home/site/AREA1/SITE2/&lt;br /&gt;
    /home/site/AREA2/SITE1/&lt;br /&gt;
    /home/site/AREA2/SITE5/&lt;br /&gt;
&lt;br /&gt;
Here we're showing two &amp;quot;areas&amp;quot; or &amp;quot;projects&amp;quot;, but some of the sites contained&lt;br /&gt;
therein have the same names.  In practice, it might be preferrable to keep the&lt;br /&gt;
site names unique, for example to allow utility programs to refer to the sites&lt;br /&gt;
without having to specify the area.&lt;br /&gt;
&lt;br /&gt;
In any case, the &amp;quot;area&amp;quot; directories don't necessarily have any assumed&lt;br /&gt;
meaning or importance other than organization -- though they could do...&lt;br /&gt;
&lt;br /&gt;
== site directory ==&lt;br /&gt;
&lt;br /&gt;
A ''site'' -- here assumed to be a local or remote location with a data logger &lt;br /&gt;
and attached sensors -- is defined by a directory.  What that directory contains&lt;br /&gt;
depends on how things are configured; a ''site'' could just have files in its&lt;br /&gt;
site directory, or it might include other subdirectories, e.g., var/, etc/, web/&lt;br /&gt;
tmp/, whatever makes sense for the intended use.&lt;br /&gt;
&lt;br /&gt;
What '''really''' defines a ''site'' for the purposes here is the existence of&lt;br /&gt;
a '''site rc''' file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== site rc file ==&lt;br /&gt;
&lt;br /&gt;
In Unix-speak, ''rc'' files are plain text configuration files, very similar&lt;br /&gt;
to INI files found on (older? versions of) the Windows operating system.  ('''rc''&lt;br /&gt;
itself might stand for &amp;quot;resource configuration&amp;quot;, but other definitions can likewise&lt;br /&gt;
be found.)&lt;br /&gt;
&lt;br /&gt;
For this WERC datasite system, we chose to use the filename '''siterc''' or it's&lt;br /&gt;
dotted (and so, &amp;quot;hidden&amp;quot;) version, '''.siterc''', for storing configuration &lt;br /&gt;
settings.&lt;br /&gt;
&lt;br /&gt;
Further, we defined a simple syntax for the site rc files:&lt;br /&gt;
&lt;br /&gt;
    section:&lt;br /&gt;
       entry=value&lt;br /&gt;
       ...&lt;br /&gt;
&lt;br /&gt;
where the rc file can contain any number of sections, and any number of &lt;br /&gt;
''entry=value'' entries under each section.&lt;br /&gt;
&lt;br /&gt;
In practice, our convention has been to have an rc file section corresponding&lt;br /&gt;
to -- and sharing the name of -- the programs that are used to gather, process,&lt;br /&gt;
and move data on the site's behalf.  Any program settings specific to the site&lt;br /&gt;
can then be viewed and configured directly in the rc file, e.g., using a text&lt;br /&gt;
editor -- subject to the normal user &amp;amp; group permissions inherent to the&lt;br /&gt;
Linux operating system.&lt;/div&gt;</summary>
		<author><name>127.0.0.1</name></author>
		
	</entry>
	<entry>
		<id>http://ocotal.iarc.uaf.edu/index.php?title=Software&amp;diff=207</id>
		<title>Software</title>
		<link rel="alternate" type="text/html" href="http://ocotal.iarc.uaf.edu/index.php?title=Software&amp;diff=207"/>
		<updated>2007-07-06T21:39:29Z</updated>

		<summary type="html">&lt;p&gt;127.0.0.1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here's a list of software commonly used in the department.  You may wish to add tips or questions to the program's wiki page.&lt;br /&gt;
&lt;br /&gt;
== Mac ==&lt;br /&gt;
* [[Dreamweaver]] -- HTML/CSS editing program&lt;br /&gt;
* [[Aptana]] -- HTML / CSS editing program with a different IDE from dreamweaver (some advantages for each)&lt;br /&gt;
* [[MS Office]] -- Excel, Powerpoint etc.&lt;br /&gt;
* [[fugu]] -- a nice GUI version of SFTP/SCP for the Mac&lt;br /&gt;
&lt;br /&gt;
== Linux ==&lt;br /&gt;
* [[Perl]] -- Handy programming language for all sorts of things&lt;br /&gt;
* [[Loggernet]] -- Campbell Scientific's data retrieval program&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
* [[Dreamweaver]] -- HTML/CSS editing program&lt;br /&gt;
* [[Aptana]] -- HTML / CSS editing program with a different IDE from dreamweaver (some advantages for each)&lt;br /&gt;
* [[MS Office]] -- Excel, Powerpoint etc.&lt;br /&gt;
* [[Adobe PDF tools]] -- Making PDFs (free alternatives also available)&lt;br /&gt;
* [[Adobe Photoshop]] -- Image Manipulation&lt;br /&gt;
* [[Adobe Illustrator]] -- Graphics creation&lt;br /&gt;
* [[Irfanview]] -- Image viewing program more flexible than the default Microsoft Image viewer&lt;br /&gt;
* [[Cygwin]]  -- linux utilities for Windows&lt;br /&gt;
* [[ArcGIS]]  -- ESRI's GIS program&lt;br /&gt;
* [[Putty]]   -- Small suite of tools for doing SSH/SFTP/SCP &lt;br /&gt;
* [[SSH Secure Shell]] -- An alternative tool for doing SSH/SFTP&lt;br /&gt;
* [[Origin]] -- A fancy plotting &amp;amp; graph program&lt;br /&gt;
* [[Surfer]] -- A fancy plotting &amp;amp; graph program&lt;br /&gt;
* [[Perl]] -- Handy programming language for all sorts of things&lt;br /&gt;
* [[Loggernet]] -- Campbell Scientific's data retrieval program&lt;br /&gt;
&lt;br /&gt;
==WERC in-house software development==&lt;br /&gt;
* data-gathering system, written in Perl:&lt;br /&gt;
** [[src-perl-Campbell::Comm-overview|overview]]&lt;br /&gt;
** [[src-perl-Campbell::Comm|Campbell::Comm]] -- perl module to interface Campbell CR10X loggers&lt;br /&gt;
** [[src-perl-querylogger|querylogger.pl]] -- query remote loggers&lt;br /&gt;
** [[src-perl-loggerdata|loggerdata.pl]] -- automatic downloads from remote loggers&lt;br /&gt;
** [[WERC datasite architecture]] -- setup &amp;amp; conventions assumed by the above&lt;/div&gt;</summary>
		<author><name>127.0.0.1</name></author>
		
	</entry>
	<entry>
		<id>http://ocotal.iarc.uaf.edu/index.php?title=Campbell::Comm&amp;diff=368</id>
		<title>Campbell::Comm</title>
		<link rel="alternate" type="text/html" href="http://ocotal.iarc.uaf.edu/index.php?title=Campbell::Comm&amp;diff=368"/>
		<updated>2007-07-06T21:31:17Z</updated>

		<summary type="html">&lt;p&gt;127.0.0.1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Campbell Scientific's CR10 family of dataloggers has been heavily used by WERC &lt;br /&gt;
and many other research groups for years.  Though now superseded by the CR1000&lt;br /&gt;
line of loggers, the CR10 line will likely be in service for years to come.&lt;br /&gt;
&lt;br /&gt;
The CR10 loggers were provided with complete documentation, both for developing&lt;br /&gt;
the datalogging programs themselves and for interfacing with other systems via&lt;br /&gt;
serial communications.  At WERC, we used this documentation to develop code in&lt;br /&gt;
the Perl programming language for ''talking to'' these datalogging systems, with&lt;br /&gt;
connections via serial radios (FreeWave) and the Internet.&lt;br /&gt;
&lt;br /&gt;
Note that Campbell provides the LoggerNet (formerly PC208 and other)&lt;br /&gt;
programs to interface dataloggers to PCs; WERC's Campbell::Comm and related &lt;br /&gt;
programs serve a more limited function than LoggerNet/PC208, being primarily &lt;br /&gt;
concerned with reliably downloading data and checking/setting the time.&lt;br /&gt;
&lt;br /&gt;
WERC's code is posted online at http://www.uaf.edu/water/staff/irving/csi-code/,&lt;br /&gt;
including a [http://www.uaf.edu/water/staff/irving/csi-code/readme README] file.&lt;br /&gt;
This system has been in use for several years, downloading data from up to 50 &lt;br /&gt;
remote loggers hourly in several different radio networks.&lt;br /&gt;
&lt;br /&gt;
This code has not been packaged for distribution, or automatic&lt;br /&gt;
installation, but it is intended to be available under the GNU Public&lt;br /&gt;
License (GPL).&lt;br /&gt;
&lt;br /&gt;
Technical descriptions of the primary components follow...&lt;br /&gt;
&lt;br /&gt;
Note that this Perl code has been written, tested, and run only on Linux&lt;br /&gt;
computers; Perl itself is very portable across platforms, but porting &lt;br /&gt;
problems (e.g,. to Windows OS family) might be encountered in such areas&lt;br /&gt;
as process management (fork, exec), ''alarm'' timing, and possibly others.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Campbell/Comm.pm==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This module becomes part of a Perl program via the '''use''' or '''require'''&lt;br /&gt;
keywords.   It provides the machinery to connect and send/receive commands&lt;br /&gt;
to/from a remote datalogger using Perl's object-oriented programming&lt;br /&gt;
methodology.  Individual ''methods'' are provided corresponding to some/most&lt;br /&gt;
of the ''telecommunications'' commands documented in the Campbell Scientific&lt;br /&gt;
CR10 family manuals.&lt;br /&gt;
&lt;br /&gt;
Another Perl module is needed in order to interact with remote dataloggers,&lt;br /&gt;
and that is Net::Telnet, which is included in the standard Perl distribution.&lt;br /&gt;
This module allows automating the telnet protocol, but boils down to being&lt;br /&gt;
able to send commands to the remote system and then wait for and handle &lt;br /&gt;
responses -- or no response, if that's necessary.&lt;br /&gt;
&lt;br /&gt;
Besides the nominal TCP/IP connections, Net::Telnet is capable of supporting&lt;br /&gt;
interfaces using a direct serial or modem connection.  This usage is &lt;br /&gt;
implemented in the (or various...) open() methods.&lt;br /&gt;
&lt;br /&gt;
A ''bug'' in Net::Telnet (this is my view; it may be considered a ''feature'' &lt;br /&gt;
by the authors...) requires a patch; this should be represented in the &lt;br /&gt;
Net::Telnet version included in the above tree.  Specifically, Net::Telnet&lt;br /&gt;
goes out of its way to handle ''timeouts'' using ''wall'' time (i.e., absolute&lt;br /&gt;
time as measured on a wall clock) rather than ''relative'' inactivity time &lt;br /&gt;
as used in the underlying select() system function.  In our case the latter&lt;br /&gt;
form is required due to the many levels and sources of latency in the &lt;br /&gt;
communication system.  &lt;br /&gt;
&lt;br /&gt;
The Perl Expect module might provide a good alternative to Net::Telnet if&lt;br /&gt;
Campbell::Comm were to be rewritten.  Both provide the key functionality&lt;br /&gt;
of being able to wait for and selectivly match on responses from the&lt;br /&gt;
remote system.&lt;br /&gt;
&lt;br /&gt;
Due to the specific need to communicate with dataloggers via FreeWave &lt;br /&gt;
radios, the Campbell::Comm module was written with this capability perhaps&lt;br /&gt;
too implicitly.  A rewrite (anticipated) should remove any code not &lt;br /&gt;
directly concerned with the Campbell dataloggers.&lt;br /&gt;
&lt;br /&gt;
==querylogger.pl==&lt;br /&gt;
This perl script was written to exercise and test the Campbell::Comm&lt;/div&gt;</summary>
		<author><name>127.0.0.1</name></author>
		
	</entry>
	<entry>
		<id>http://ocotal.iarc.uaf.edu/index.php?title=Campbell::Comm&amp;diff=367</id>
		<title>Campbell::Comm</title>
		<link rel="alternate" type="text/html" href="http://ocotal.iarc.uaf.edu/index.php?title=Campbell::Comm&amp;diff=367"/>
		<updated>2007-07-06T21:30:32Z</updated>

		<summary type="html">&lt;p&gt;127.0.0.1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Campbell Scientific's CR10 family of dataloggers has been heavily used by WERC &lt;br /&gt;
and many other research groups for years.  Though now superseded by the CR1000&lt;br /&gt;
line of loggers, the CR10 line will likely be in service for years to come.&lt;br /&gt;
&lt;br /&gt;
The CR10 loggers were provided with complete documentation, both for developing&lt;br /&gt;
the datalogging programs themselves and for interfacing with other systems via&lt;br /&gt;
serial communications.  At WERC, we used this documentation to develop code in&lt;br /&gt;
the Perl programming language for ''talking to'' these datalogging systems, with&lt;br /&gt;
connections via serial radios (FreeWave) and the Internet.&lt;br /&gt;
&lt;br /&gt;
Note that Campbell provides the LoggerNet (formerly PC208 and other)&lt;br /&gt;
programs to interface dataloggers to PCs; WERC's Campbell::Comm and related &lt;br /&gt;
programs serve a more limited function than LoggerNet/PC208, being primarily &lt;br /&gt;
concerned with reliably downloading data and checking/setting the time.&lt;br /&gt;
&lt;br /&gt;
WERC's code is posted online at http://www.uaf.edu/water/staff/irving/csi-code/,&lt;br /&gt;
including a [http://www.uaf.edu/water/staff/irving/csi-code/readme README] file.&lt;br /&gt;
This system has been in use for several years, downloading data from up to 50 &lt;br /&gt;
remote loggers hourly in several different radio networks.&lt;br /&gt;
&lt;br /&gt;
This code has not been packaged for distribution, or automatic&lt;br /&gt;
installation, but it is intended to be available under the GNU Public&lt;br /&gt;
License (GPL).&lt;br /&gt;
&lt;br /&gt;
Technical descriptions of the primary components follow...&lt;br /&gt;
&lt;br /&gt;
Note that this Perl code has been written, tested, and run only on Linux&lt;br /&gt;
computers; Perl itself is very portable across platforms, but porting &lt;br /&gt;
problems (e.g,. to Windows OS family) might be encountered in such areas&lt;br /&gt;
as process management (fork, exec), ''alarm'' timing, and possibly others.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Campbell/Comm.pm==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This module becomes part of a Perl program via the '''use''' or '''require'''&lt;br /&gt;
keywords.   It provides the machinery to connect and send/receive commands&lt;br /&gt;
to/from a remote datalogger using Perl's object-oriented programming&lt;br /&gt;
methodology.  Individual ''methods'' are provided corresponding to some/most&lt;br /&gt;
of the ''telecommunications'' commands documented in the Campbell Scientific&lt;br /&gt;
CR10 family manuals.&lt;br /&gt;
&lt;br /&gt;
Another Perl module is needed in order to interact with remote dataloggers,&lt;br /&gt;
and that is Net::Telnet, which is included in the standard Perl distribution.&lt;br /&gt;
This module allows automating the telnet protocol, but boils down to being&lt;br /&gt;
able to send commands to the remote system and then wait for and handle &lt;br /&gt;
responses -- or no response, if that's necessary.&lt;br /&gt;
&lt;br /&gt;
Besides the nominal TCP/IP connections, Net::Telnet is capable of supporting&lt;br /&gt;
interfaces using a direct serial or modem connection.  This usage is &lt;br /&gt;
implemented in the (or various...) open() methods.&lt;br /&gt;
&lt;br /&gt;
A ''bug'' in Net::Telnet (this is my view; it may be considered a ''feature'' &lt;br /&gt;
by the authors...) requires a patch; this should be represented in the &lt;br /&gt;
Net::Telnet version included in the above tree.  Specifically, Net::Telnet&lt;br /&gt;
goes out of its way to handle ''timeouts'' using ''wall'' time (i.e., absolute&lt;br /&gt;
time as measured on a wall clock) rather than ''relative'' inactivity time &lt;br /&gt;
as used in the underlying select() system function.  In our case the latter&lt;br /&gt;
form is required due to the many levels and sources of latency in the &lt;br /&gt;
communication system.  &lt;br /&gt;
&lt;br /&gt;
The Perl Expect module might provide a good alternative to Net::Telnet if&lt;br /&gt;
Campbell::Comm were to be rewritten.  Both provide the key functionality&lt;br /&gt;
of being able to wait for and selectivly match on responses from the&lt;br /&gt;
remote system.&lt;br /&gt;
&lt;br /&gt;
Due to the specific need to communicate with dataloggers via FreeWave &lt;br /&gt;
radios, the Campbell::Comm module was written with this capability perhaps&lt;br /&gt;
too implicitly.  A rewrite (anticipated) should remove any code not &lt;br /&gt;
directly concerned with the Campbell dataloggers.&lt;br /&gt;
&lt;br /&gt;
==querylogger.pl==&lt;br /&gt;
This perl script was written to exercise and test the Campbell::Comm &lt;br /&gt;
module, but may be useful in its own right as a way to interface with&lt;/div&gt;</summary>
		<author><name>127.0.0.1</name></author>
		
	</entry>
	<entry>
		<id>http://ocotal.iarc.uaf.edu/index.php?title=Campbell::Comm&amp;diff=366</id>
		<title>Campbell::Comm</title>
		<link rel="alternate" type="text/html" href="http://ocotal.iarc.uaf.edu/index.php?title=Campbell::Comm&amp;diff=366"/>
		<updated>2007-07-06T20:32:32Z</updated>

		<summary type="html">&lt;p&gt;127.0.0.1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Campbell Scientific's CR10 family of dataloggers has been heavily used by WERC &lt;br /&gt;
and many other research groups for years.  Though now superseded by the CR1000&lt;br /&gt;
line of loggers, the CR10 line will likely be in service for years to come.&lt;br /&gt;
&lt;br /&gt;
The CR10 loggers were provided with complete documentation, both for developing&lt;br /&gt;
the datalogging programs themselves and for interfacing with other systems via&lt;br /&gt;
serial communications.  At WERC, we used this documentation to develop code in&lt;br /&gt;
the Perl programming language for ''talking to'' these datalogging systems, with&lt;br /&gt;
connections via serial radios (FreeWave) and the Internet.&lt;br /&gt;
&lt;br /&gt;
Note that Campbell provides the LoggerNet (formerly PC208 and other)&lt;br /&gt;
programs to interface dataloggers to PCs; WERC's Campbell::Comm and related &lt;br /&gt;
programs serve a more limited function than LoggerNet/PC208, being primarily &lt;br /&gt;
concerned with reliably downloading data and checking/setting the time.&lt;br /&gt;
&lt;br /&gt;
WERC's code is posted online at http://www.uaf.edu/water/staff/irving/csi-code/,&lt;br /&gt;
including a [http://www.uaf.edu/water/staff/irving/csi-code/readme README] file.&lt;br /&gt;
This system has been in use for several years, downloading data from up to 50 &lt;br /&gt;
remote loggers hourly in several different radio networks.&lt;br /&gt;
&lt;br /&gt;
This code has not been packaged for distribution, or automatic&lt;br /&gt;
installation, but it is intended to be available under the GNU Public&lt;br /&gt;
License (GPL).&lt;br /&gt;
&lt;br /&gt;
Technical descriptions of the primary components follow...&lt;br /&gt;
&lt;br /&gt;
Note that this Perl code has been written, tested, and run only on Linux&lt;br /&gt;
computers; Perl itself is very portable across platforms, but porting &lt;br /&gt;
problems (e.g,. to Windows OS family) might be encountered in such areas&lt;br /&gt;
as process management (fork, exec), ''alarm'' timing, and possibly others.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Campbell/Comm.pm==&lt;br /&gt;
&lt;br /&gt;
This module becomes part of a Perl program via the '''use''' or '''require'''&lt;br /&gt;
keywords.   It provides the machinery to connect and send/receive commands&lt;br /&gt;
to/from a remote datalogger using Perl's object-oriented programming&lt;br /&gt;
methodology.  Individual ''methods'' are provided corresponding to some/most&lt;br /&gt;
of the ''telecommunications'' commands documented in the Campbell Scientific&lt;br /&gt;
CR10 family manuals.&lt;br /&gt;
&lt;br /&gt;
Another Perl module is needed in order to interact with remote dataloggers,&lt;br /&gt;
and that is Net::Telnet, which is included in the standard Perl distribution.&lt;br /&gt;
This module allows automating the telnet protocol, but boils down to being&lt;br /&gt;
able to send commands to the remote system and then wait for and handle &lt;br /&gt;
responses -- or no response, if that's necessary.&lt;br /&gt;
&lt;br /&gt;
Besides the nominal TCP/IP connections, Net::Telnet is capable of supporting&lt;br /&gt;
interfaces using a direct serial or modem connection.  This usage is &lt;br /&gt;
implemented in the (or various...) open() methods.&lt;br /&gt;
&lt;br /&gt;
A ''bug'' in Net::Telnet (this is my view; it may be considered a ''feature'' &lt;br /&gt;
by the authors...) requires a patch; this should be represented in the &lt;br /&gt;
Net::Telnet version included in the above tree.  Specifically, Net::Telnet&lt;br /&gt;
goes out of its way to handle ''timeouts'' using ''wall'' time (i.e., absolute&lt;br /&gt;
time as measured on a wall clock) rather than ''relative'' inactivity time &lt;br /&gt;
as used in the underlying select() system function.  In our case the latter&lt;br /&gt;
form is required due to the many levels and sources of latency in the &lt;br /&gt;
communication system.  &lt;br /&gt;
&lt;br /&gt;
The Perl Expect module might provide a good alternative to Net::Telnet if&lt;br /&gt;
Campbell::Comm were to be rewritten.  Both provide the key functionality&lt;br /&gt;
of being able to wait for and selectivly match on responses from the&lt;br /&gt;
remote system.&lt;br /&gt;
&lt;br /&gt;
Due to the specific need to communicate with dataloggers via FreeWave &lt;br /&gt;
radios, the Campbell::Comm module was written with this capability perhaps&lt;br /&gt;
too implicitly.  A rewrite (anticipated) should remove any code not &lt;br /&gt;
directly concerned with the Campbell dataloggers.&lt;br /&gt;
&lt;br /&gt;
==querylogger.pl==&lt;br /&gt;
This perl script was written to exercise and test the Campbell::Comm &lt;br /&gt;
module, but may be useful in its own right as a way to interface with&lt;br /&gt;
dataloggers in batch (i.e., non-interactive) form.  Each method in the&lt;br /&gt;
Campbell::Comm module should be represented by a querylogger command&lt;br /&gt;
as specified on the command line.&lt;br /&gt;
&lt;br /&gt;
The interface is described if run with no arguments:&lt;br /&gt;
&lt;br /&gt;
    $ querylogger   &lt;br /&gt;
    syntax: &amp;quot;$ /home/ken/bin/querylogger OPTIONS SITE COMMAND ...&lt;br /&gt;
    where OPTIONS are&lt;br /&gt;
        --quiet      suppress output to STDOUT&lt;br /&gt;
        -q           same as above&lt;br /&gt;
        --logfile=f  print everything to file f&lt;br /&gt;
        -l f         same as above&lt;br /&gt;
        --comm=s     use rc file section Campbell::Comm-s, or&lt;br /&gt;
        -c s         use rc file section Campbell::Comm-s&lt;br /&gt;
        --identify   identify site in output (default)&lt;br /&gt;
        --noidentify don't identify site in output&lt;br /&gt;
    where SITE is one of: site, slope_mtn,&lt;br /&gt;
    and COMMANDs may include:&lt;br /&gt;
        status       list status strings&lt;br /&gt;
        time         show time (setting not yet supported)&lt;br /&gt;
        backup=n     n=number of output arrays to spew (no limit)&lt;br /&gt;
        MPTR=loc     loc=output storage location (no limit)&lt;br /&gt;
        data=n       n=number of data records to get&lt;br /&gt;
        binary=n     n=number of data locations to get&lt;br /&gt;
        program      print all logger programming &lt;br /&gt;
        flags        optionally toggle specified flag(s), show flags&lt;br /&gt;
        ports        show ports (toggle not yet supported)&lt;br /&gt;
        memory       show mode A memory settings&lt;br /&gt;
        signatures   show mode B signature settings&lt;br /&gt;
        input=n[,m][,r-s]  show input storage locations&lt;br /&gt;
        capture=[f]  end previous capture, capture output to file f&lt;br /&gt;
        get_time_flags experimental using F command&lt;br /&gt;
&lt;br /&gt;
The querylogger (and loggerdata) scripts assume a specific system &lt;br /&gt;
configuration of sites and ''rc'' files; see below...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==loggerdata.pl==&lt;br /&gt;
&lt;br /&gt;
The '''loggerdata.pl''' script is the workhorse of WERC's data &lt;br /&gt;
gathering system from CR10X loggers, and besides the '''querylogger.pl'''&lt;br /&gt;
script (see above) is the only script we've written around the Campbell::Comm&lt;br /&gt;
module.&lt;br /&gt;
&lt;br /&gt;
See below for the [[#data site architecture]] assumed by the system.&lt;br /&gt;
&lt;br /&gt;
Like [[#querylogger.pl]], '''loggerdata.pl''' runs in&lt;br /&gt;
a non-interactive or ''batch'' mode.  But where the former program is &lt;br /&gt;
driven according to the set of commands provided on the command line, the&lt;br /&gt;
latter is hard-wired to follow a set sequence of commands.&lt;br /&gt;
&lt;br /&gt;
As with any computer program, the details of what this program does are&lt;br /&gt;
spelled out in its source code.  The following steps are from memory, and&lt;br /&gt;
should be confirmed...&lt;br /&gt;
&lt;br /&gt;
* a connection is established to the datalogger&lt;br /&gt;
* several ''escape characters'' are sent in case the datalogger has been left in an edit or other state&lt;br /&gt;
* the datalogger command prompt, '''&amp;quot;*&amp;quot;''' is obtained&lt;br /&gt;
* the &amp;quot;next data memory location&amp;quot; ('''DSP''') is retrieved from the site state on disk (not on the logger)&lt;br /&gt;
* the datalogger's current data memory position ('''MPTR''') is obtained&lt;br /&gt;
* the '''G''' logger telecommunications command is used to set the '''MPTR''' to the last '''DSP''' value&lt;br /&gt;
* data is requested in either ASCII (the '''D''' command) or binary (the '''F''' command) mode&lt;br /&gt;
* incoming data is integrity-checked using checksums or ''signatures''&lt;br /&gt;
* confirmed-good data is stored on disk&lt;br /&gt;
* update the stored '''DSP''' state information&lt;br /&gt;
* repeat the above data query steps until:&lt;br /&gt;
** the '''DSP''' value reaches the logger's '''MPTR'''&lt;br /&gt;
** the query times out&lt;br /&gt;
** the allowed processing time for the session elapses&lt;br /&gt;
* query the datalogger's time&lt;br /&gt;
** if the logger time is off by more than a specified amount (e.g., 10 seconds), set the time&lt;br /&gt;
* if the logger program hasn't been downloaded for greater than a specified time (e.g., 10 days), download the program&lt;br /&gt;
** store the logger program to a '''version control system''' (RCS)&lt;br /&gt;
* query and store the datalogger ''flags'' settings&lt;br /&gt;
* disconnect from the remote logger&lt;br /&gt;
* compose a ''log message'' summarizing the session&lt;br /&gt;
** print the log message if the session has been run by a user&lt;br /&gt;
** append the log message to the site log file&lt;br /&gt;
&lt;br /&gt;
In summary, the '''loggerdata.pl''' program:&lt;br /&gt;
&lt;br /&gt;
* tries to download data from the last available location&lt;br /&gt;
** all data retrieved is integrity-checked, then stored&lt;br /&gt;
* checks (&amp;amp; maybe sets) the time&lt;br /&gt;
* maybe downloads the datalogger's current program&lt;br /&gt;
&lt;br /&gt;
In general, we make every attempt to ensure that data is downloaded as&lt;br /&gt;
it exists on the datalogger, and safely stored on the data-gathering &lt;br /&gt;
computer.  Data is not skipped; in particular, if a remote site has &amp;quot;fallen &lt;br /&gt;
behind&amp;quot;, the program will patiently and persistently try to bring the &lt;br /&gt;
local (on-computer) data store in line with the remote logger.&lt;br /&gt;
&lt;br /&gt;
The datalogger's time setting is of particular importance mainly so that&lt;br /&gt;
connection times can be kept ''in synch'', assuming that the radios are&lt;br /&gt;
powered on only at certain times.  Of course, another benefit in checking/setting&lt;br /&gt;
the logger's time is that the stored data timestamps are meaningful in an&lt;br /&gt;
absolute sense -- but note that this could also be achieved by only checking &lt;br /&gt;
(and not setting) the time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==data site architecture==&lt;br /&gt;
&lt;br /&gt;
THIS IS A STUB .... NEEDS WORK!&lt;/div&gt;</summary>
		<author><name>127.0.0.1</name></author>
		
	</entry>
	<entry>
		<id>http://ocotal.iarc.uaf.edu/index.php?title=Campbell::Comm&amp;diff=365</id>
		<title>Campbell::Comm</title>
		<link rel="alternate" type="text/html" href="http://ocotal.iarc.uaf.edu/index.php?title=Campbell::Comm&amp;diff=365"/>
		<updated>2007-07-06T20:14:53Z</updated>

		<summary type="html">&lt;p&gt;127.0.0.1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Campbell Scientific's CR10 family of dataloggers has been heavily used by WERC &lt;br /&gt;
and many other research groups for years.  Though now superseded by the CR1000&lt;br /&gt;
line of loggers, the CR10 line will likely be in service for years to come.&lt;br /&gt;
&lt;br /&gt;
The CR10 loggers were provided with complete documentation, both for developing&lt;br /&gt;
the datalogging programs themselves and for interfacing with other systems via&lt;br /&gt;
serial communications.  At WERC, we used this documentation to develop code in&lt;br /&gt;
the Perl programming language for ''talking to'' these datalogging systems, with&lt;br /&gt;
connections via serial radios (FreeWave) and the Internet.&lt;br /&gt;
&lt;br /&gt;
Note that Campbell provides the LoggerNet (formerly PC208 and other)&lt;br /&gt;
programs to interface dataloggers to PCs; WERC's Campbell::Comm and related &lt;br /&gt;
programs serve a more limited function than LoggerNet/PC208, being primarily &lt;br /&gt;
concerned with reliably downloading data and checking/setting the time.&lt;br /&gt;
&lt;br /&gt;
WERC's code is posted online at http://www.uaf.edu/water/staff/irving/csi-code/,&lt;br /&gt;
including a [http://www.uaf.edu/water/staff/irving/csi-code/readme README] file.&lt;br /&gt;
This system has been in use for several years, downloading data from up to 50 &lt;br /&gt;
remote loggers hourly in several different radio networks.&lt;br /&gt;
&lt;br /&gt;
This code has not been packaged for distribution, or automatic&lt;br /&gt;
installation, but it is intended to be available under the GNU Public&lt;br /&gt;
License (GPL).&lt;br /&gt;
&lt;br /&gt;
Technical descriptions of the primary components follow...&lt;br /&gt;
&lt;br /&gt;
Note that this Perl code has been written, tested, and run only on Linux&lt;br /&gt;
computers; Perl itself is very portable across platforms, but porting &lt;br /&gt;
problems (e.g,. to Windows OS family) might be encountered in such areas&lt;br /&gt;
as process management (fork, exec), ''alarm'' timing, and possibly others.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Campbell/Comm.pm==&lt;br /&gt;
&lt;br /&gt;
This module becomes part of a Perl program via the '''use''' or '''require'''&lt;br /&gt;
keywords.   It provides the machinery to connect and send/receive commands&lt;br /&gt;
to/from a remote datalogger using Perl's object-oriented programming&lt;br /&gt;
methodology.  Individual ''methods'' are provided corresponding to some/most&lt;br /&gt;
of the ''telecommunications'' commands documented in the Campbell Scientific&lt;br /&gt;
CR10 family manuals.&lt;br /&gt;
&lt;br /&gt;
Another Perl module is needed in order to interact with remote dataloggers,&lt;br /&gt;
and that is Net::Telnet, which is included in the standard Perl distribution.&lt;br /&gt;
This module allows automating the telnet protocol, but boils down to being&lt;br /&gt;
able to send commands to the remote system and then wait for and handle &lt;br /&gt;
responses -- or no response, if that's necessary.&lt;br /&gt;
&lt;br /&gt;
Besides the nominal TCP/IP connections, Net::Telnet is capable of supporting&lt;br /&gt;
interfaces using a direct serial or modem connection.  This usage is &lt;br /&gt;
implemented in the (or various...) open() methods.&lt;br /&gt;
&lt;br /&gt;
A ''bug'' in Net::Telnet (this is my view; it may be considered a ''feature'' &lt;br /&gt;
by the authors...) requires a patch; this should be represented in the &lt;br /&gt;
Net::Telnet version included in the above tree.  Specifically, Net::Telnet&lt;br /&gt;
goes out of its way to handle ''timeouts'' using ''wall'' time (i.e., absolute&lt;br /&gt;
time as measured on a wall clock) rather than ''relative'' inactivity time &lt;br /&gt;
as used in the underlying select() system function.  In our case the latter&lt;br /&gt;
form is required due to the many levels and sources of latency in the &lt;br /&gt;
communication system.  &lt;br /&gt;
&lt;br /&gt;
The Perl Expect module might provide a good alternative to Net::Telnet if&lt;br /&gt;
Campbell::Comm were to be rewritten.  Both provide the key functionality&lt;br /&gt;
of being able to wait for and selectivly match on responses from the&lt;br /&gt;
remote system.&lt;br /&gt;
&lt;br /&gt;
Due to the specific need to communicate with dataloggers via FreeWave &lt;br /&gt;
radios, the Campbell::Comm module was written with this capability perhaps&lt;br /&gt;
too implicitly.  A rewrite (anticipated) should remove any code not &lt;br /&gt;
directly concerned with the Campbell dataloggers.&lt;br /&gt;
&lt;br /&gt;
==querylogger.pl==&lt;br /&gt;
This perl script was written to exercise and test the Campbell::Comm &lt;br /&gt;
module, but may be useful in its own right as a way to interface with&lt;br /&gt;
dataloggers in batch (i.e., non-interactive) form.  Each method in the&lt;br /&gt;
Campbell::Comm module should be represented by a querylogger command&lt;br /&gt;
as specified on the command line.&lt;br /&gt;
&lt;br /&gt;
The interface is described if run with no arguments:&lt;br /&gt;
&lt;br /&gt;
    $ querylogger   &lt;br /&gt;
    syntax: &amp;quot;$ /home/ken/bin/querylogger OPTIONS SITE COMMAND ...&lt;br /&gt;
    where OPTIONS are&lt;br /&gt;
        --quiet      suppress output to STDOUT&lt;br /&gt;
        -q           same as above&lt;br /&gt;
        --logfile=f  print everything to file f&lt;br /&gt;
        -l f         same as above&lt;br /&gt;
        --comm=s     use rc file section Campbell::Comm-s, or&lt;br /&gt;
        -c s         use rc file section Campbell::Comm-s&lt;br /&gt;
        --identify   identify site in output (default)&lt;br /&gt;
        --noidentify don't identify site in output&lt;br /&gt;
    where SITE is one of: site, slope_mtn,&lt;br /&gt;
    and COMMANDs may include:&lt;br /&gt;
        status       list status strings&lt;br /&gt;
        time         show time (setting not yet supported)&lt;br /&gt;
        backup=n     n=number of output arrays to spew (no limit)&lt;br /&gt;
        MPTR=loc     loc=output storage location (no limit)&lt;br /&gt;
        data=n       n=number of data records to get&lt;br /&gt;
        binary=n     n=number of data locations to get&lt;br /&gt;
        program      print all logger programming &lt;br /&gt;
        flags        optionally toggle specified flag(s), show flags&lt;br /&gt;
        ports        show ports (toggle not yet supported)&lt;br /&gt;
        memory       show mode A memory settings&lt;br /&gt;
        signatures   show mode B signature settings&lt;br /&gt;
        input=n[,m][,r-s]  show input storage locations&lt;br /&gt;
        capture=[f]  end previous capture, capture output to file f&lt;br /&gt;
        get_time_flags experimental using F command&lt;br /&gt;
&lt;br /&gt;
The querylogger (and loggerdata) scripts assume a specific system &lt;br /&gt;
configuration of sites and ''rc'' files; see below...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==loggerdata.pl==&lt;br /&gt;
&lt;br /&gt;
The '''loggerdata.pl''' script is the workhorse of WERC's data &lt;br /&gt;
gathering system from CR10X loggers, and besides the '''querylogger.pl'''&lt;br /&gt;
script (see above) is the only script we've written around the Campbell::Comm&lt;br /&gt;
module.&lt;br /&gt;
&lt;br /&gt;
See below for the [[#data site architecture]] assumed by the system.&lt;br /&gt;
&lt;br /&gt;
Like [[#querylogger.pl]], '''loggerdata.pl''' runs in&lt;br /&gt;
a non-interactive or ''batch'' mode.  But where the former program is &lt;br /&gt;
driven according to the set of commands provided on the command line, the&lt;br /&gt;
latter is hard-wired to follow a set sequence of commands.&lt;br /&gt;
&lt;br /&gt;
As with any computer program, the details of what this program does are&lt;br /&gt;
spelled out in its source code.  The following steps are from memory, and&lt;br /&gt;
should be confirmed...&lt;br /&gt;
&lt;br /&gt;
* a connection is established to the datalogger&lt;br /&gt;
* several ''escape characters'' are sent in case the datalogger has been left in an edit or other state&lt;br /&gt;
* the datalogger command prompt, '''&amp;quot;*&amp;quot;''' is obtained&lt;br /&gt;
* the &amp;quot;next data memory location&amp;quot; ('''DSP''') is retrieved from the site state on disk (not on the logger)&lt;br /&gt;
* the datalogger's current data memory position ('''MPTR''') is obtained&lt;br /&gt;
* the '''G''' logger telecommunications command is used to set the '''MPTR''' to the last '''DSP''' value&lt;br /&gt;
* data is requested in either ASCII (the '''D''' command) or binary (the '''F''' command) mode&lt;br /&gt;
* incoming data is integrity-checked using checksums or ''signatures''&lt;br /&gt;
* confirmed-good data is stored on disk&lt;br /&gt;
* update the stored '''DSP''' state information&lt;br /&gt;
* repeat the above data query steps until:&lt;br /&gt;
** the '''DSP''' value reaches the logger's '''MPTR'''&lt;br /&gt;
** the query times out&lt;br /&gt;
** the allowed processing time for the session elapses&lt;br /&gt;
* query the datalogger's time&lt;br /&gt;
** if the logger time is off by more than a specified amount (e.g., 10 seconds), set the time&lt;br /&gt;
* if the logger program hasn't been downloaded for greater than a specified time (e.g., 10 days), download the program&lt;br /&gt;
** store the logger program to a '''version control system''' (RCS)&lt;br /&gt;
* query and store the datalogger ''flags'' settings&lt;br /&gt;
* disconnect from the remote logger&lt;br /&gt;
* compose a ''log message'' summarizing the session&lt;br /&gt;
** print the log message if the session has been run by a user&lt;br /&gt;
** append the log message to the site log file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==data site architecture==&lt;br /&gt;
&lt;br /&gt;
THIS IS A STUB .... NEEDS WORK!&lt;/div&gt;</summary>
		<author><name>127.0.0.1</name></author>
		
	</entry>
	<entry>
		<id>http://ocotal.iarc.uaf.edu/index.php?title=Campbell::Comm&amp;diff=364</id>
		<title>Campbell::Comm</title>
		<link rel="alternate" type="text/html" href="http://ocotal.iarc.uaf.edu/index.php?title=Campbell::Comm&amp;diff=364"/>
		<updated>2007-07-06T20:13:33Z</updated>

		<summary type="html">&lt;p&gt;127.0.0.1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Campbell Scientific's CR10 family of dataloggers has been heavily used by WERC &lt;br /&gt;
and many other research groups for years.  Though now superseded by the CR1000&lt;br /&gt;
line of loggers, the CR10 line will likely be in service for years to come.&lt;br /&gt;
&lt;br /&gt;
The CR10 loggers were provided with complete documentation, both for developing&lt;br /&gt;
the datalogging programs themselves and for interfacing with other systems via&lt;br /&gt;
serial communications.  At WERC, we used this documentation to develop code in&lt;br /&gt;
the Perl programming language for ''talking to'' these datalogging systems, with&lt;br /&gt;
connections via serial radios (FreeWave) and the Internet.&lt;br /&gt;
&lt;br /&gt;
Note that Campbell provides the LoggerNet (formerly PC208 and other)&lt;br /&gt;
programs to interface dataloggers to PCs; WERC's Campbell::Comm and related &lt;br /&gt;
programs serve a more limited function than LoggerNet/PC208, being primarily &lt;br /&gt;
concerned with reliably downloading data and checking/setting the time.&lt;br /&gt;
&lt;br /&gt;
WERC's code is posted online at http://www.uaf.edu/water/staff/irving/csi-code/,&lt;br /&gt;
including a [http://www.uaf.edu/water/staff/irving/csi-code/readme README] file.&lt;br /&gt;
This system has been in use for several years, downloading data from up to 50 &lt;br /&gt;
remote loggers hourly in several different radio networks.&lt;br /&gt;
&lt;br /&gt;
This code has not been packaged for distribution, or automatic&lt;br /&gt;
installation, but it is intended to be available under the GNU Public&lt;br /&gt;
License (GPL).&lt;br /&gt;
&lt;br /&gt;
Technical descriptions of the primary components follow...&lt;br /&gt;
&lt;br /&gt;
Note that this Perl code has been written, tested, and run only on Linux&lt;br /&gt;
computers; Perl itself is very portable across platforms, but porting &lt;br /&gt;
problems (e.g,. to Windows OS family) might be encountered in such areas&lt;br /&gt;
as process management (fork, exec), ''alarm'' timing, and possibly others.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Campbell/Comm.pm==&lt;br /&gt;
&lt;br /&gt;
This module becomes part of a Perl program via the '''use''' or '''require'''&lt;br /&gt;
keywords.   It provides the machinery to connect and send/receive commands&lt;br /&gt;
to/from a remote datalogger using Perl's object-oriented programming&lt;br /&gt;
methodology.  Individual ''methods'' are provided corresponding to some/most&lt;br /&gt;
of the ''telecommunications'' commands documented in the Campbell Scientific&lt;br /&gt;
CR10 family manuals.&lt;br /&gt;
&lt;br /&gt;
Another Perl module is needed in order to interact with remote dataloggers,&lt;br /&gt;
and that is Net::Telnet, which is included in the standard Perl distribution.&lt;br /&gt;
This module allows automating the telnet protocol, but boils down to being&lt;br /&gt;
able to send commands to the remote system and then wait for and handle &lt;br /&gt;
responses -- or no response, if that's necessary.&lt;br /&gt;
&lt;br /&gt;
Besides the nominal TCP/IP connections, Net::Telnet is capable of supporting&lt;br /&gt;
interfaces using a direct serial or modem connection.  This usage is &lt;br /&gt;
implemented in the (or various...) open() methods.&lt;br /&gt;
&lt;br /&gt;
A ''bug'' in Net::Telnet (this is my view; it may be considered a ''feature'' &lt;br /&gt;
by the authors...) requires a patch; this should be represented in the &lt;br /&gt;
Net::Telnet version included in the above tree.  Specifically, Net::Telnet&lt;br /&gt;
goes out of its way to handle ''timeouts'' using ''wall'' time (i.e., absolute&lt;br /&gt;
time as measured on a wall clock) rather than ''relative'' inactivity time &lt;br /&gt;
as used in the underlying select() system function.  In our case the latter&lt;br /&gt;
form is required due to the many levels and sources of latency in the &lt;br /&gt;
communication system.  &lt;br /&gt;
&lt;br /&gt;
The Perl Expect module might provide a good alternative to Net::Telnet if&lt;br /&gt;
Campbell::Comm were to be rewritten.  Both provide the key functionality&lt;br /&gt;
of being able to wait for and selectivly match on responses from the&lt;br /&gt;
remote system.&lt;br /&gt;
&lt;br /&gt;
Due to the specific need to communicate with dataloggers via FreeWave &lt;br /&gt;
radios, the Campbell::Comm module was written with this capability perhaps&lt;br /&gt;
too implicitly.  A rewrite (anticipated) should remove any code not &lt;br /&gt;
directly concerned with the Campbell dataloggers.&lt;br /&gt;
&lt;br /&gt;
==querylogger.pl==&lt;br /&gt;
&lt;br /&gt;
This perl script was written to exercise and test the Campbell::Comm &lt;br /&gt;
module, but may be useful in its own right as a way to interface with&lt;br /&gt;
dataloggers in batch (i.e., non-interactive) form.  Each method in the&lt;br /&gt;
Campbell::Comm module should be represented by a querylogger command&lt;br /&gt;
as specified on the command line.&lt;br /&gt;
&lt;br /&gt;
The interface is described if run with no arguments:&lt;br /&gt;
&lt;br /&gt;
    $ querylogger   &lt;br /&gt;
    syntax: &amp;quot;$ /home/ken/bin/querylogger OPTIONS SITE COMMAND ...&lt;br /&gt;
    where OPTIONS are&lt;br /&gt;
        --quiet      suppress output to STDOUT&lt;br /&gt;
        -q           same as above&lt;br /&gt;
        --logfile=f  print everything to file f&lt;br /&gt;
        -l f         same as above&lt;br /&gt;
        --comm=s     use rc file section Campbell::Comm-s, or&lt;br /&gt;
        -c s         use rc file section Campbell::Comm-s&lt;br /&gt;
        --identify   identify site in output (default)&lt;br /&gt;
        --noidentify don't identify site in output&lt;br /&gt;
    where SITE is one of: site, slope_mtn,&lt;br /&gt;
    and COMMANDs may include:&lt;br /&gt;
        status       list status strings&lt;br /&gt;
        time         show time (setting not yet supported)&lt;br /&gt;
        backup=n     n=number of output arrays to spew (no limit)&lt;br /&gt;
        MPTR=loc     loc=output storage location (no limit)&lt;br /&gt;
        data=n       n=number of data records to get&lt;br /&gt;
        binary=n     n=number of data locations to get&lt;br /&gt;
        program      print all logger programming &lt;br /&gt;
        flags        optionally toggle specified flag(s), show flags&lt;br /&gt;
        ports        show ports (toggle not yet supported)&lt;br /&gt;
        memory       show mode A memory settings&lt;br /&gt;
        signatures   show mode B signature settings&lt;br /&gt;
        input=n[,m][,r-s]  show input storage locations&lt;br /&gt;
        capture=[f]  end previous capture, capture output to file f&lt;br /&gt;
        get_time_flags experimental using F command&lt;br /&gt;
&lt;br /&gt;
The querylogger (and loggerdata) scripts assume a specific system &lt;br /&gt;
configuration of sites and ''rc'' files; see below...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==loggerdata.pl==&lt;br /&gt;
&lt;br /&gt;
The '''loggerdata.pl''' script is the workhorse of WERC's data &lt;br /&gt;
gathering system from CR10X loggers, and besides the '''querylogger.pl'''&lt;br /&gt;
script (see above) is the only script we've written around the Campbell::Comm&lt;br /&gt;
module.&lt;br /&gt;
&lt;br /&gt;
See below for the [[data site architecture]] assumed by the system.&lt;br /&gt;
&lt;br /&gt;
Like [[#querylogger.pl]], '''loggerdata.pl''' runs in&lt;br /&gt;
a non-interactive or ''batch'' mode.  But where the former program is &lt;br /&gt;
driven according to the set of commands provided on the command line, the&lt;br /&gt;
latter is hard-wired to follow a set sequence of commands.&lt;br /&gt;
&lt;br /&gt;
As with any computer program, the details of what this program does are&lt;br /&gt;
spelled out in its source code.  The following steps are from memory, and&lt;br /&gt;
should be confirmed...&lt;br /&gt;
&lt;br /&gt;
* a connection is established to the datalogger&lt;br /&gt;
* several ''escape characters'' are sent in case the datalogger has been left in an edit or other state&lt;br /&gt;
* the datalogger command prompt, '''&amp;quot;*&amp;quot;''' is obtained&lt;br /&gt;
* the &amp;quot;next data memory location&amp;quot; ('''DSP''') is retrieved from the site state on disk (not on the logger)&lt;br /&gt;
* the datalogger's current data memory position ('''MPTR''') is obtained&lt;br /&gt;
* the '''G''' logger telecommunications command is used to set the '''MPTR''' to the last '''DSP''' value&lt;br /&gt;
* data is requested in either ASCII (the '''D''' command) or binary (the '''F''' command) mode&lt;br /&gt;
* incoming data is integrity-checked using checksums or ''signatures''&lt;br /&gt;
* confirmed-good data is stored on disk&lt;br /&gt;
* update the stored '''DSP''' state information&lt;br /&gt;
* repeat the above data query steps until:&lt;br /&gt;
** the '''DSP''' value reaches the logger's '''MPTR'''&lt;br /&gt;
** the query times out&lt;br /&gt;
** the allowed processing time for the session elapses&lt;br /&gt;
* query the datalogger's time&lt;br /&gt;
** if the logger time is off by more than a specified amount (e.g., 10 seconds), set the time&lt;br /&gt;
* if the logger program hasn't been downloaded for greater than a specified time (e.g., 10 days), download the program&lt;br /&gt;
** store the logger program to a '''version control system''' (RCS)&lt;br /&gt;
* query and store the datalogger ''flags'' settings&lt;br /&gt;
* disconnect from the remote logger&lt;br /&gt;
* compose a ''log message'' summarizing the session&lt;br /&gt;
** print the log message if the session has been run by a user&lt;br /&gt;
** append the log message to the site log file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==data site architecture==&lt;br /&gt;
&lt;br /&gt;
THIS IS A STUB .... NEEDS WORK!&lt;/div&gt;</summary>
		<author><name>127.0.0.1</name></author>
		
	</entry>
	<entry>
		<id>http://ocotal.iarc.uaf.edu/index.php?title=Campbell::Comm&amp;diff=363</id>
		<title>Campbell::Comm</title>
		<link rel="alternate" type="text/html" href="http://ocotal.iarc.uaf.edu/index.php?title=Campbell::Comm&amp;diff=363"/>
		<updated>2007-07-06T20:12:31Z</updated>

		<summary type="html">&lt;p&gt;127.0.0.1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Campbell Scientific's CR10 family of dataloggers has been heavily used by WERC &lt;br /&gt;
and many other research groups for years.  Though now superseded by the CR1000&lt;br /&gt;
line of loggers, the CR10 line will likely be in service for years to come.&lt;br /&gt;
&lt;br /&gt;
The CR10 loggers were provided with complete documentation, both for developing&lt;br /&gt;
the datalogging programs themselves and for interfacing with other systems via&lt;br /&gt;
serial communications.  At WERC, we used this documentation to develop code in&lt;br /&gt;
the Perl programming language for ''talking to'' these datalogging systems, with&lt;br /&gt;
connections via serial radios (FreeWave) and the Internet.&lt;br /&gt;
&lt;br /&gt;
Note that Campbell provides the LoggerNet (formerly PC208 and other)&lt;br /&gt;
programs to interface dataloggers to PCs; WERC's Campbell::Comm and related &lt;br /&gt;
programs serve a more limited function than LoggerNet/PC208, being primarily &lt;br /&gt;
concerned with reliably downloading data and checking/setting the time.&lt;br /&gt;
&lt;br /&gt;
WERC's code is posted online at http://www.uaf.edu/water/staff/irving/csi-code/,&lt;br /&gt;
including a [http://www.uaf.edu/water/staff/irving/csi-code/readme README] file.&lt;br /&gt;
This system has been in use for several years, downloading data from up to 50 &lt;br /&gt;
remote loggers hourly in several different radio networks.&lt;br /&gt;
&lt;br /&gt;
This code has not been packaged for distribution, or automatic&lt;br /&gt;
installation, but it is intended to be available under the GNU Public&lt;br /&gt;
License (GPL).&lt;br /&gt;
&lt;br /&gt;
Technical descriptions of the primary components follow...&lt;br /&gt;
&lt;br /&gt;
Note that this Perl code has been written, tested, and run only on Linux&lt;br /&gt;
computers; Perl itself is very portable across platforms, but porting &lt;br /&gt;
problems (e.g,. to Windows OS family) might be encountered in such areas&lt;br /&gt;
as process management (fork, exec), ''alarm'' timing, and possibly others.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Campbell/Comm.pm==&lt;br /&gt;
&lt;br /&gt;
This module becomes part of a Perl program via the '''use''' or '''require'''&lt;br /&gt;
keywords.   It provides the machinery to connect and send/receive commands&lt;br /&gt;
to/from a remote datalogger using Perl's object-oriented programming&lt;br /&gt;
methodology.  Individual ''methods'' are provided corresponding to some/most&lt;br /&gt;
of the ''telecommunications'' commands documented in the Campbell Scientific&lt;br /&gt;
CR10 family manuals.&lt;br /&gt;
&lt;br /&gt;
Another Perl module is needed in order to interact with remote dataloggers,&lt;br /&gt;
and that is Net::Telnet, which is included in the standard Perl distribution.&lt;br /&gt;
This module allows automating the telnet protocol, but boils down to being&lt;br /&gt;
able to send commands to the remote system and then wait for and handle &lt;br /&gt;
responses -- or no response, if that's necessary.&lt;br /&gt;
&lt;br /&gt;
Besides the nominal TCP/IP connections, Net::Telnet is capable of supporting&lt;br /&gt;
interfaces using a direct serial or modem connection.  This usage is &lt;br /&gt;
implemented in the (or various...) open() methods.&lt;br /&gt;
&lt;br /&gt;
A ''bug'' in Net::Telnet (this is my view; it may be considered a ''feature'' &lt;br /&gt;
by the authors...) requires a patch; this should be represented in the &lt;br /&gt;
Net::Telnet version included in the above tree.  Specifically, Net::Telnet&lt;br /&gt;
goes out of its way to handle ''timeouts'' using ''wall'' time (i.e., absolute&lt;br /&gt;
time as measured on a wall clock) rather than ''relative'' inactivity time &lt;br /&gt;
as used in the underlying select() system function.  In our case the latter&lt;br /&gt;
form is required due to the many levels and sources of latency in the &lt;br /&gt;
communication system.  &lt;br /&gt;
&lt;br /&gt;
The Perl Expect module might provide a good alternative to Net::Telnet if&lt;br /&gt;
Campbell::Comm were to be rewritten.  Both provide the key functionality&lt;br /&gt;
of being able to wait for and selectivly match on responses from the&lt;br /&gt;
remote system.&lt;br /&gt;
&lt;br /&gt;
Due to the specific need to communicate with dataloggers via FreeWave &lt;br /&gt;
radios, the Campbell::Comm module was written with this capability perhaps&lt;br /&gt;
too implicitly.  A rewrite (anticipated) should remove any code not &lt;br /&gt;
directly concerned with the Campbell dataloggers.&lt;br /&gt;
&lt;br /&gt;
==querylogger.pl==&lt;br /&gt;
&lt;br /&gt;
This perl script was written to exercise and test the Campbell::Comm &lt;br /&gt;
module, but may be useful in its own right as a way to interface with&lt;br /&gt;
dataloggers in batch (i.e., non-interactive) form.  Each method in the&lt;br /&gt;
Campbell::Comm module should be represented by a querylogger command&lt;br /&gt;
as specified on the command line.&lt;br /&gt;
&lt;br /&gt;
The interface is described if run with no arguments:&lt;br /&gt;
&lt;br /&gt;
    $ querylogger   &lt;br /&gt;
    syntax: &amp;quot;$ /home/ken/bin/querylogger OPTIONS SITE COMMAND ...&lt;br /&gt;
    where OPTIONS are&lt;br /&gt;
        --quiet      suppress output to STDOUT&lt;br /&gt;
        -q           same as above&lt;br /&gt;
        --logfile=f  print everything to file f&lt;br /&gt;
        -l f         same as above&lt;br /&gt;
        --comm=s     use rc file section Campbell::Comm-s, or&lt;br /&gt;
        -c s         use rc file section Campbell::Comm-s&lt;br /&gt;
        --identify   identify site in output (default)&lt;br /&gt;
        --noidentify don't identify site in output&lt;br /&gt;
    where SITE is one of: site, slope_mtn,&lt;br /&gt;
    and COMMANDs may include:&lt;br /&gt;
        status       list status strings&lt;br /&gt;
        time         show time (setting not yet supported)&lt;br /&gt;
        backup=n     n=number of output arrays to spew (no limit)&lt;br /&gt;
        MPTR=loc     loc=output storage location (no limit)&lt;br /&gt;
        data=n       n=number of data records to get&lt;br /&gt;
        binary=n     n=number of data locations to get&lt;br /&gt;
        program      print all logger programming &lt;br /&gt;
        flags        optionally toggle specified flag(s), show flags&lt;br /&gt;
        ports        show ports (toggle not yet supported)&lt;br /&gt;
        memory       show mode A memory settings&lt;br /&gt;
        signatures   show mode B signature settings&lt;br /&gt;
        input=n[,m][,r-s]  show input storage locations&lt;br /&gt;
        capture=[f]  end previous capture, capture output to file f&lt;br /&gt;
        get_time_flags experimental using F command&lt;br /&gt;
&lt;br /&gt;
The querylogger (and loggerdata) scripts assume a specific system &lt;br /&gt;
configuration of sites and ''rc'' files; see below...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==loggerdata.pl==&lt;br /&gt;
&lt;br /&gt;
The '''loggerdata.pl''' script is the workhorse of WERC's data &lt;br /&gt;
gathering system from CR10X loggers, and besides the '''querylogger.pl'''&lt;br /&gt;
script (see above) is the only script we've written around the Campbell::Comm&lt;br /&gt;
module.&lt;br /&gt;
&lt;br /&gt;
See below for the [[data site architecture]] assumed by the system.&lt;br /&gt;
&lt;br /&gt;
Like [[#querylogger.pl]], or [#querylogger.pl], '''loggerdata.pl''' runs in&lt;br /&gt;
a non-interactive or ''batch'' mode.  But where the former program is &lt;br /&gt;
driven according to the set of commands provided on the command line, the&lt;br /&gt;
latter is hard-wired to follow a set sequence of commands.&lt;br /&gt;
&lt;br /&gt;
As with any computer program, the details of what this program does are&lt;br /&gt;
spelled out in its source code.  The following steps are from memory, and&lt;br /&gt;
should be confirmed...&lt;br /&gt;
&lt;br /&gt;
* a connection is established to the datalogger&lt;br /&gt;
* several ''escape characters'' are sent in case the datalogger has been left in an edit or other state&lt;br /&gt;
* the datalogger command prompt, '''&amp;quot;*&amp;quot;''' is obtained&lt;br /&gt;
* the &amp;quot;next data memory location&amp;quot; ('''DSP''') is retrieved from the site state on disk (not on the logger)&lt;br /&gt;
* the datalogger's current data memory position ('''MPTR''') is obtained&lt;br /&gt;
* the '''G''' logger telecommunications command is used to set the '''MPTR''' to the last '''DSP''' value&lt;br /&gt;
* data is requested in either ASCII (the '''D''' command) or binary (the '''F''' command) mode&lt;br /&gt;
* incoming data is integrity-checked using checksums or ''signatures''&lt;br /&gt;
* confirmed-good data is stored on disk&lt;br /&gt;
* update the stored '''DSP''' state information&lt;br /&gt;
* repeat the above data query steps until:&lt;br /&gt;
** the '''DSP''' value reaches the logger's '''MPTR'''&lt;br /&gt;
** the query times out&lt;br /&gt;
** the allowed processing time for the session elapses&lt;br /&gt;
* query the datalogger's time&lt;br /&gt;
** if the logger time is off by more than a specified amount (e.g., 10 seconds), set the time&lt;br /&gt;
* if the logger program hasn't been downloaded for greater than a specified time (e.g., 10 days), download the program&lt;br /&gt;
** store the logger program to a '''version control system''' (RCS)&lt;br /&gt;
* query and store the datalogger ''flags'' settings&lt;br /&gt;
* disconnect from the remote logger&lt;br /&gt;
* compose a ''log message'' summarizing the session&lt;br /&gt;
** print the log message if the session has been run by a user&lt;br /&gt;
** append the log message to the site log file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==data site architecture==&lt;br /&gt;
&lt;br /&gt;
THIS IS A STUB .... NEEDS WORK!&lt;/div&gt;</summary>
		<author><name>127.0.0.1</name></author>
		
	</entry>
	<entry>
		<id>http://ocotal.iarc.uaf.edu/index.php?title=Campbell::Comm&amp;diff=362</id>
		<title>Campbell::Comm</title>
		<link rel="alternate" type="text/html" href="http://ocotal.iarc.uaf.edu/index.php?title=Campbell::Comm&amp;diff=362"/>
		<updated>2007-07-06T19:20:27Z</updated>

		<summary type="html">&lt;p&gt;127.0.0.1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Campbell Scientific's CR10 family of dataloggers has been heavily used by WERC &lt;br /&gt;
and many other research groups for years.  Though now superseded by the CR1000&lt;br /&gt;
line of loggers, the CR10 line will likely be in service for years to come.&lt;br /&gt;
&lt;br /&gt;
The CR10 loggers were provided with complete documentation, both for developing&lt;br /&gt;
the datalogging programs themselves and for interfacing with other systems via&lt;br /&gt;
serial communications.  At WERC, we used this documentation to develop code in&lt;br /&gt;
the Perl programming language for ''talking to'' these datalogging systems, with&lt;br /&gt;
connections via serial radios (FreeWave) and the Internet.&lt;br /&gt;
&lt;br /&gt;
Note that Campbell provides the LoggerNet (formerly PC208 and other)&lt;br /&gt;
programs to interface dataloggers to PCs; WERC's Campbell::Comm and related &lt;br /&gt;
programs serve a more limited function than LoggerNet/PC208, being primarily &lt;br /&gt;
concerned with reliably downloading data and checking/setting the time.&lt;br /&gt;
&lt;br /&gt;
WERC's code is posted online at http://www.uaf.edu/water/staff/irving/csi-code/,&lt;br /&gt;
including a [http://www.uaf.edu/water/staff/irving/csi-code/readme README] file.&lt;br /&gt;
This system has been in use for several years, downloading data from up to 50 &lt;br /&gt;
remote loggers hourly in several different radio networks.&lt;br /&gt;
&lt;br /&gt;
This code has not been packaged for distribution, or automatic&lt;br /&gt;
installation, but it is intended to be available under the GNU Public&lt;br /&gt;
License (GPL).&lt;br /&gt;
&lt;br /&gt;
Technical descriptions of the primary components follow...&lt;br /&gt;
&lt;br /&gt;
Note that this Perl code has been written, tested, and run only on Linux&lt;br /&gt;
computers; Perl itself is very portable across platforms, but porting &lt;br /&gt;
problems (e.g,. to Windows OS family) might be encountered in such areas&lt;br /&gt;
as process management (fork, exec), ''alarm'' timing, and possibly others.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Campbell/Comm.pm==&lt;br /&gt;
&lt;br /&gt;
This module becomes part of a Perl program via the '''use''' or '''require'''&lt;br /&gt;
keywords.   It provides the machinery to connect and send/receive commands&lt;br /&gt;
to/from a remote datalogger using Perl's object-oriented programming&lt;br /&gt;
methodology.  Individual ''methods'' are provided corresponding to some/most&lt;br /&gt;
of the ''telecommunications'' commands documented in the Campbell Scientific&lt;br /&gt;
CR10 family manuals.&lt;br /&gt;
&lt;br /&gt;
Another Perl module is needed in order to interact with remote dataloggers,&lt;br /&gt;
and that is Net::Telnet, which is included in the standard Perl distribution.&lt;br /&gt;
This module allows automating the telnet protocol, but boils down to being&lt;br /&gt;
able to send commands to the remote system and then wait for and handle &lt;br /&gt;
responses -- or no response, if that's necessary.&lt;br /&gt;
&lt;br /&gt;
Besides the nominal TCP/IP connections, Net::Telnet is capable of supporting&lt;br /&gt;
interfaces using a direct serial or modem connection.  This usage is &lt;br /&gt;
implemented in the (or various...) open() methods.&lt;br /&gt;
&lt;br /&gt;
A ''bug'' in Net::Telnet (this is my view; it may be considered a ''feature'' &lt;br /&gt;
by the authors...) requires a patch; this should be represented in the &lt;br /&gt;
Net::Telnet version included in the above tree.  Specifically, Net::Telnet&lt;br /&gt;
goes out of its way to handle ''timeouts'' using ''wall'' time (i.e., absolute&lt;br /&gt;
time as measured on a wall clock) rather than ''relative'' inactivity time &lt;br /&gt;
as used in the underlying select() system function.  In our case the latter&lt;br /&gt;
form is required due to the many levels and sources of latency in the &lt;br /&gt;
communication system.  &lt;br /&gt;
&lt;br /&gt;
The Perl Expect module might provide a good alternative to Net::Telnet if&lt;br /&gt;
Campbell::Comm were to be rewritten.  Both provide the key functionality&lt;br /&gt;
of being able to wait for and selectivly match on responses from the&lt;br /&gt;
remote system.&lt;br /&gt;
&lt;br /&gt;
Due to the specific need to communicate with dataloggers via FreeWave &lt;br /&gt;
radios, the Campbell::Comm module was written with this capability perhaps&lt;br /&gt;
too implicitly.  A rewrite (anticipated) should remove any code not &lt;br /&gt;
directly concerned with the Campbell dataloggers.&lt;br /&gt;
&lt;br /&gt;
==querylogger.pl==&lt;br /&gt;
&lt;br /&gt;
This perl script was written to exercise and test the Campbell::Comm &lt;br /&gt;
module, but may be useful in its own right as a way to interface with&lt;br /&gt;
dataloggers in batch (i.e., non-interactive) form.  Each method in the&lt;br /&gt;
Campbell::Comm module should be represented by a querylogger command&lt;br /&gt;
as specified on the command line.&lt;br /&gt;
&lt;br /&gt;
The interface is described if run with no arguments:&lt;br /&gt;
&lt;br /&gt;
    $ querylogger   &lt;br /&gt;
    syntax: &amp;quot;$ /home/ken/bin/querylogger OPTIONS SITE COMMAND ...&lt;br /&gt;
    where OPTIONS are&lt;br /&gt;
        --quiet      suppress output to STDOUT&lt;br /&gt;
        -q           same as above&lt;br /&gt;
        --logfile=f  print everything to file f&lt;br /&gt;
        -l f         same as above&lt;br /&gt;
        --comm=s     use rc file section Campbell::Comm-s, or&lt;br /&gt;
        -c s         use rc file section Campbell::Comm-s&lt;br /&gt;
        --identify   identify site in output (default)&lt;br /&gt;
        --noidentify don't identify site in output&lt;br /&gt;
    where SITE is one of: site, slope_mtn,&lt;br /&gt;
    and COMMANDs may include:&lt;br /&gt;
        status       list status strings&lt;br /&gt;
        time         show time (setting not yet supported)&lt;br /&gt;
        backup=n     n=number of output arrays to spew (no limit)&lt;br /&gt;
        MPTR=loc     loc=output storage location (no limit)&lt;br /&gt;
        data=n       n=number of data records to get&lt;br /&gt;
        binary=n     n=number of data locations to get&lt;br /&gt;
        program      print all logger programming &lt;br /&gt;
        flags        optionally toggle specified flag(s), show flags&lt;br /&gt;
        ports        show ports (toggle not yet supported)&lt;br /&gt;
        memory       show mode A memory settings&lt;br /&gt;
        signatures   show mode B signature settings&lt;br /&gt;
        input=n[,m][,r-s]  show input storage locations&lt;br /&gt;
        capture=[f]  end previous capture, capture output to file f&lt;br /&gt;
        get_time_flags experimental using F command&lt;br /&gt;
&lt;br /&gt;
The querylogger (and loggerdata) scripts assume a specific system &lt;br /&gt;
configuration of sites and ''rc'' files; see below...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==loggerdata.pl==&lt;br /&gt;
&lt;br /&gt;
The '''loggerdata.pl''' script is the workhorse of WERC's data &lt;br /&gt;
gathering system from CR10X loggers, and besides the '''querylogger.pl'''&lt;br /&gt;
script (see above) is the only script we've written around the Campbell::Comm&lt;br /&gt;
module.&lt;br /&gt;
&lt;br /&gt;
See below for the [[data site architecture]] assumed by the system.&lt;br /&gt;
&lt;br /&gt;
Like [[#querylogger.pl]], &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==data site architecture==&lt;br /&gt;
&lt;br /&gt;
THIS IS A STUB .... NEEDS WORK!&lt;/div&gt;</summary>
		<author><name>127.0.0.1</name></author>
		
	</entry>
	<entry>
		<id>http://ocotal.iarc.uaf.edu/index.php?title=Campbell::Comm&amp;diff=361</id>
		<title>Campbell::Comm</title>
		<link rel="alternate" type="text/html" href="http://ocotal.iarc.uaf.edu/index.php?title=Campbell::Comm&amp;diff=361"/>
		<updated>2007-07-06T17:40:43Z</updated>

		<summary type="html">&lt;p&gt;127.0.0.1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Campbell Scientific's CR10 family of dataloggers has been heavily used by WERC &lt;br /&gt;
and many other research groups for years.  Though now superseded by the CR1000&lt;br /&gt;
line of loggers, the CR10 line will likely be in service for years to come.&lt;br /&gt;
&lt;br /&gt;
The CR10 loggers were provided with complete documentation, both for developing&lt;br /&gt;
the datalogging programs themselves and for interfacing with other systems via&lt;br /&gt;
serial communications.  At WERC, we used this documentation to develop code in&lt;br /&gt;
the Perl programming language for ''talking to'' these datalogging systems, with&lt;br /&gt;
connections via serial radios (FreeWave) and the Internet.&lt;br /&gt;
&lt;br /&gt;
Note that Campbell provides the LoggerNet (formerly PC208 and other)&lt;br /&gt;
programs to interface dataloggers to PCs; WERC's Campbell::Comm and related &lt;br /&gt;
programs serve a more limited function than LoggerNet/PC208, being primarily &lt;br /&gt;
concerned with reliably downloading data and checking/setting the time.&lt;br /&gt;
&lt;br /&gt;
WERC's code is posted online at http://www.uaf.edu/water/staff/irving/csi-code/,&lt;br /&gt;
including a [http://www.uaf.edu/water/staff/irving/csi-code/readme README] file.&lt;br /&gt;
This system has been in use for several years, downloading data from up to 50 &lt;br /&gt;
remote loggers hourly in several different radio networks.&lt;br /&gt;
&lt;br /&gt;
This code has not been packaged for distribution, or automatic&lt;br /&gt;
installation, but it is intended to be available under the GNU Public&lt;br /&gt;
License (GPL).&lt;br /&gt;
&lt;br /&gt;
Technical descriptions of the primary components follow...&lt;br /&gt;
&lt;br /&gt;
Note that this Perl code has been written, tested, and run only on Linux&lt;br /&gt;
computers; Perl itself is very portable across platforms, but porting &lt;br /&gt;
problems (e.g,. to Windows OS family) might be encountered in such areas&lt;br /&gt;
as process management (fork, exec), ''alarm'' timing, and possibly others.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Campbell/Comm.pm==&lt;br /&gt;
&lt;br /&gt;
This module becomes part of a Perl program via the '''use''' or '''require'''&lt;br /&gt;
keywords.   It provides the machinery to connect and send/receive commands&lt;br /&gt;
to/from a remote datalogger using Perl's object-oriented programming&lt;br /&gt;
methodology.  Individual ''methods'' are provided corresponding to some/most&lt;br /&gt;
of the ''telecommunications'' commands documented in the Campbell Scientific&lt;br /&gt;
CR10 family manuals.&lt;br /&gt;
&lt;br /&gt;
Another Perl module is needed in order to interact with remote dataloggers,&lt;br /&gt;
and that is Net::Telnet, which is included in the standard Perl distribution.&lt;br /&gt;
This module allows automating the telnet protocol, but boils down to being&lt;br /&gt;
able to send commands to the remote system and then wait for and handle &lt;br /&gt;
responses -- or no response, if that's necessary.&lt;br /&gt;
&lt;br /&gt;
Besides the nominal TCP/IP connections, Net::Telnet is capable of supporting&lt;br /&gt;
interfaces using a direct serial or modem connection.  This usage is &lt;br /&gt;
implemented in the (or various...) open() methods.&lt;br /&gt;
&lt;br /&gt;
A ''bug'' in Net::Telnet (this is my view; it may be considered a ''feature'' &lt;br /&gt;
by the authors...) requires a patch; this should be represented in the &lt;br /&gt;
Net::Telnet version included in the above tree.  Specifically, Net::Telnet&lt;br /&gt;
goes out of its way to handle ''timeouts'' using ''wall'' time (i.e., absolute&lt;br /&gt;
time as measured on a wall clock) rather than ''relative'' inactivity time &lt;br /&gt;
as used in the underlying select() system function.  In our case the latter&lt;br /&gt;
form is required due to the many levels and sources of latency in the &lt;br /&gt;
communication system.  &lt;br /&gt;
&lt;br /&gt;
The Perl Expect module might provide a good alternative to Net::Telnet if&lt;br /&gt;
Campbell::Comm were to be rewritten.  Both provide the key functionality&lt;br /&gt;
of being able to wait for and selectivly match on responses from the&lt;br /&gt;
remote system.&lt;br /&gt;
&lt;br /&gt;
Due to the specific need to communicate with dataloggers via FreeWave &lt;br /&gt;
radios, the Campbell::Comm module was written with this capability perhaps&lt;br /&gt;
too implicitly.  A rewrite (anticipated) should remove any code not &lt;br /&gt;
directly concerned with the Campbell dataloggers.&lt;br /&gt;
&lt;br /&gt;
==querylogger.pl==&lt;br /&gt;
&lt;br /&gt;
This perl script was written to exercise and test the Campbell::Comm &lt;br /&gt;
module, but may be useful in its own right as a way to interface with&lt;br /&gt;
dataloggers in batch (i.e., non-interactive) form.  Each method in the&lt;br /&gt;
Campbell::Comm module should be represented by a querylogger command&lt;br /&gt;
as specified on the command line.&lt;br /&gt;
&lt;br /&gt;
The interface is described if run with no arguments:&lt;br /&gt;
&lt;br /&gt;
    $ querylogger   &lt;br /&gt;
    syntax: &amp;quot;$ /home/ken/bin/querylogger OPTIONS SITE COMMAND ...&lt;br /&gt;
    where OPTIONS are&lt;br /&gt;
        --quiet      suppress output to STDOUT&lt;br /&gt;
        -q           same as above&lt;br /&gt;
        --logfile=f  print everything to file f&lt;br /&gt;
        -l f         same as above&lt;br /&gt;
        --comm=s     use rc file section Campbell::Comm-s, or&lt;br /&gt;
        -c s         use rc file section Campbell::Comm-s&lt;br /&gt;
        --identify   identify site in output (default)&lt;br /&gt;
        --noidentify don't identify site in output&lt;br /&gt;
    where SITE is one of: site, slope_mtn,&lt;br /&gt;
    and COMMANDs may include:&lt;br /&gt;
        status       list status strings&lt;br /&gt;
        time         show time (setting not yet supported)&lt;br /&gt;
        backup=n     n=number of output arrays to spew (no limit)&lt;br /&gt;
        MPTR=loc     loc=output storage location (no limit)&lt;br /&gt;
        data=n       n=number of data records to get&lt;br /&gt;
        binary=n     n=number of data locations to get&lt;br /&gt;
        program      print all logger programming &lt;br /&gt;
        flags        optionally toggle specified flag(s), show flags&lt;br /&gt;
        ports        show ports (toggle not yet supported)&lt;br /&gt;
        memory       show mode A memory settings&lt;br /&gt;
        signatures   show mode B signature settings&lt;br /&gt;
        input=n[,m][,r-s]  show input storage locations&lt;br /&gt;
        capture=[f]  end previous capture, capture output to file f&lt;br /&gt;
        get_time_flags experimental using F command&lt;br /&gt;
&lt;br /&gt;
The querylogger (and loggerdata) scripts assume a specific system &lt;br /&gt;
configuration of sites and ''rc'' files; see below...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==loggerdata.pl==&lt;br /&gt;
&lt;br /&gt;
THIS IS A STUB .... NEEDS WORK!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==data site architecture==&lt;br /&gt;
&lt;br /&gt;
THIS IS A STUB .... NEEDS WORK!&lt;/div&gt;</summary>
		<author><name>127.0.0.1</name></author>
		
	</entry>
	<entry>
		<id>http://ocotal.iarc.uaf.edu/index.php?title=Campbell::Comm&amp;diff=360</id>
		<title>Campbell::Comm</title>
		<link rel="alternate" type="text/html" href="http://ocotal.iarc.uaf.edu/index.php?title=Campbell::Comm&amp;diff=360"/>
		<updated>2007-07-06T17:15:27Z</updated>

		<summary type="html">&lt;p&gt;127.0.0.1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Campbell Scientific's CR10 family of dataloggers has been heavily used by WERC &lt;br /&gt;
and many other research groups for years.  Though now superseded by the CR1000&lt;br /&gt;
line of loggers, the CR10 line will likely be in service for years to come.&lt;br /&gt;
&lt;br /&gt;
The CR10 loggers were provided with complete documentation, both for developing&lt;br /&gt;
the datalogging programs themselves and for interfacing with other systems via&lt;br /&gt;
serial communications.  At WERC, we used this documentation to develop code in&lt;br /&gt;
the Perl programming language for ''talking to'' these datalogging systems, with&lt;br /&gt;
connections via serial radios (FreeWave) and the Internet.&lt;br /&gt;
&lt;br /&gt;
Note that Campbell provides the LoggerNet (formerly PC208 and other)&lt;br /&gt;
programs to interface dataloggers to PCs; WERC's Campbell::Comm and related &lt;br /&gt;
programs serve a more limited function than LoggerNet/PC208, being primarily &lt;br /&gt;
concerned with reliably downloading data and checking/setting the time.&lt;br /&gt;
&lt;br /&gt;
WERC's code is posted online at http://www.uaf.edu/water/staff/irving/csi-code/,&lt;br /&gt;
including a [http://www.uaf.edu/water/staff/irving/csi-code/readme README] file.&lt;br /&gt;
This system has been in use for several years, downloading data from up to 50 &lt;br /&gt;
remote loggers hourly in several different radio networks.&lt;br /&gt;
&lt;br /&gt;
This code has not been packaged for distribution, or automatic&lt;br /&gt;
installation, but it is intended to be available under the GNU Public&lt;br /&gt;
License (GPL).&lt;br /&gt;
&lt;br /&gt;
Brief technical descriptions of the primary components follow...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Campbell/Comm.pm==&lt;br /&gt;
&lt;br /&gt;
This module becomes part of a Perl program via the '''use''' or '''require'''&lt;br /&gt;
keywords.   It provides the machinery to connect and send/receive commands&lt;br /&gt;
to/from a remote datalogger using Perl's object-oriented programming&lt;br /&gt;
methodology.  Individual ''methods'' are provided corresponding to some/most&lt;br /&gt;
of the ''telecommunications'' commands documented in the Campbell Scientific&lt;br /&gt;
CR10 family manuals.&lt;br /&gt;
&lt;br /&gt;
Another Perl module is needed in order to interact with remote dataloggers,&lt;br /&gt;
and that is Net::Telnet, which is included in the standard Perl distribution.&lt;br /&gt;
This module allows automating the telnet protocol, but boils down to being&lt;br /&gt;
able to send commands to the remote system and then wait for and handle &lt;br /&gt;
responses -- or no response, if that's necessary.&lt;br /&gt;
&lt;br /&gt;
Besides the nominal TCP/IP connections, Net::Telnet is capable of supporting&lt;br /&gt;
interfaces using a direct serial or modem connection.  This usage is &lt;br /&gt;
implemented in the (or various...) open() methods.&lt;br /&gt;
&lt;br /&gt;
A _bug_ in Net::Telnet (this is my view; it may be considered a _feature_ &lt;br /&gt;
by the authors...) requires a patch; this should be represented in the &lt;br /&gt;
Net::Telnet version included in the above tree.  Specifically, Net::Telnet&lt;br /&gt;
goes out of its way to handle ''timeouts'' using ''wall'' time (i.e., absolute&lt;br /&gt;
time as measured on a wall clock) rather than ''relative'' inactivity time &lt;br /&gt;
as used in the underlying select() system function.  In our case the latter&lt;br /&gt;
form is required due to the many levels and sources of latency in the &lt;br /&gt;
communication system.  &lt;br /&gt;
&lt;br /&gt;
The Perl Expect module might provide a good alternative to Net::Telnet if&lt;br /&gt;
Campbell::Comm were to be rewritten.  Both provide the key functionality&lt;br /&gt;
of being able to wait for and selectivly match on responses from the&lt;br /&gt;
remote system.&lt;br /&gt;
&lt;br /&gt;
Due to the specific need to communicate with dataloggers via FreeWave &lt;br /&gt;
radios, the ...&lt;/div&gt;</summary>
		<author><name>127.0.0.1</name></author>
		
	</entry>
	<entry>
		<id>http://ocotal.iarc.uaf.edu/index.php?title=Campbell::Comm&amp;diff=359</id>
		<title>Campbell::Comm</title>
		<link rel="alternate" type="text/html" href="http://ocotal.iarc.uaf.edu/index.php?title=Campbell::Comm&amp;diff=359"/>
		<updated>2007-07-06T17:02:01Z</updated>

		<summary type="html">&lt;p&gt;127.0.0.1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Campbell Scientific's CR10 family of dataloggers has been heavily used by WERC &lt;br /&gt;
and many other research groups for years.  Though now superseded by the CR1000&lt;br /&gt;
line of loggers, the CR10 line will likely be in service for years to come.&lt;br /&gt;
&lt;br /&gt;
The CR10 loggers were provided with complete documentation, both for developing&lt;br /&gt;
the datalogging programs themselves and for interfacing with other systems via&lt;br /&gt;
serial communications.  At WERC, we used this documentation to develop code in&lt;br /&gt;
the Perl programming language for ''talking to'' these datalogging systems, with&lt;br /&gt;
connections via serial radios (FreeWave) and the Internet.&lt;br /&gt;
&lt;br /&gt;
Note that Campbell provides the LoggerNet (formerly PC208 and other)&lt;br /&gt;
programs to interface dataloggers to PCs; WERC's Campbell::Comm and related &lt;br /&gt;
programs serve a more limited function than LoggerNet/PC208, being primarily &lt;br /&gt;
concerned with reliably downloading data and checking/setting the time.&lt;br /&gt;
&lt;br /&gt;
WERC's code is posted online at http://www.uaf.edu/water/staff/irving/csi-code/,&lt;br /&gt;
including a [http://www.uaf.edu/water/staff/irving/csi-code/readme README] file.&lt;br /&gt;
This system has been in use for several years, downloading data from up to 50 &lt;br /&gt;
remote loggers hourly in several different radio networks.&lt;br /&gt;
&lt;br /&gt;
This code has not been packaged for distribution, or automatic&lt;br /&gt;
installation, but it is intended to be available under the GNU Public&lt;br /&gt;
License (GPL).&lt;br /&gt;
&lt;br /&gt;
Brief technical descriptions of the primary components follow...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Campbell/Comm.pm==&lt;br /&gt;
&lt;br /&gt;
This module becomes part of a Perl program via the '''use''' or '''require'''&lt;br /&gt;
keywords.   It provides the machinery to connect and send/receive commands&lt;br /&gt;
to/from a remote datalogger using Perl's object-oriented programming&lt;br /&gt;
methodology.  Individual ''methods'' are provided corresponding to some/most&lt;br /&gt;
of the ''telecommunications'' commands documented in the Campbell Scientific&lt;br /&gt;
CR10 family manuals.&lt;br /&gt;
&lt;br /&gt;
Another Perl module is needed in order to interact with remote dataloggers,&lt;br /&gt;
and that is Net::Telnet, which is included in the standard Perl distribution.&lt;br /&gt;
This module allows automating the telnet protocol, but boils down to being&lt;br /&gt;
able to send commands to the remote system and then wait for and handle &lt;br /&gt;
responses -- or no response, if that's necessary.&lt;br /&gt;
&lt;br /&gt;
Besides the nominal TCP/IP connections, Net::Telnet is capable of supporting&lt;br /&gt;
interfaces using a direct serial or modem connection&lt;br /&gt;
&lt;br /&gt;
Most of WERC's research datalogging systems are&lt;/div&gt;</summary>
		<author><name>127.0.0.1</name></author>
		
	</entry>
	<entry>
		<id>http://ocotal.iarc.uaf.edu/index.php?title=Campbell::Comm&amp;diff=358</id>
		<title>Campbell::Comm</title>
		<link rel="alternate" type="text/html" href="http://ocotal.iarc.uaf.edu/index.php?title=Campbell::Comm&amp;diff=358"/>
		<updated>2007-07-06T16:38:57Z</updated>

		<summary type="html">&lt;p&gt;127.0.0.1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Campbell Scientific's CR10 family of dataloggers has been heavily used by WERC &lt;br /&gt;
and many other research groups for years.  Though now superseded by the CR1000&lt;br /&gt;
line of loggers, the CR10 line will likely be in service for years to come.&lt;br /&gt;
&lt;br /&gt;
The CR10 loggers were provided with complete documentation, both for developing&lt;br /&gt;
the datalogging programs themselves and for interfacing with other systems via&lt;br /&gt;
serial communications.  At WERC, we used this documentation to develop code in&lt;br /&gt;
the Perl programming language for ''talking to'' these datalogging systems, with&lt;br /&gt;
connections via serial radios (FreeWave) and the Internet.&lt;br /&gt;
&lt;br /&gt;
Note that Campbell provides the LoggerNet (formerly PC208 and other)&lt;br /&gt;
programs to interface dataloggers to PCs; WERC's Campbell::Comm and related &lt;br /&gt;
programs serve a more limited function than LoggerNet/PC208, being primarily &lt;br /&gt;
concerned with reliably downloading data and checking/setting the time.&lt;br /&gt;
&lt;br /&gt;
WERC's code is posted online at http://www.uaf.edu/water/staff/irving/csi-code/,&lt;br /&gt;
including a [http://www.uaf.edu/water/staff/irving/csi-code/readme README] file.&lt;/div&gt;</summary>
		<author><name>127.0.0.1</name></author>
		
	</entry>
	<entry>
		<id>http://ocotal.iarc.uaf.edu/index.php?title=Software&amp;diff=204</id>
		<title>Software</title>
		<link rel="alternate" type="text/html" href="http://ocotal.iarc.uaf.edu/index.php?title=Software&amp;diff=204"/>
		<updated>2007-07-06T15:50:05Z</updated>

		<summary type="html">&lt;p&gt;127.0.0.1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here's a list of software commonly used in the department.  You may wish to add tips or questions to the program's wiki page.&lt;br /&gt;
== Mac ==&lt;br /&gt;
* [[Dreamweaver]] -- HTML/CSS editing program&lt;br /&gt;
* [[Aptana]] -- HTML / CSS editing program with a different IDE from dreamweaver (some advantages for each)&lt;br /&gt;
* [[MS Office]] -- Excel, Powerpoint etc.&lt;br /&gt;
* [[fugu]] -- a nice GUI version of SFTP/SCP for the Mac&lt;br /&gt;
== Linux ==&lt;br /&gt;
* [[Perl]] -- Handy programming language for all sorts of things&lt;br /&gt;
** [[Campbell::Comm]] -- perl module to interface Campbell CR10X loggers&lt;br /&gt;
* [[Loggernet]] -- Campbell Scientific's data retrieval program&lt;br /&gt;
== Windows ==&lt;br /&gt;
* [[Dreamweaver]] -- HTML/CSS editing program&lt;br /&gt;
* [[Aptana]] -- HTML / CSS editing program with a different IDE from dreamweaver (some advantages for each)&lt;br /&gt;
* [[MS Office]] -- Excel, Powerpoint etc.&lt;br /&gt;
* [[Adobe PDF tools]] -- Making PDFs (free alternatives also available)&lt;br /&gt;
* [[Adobe Photoshop]] -- Image Manipulation&lt;br /&gt;
* [[Adobe Illustrator]] -- Graphics creation&lt;br /&gt;
* [[Irfanview]] -- Image viewing program more flexible than the default Microsoft Image viewer&lt;br /&gt;
* [[Cygwin]]  -- linux utilities for Windows&lt;br /&gt;
* [[ArcGIS]]  -- ESRI's GIS program&lt;br /&gt;
* [[Putty]]   -- Small suite of tools for doing SSH/SFTP/SCP &lt;br /&gt;
* [[SSH Secure Shell]] -- An alternative tool for doing SSH/SFTP&lt;br /&gt;
* [[Origin]] -- A fancy plotting &amp;amp; graph program&lt;br /&gt;
* [[Surfer]] -- A fancy plotting &amp;amp; graph program&lt;br /&gt;
* [[Perl]] -- Handy programming language for all sorts of things&lt;br /&gt;
* [[Loggernet]] -- Campbell Scientific's data retrieval program&lt;/div&gt;</summary>
		<author><name>127.0.0.1</name></author>
		
	</entry>
	<entry>
		<id>http://ocotal.iarc.uaf.edu/index.php?title=All_projects&amp;diff=159</id>
		<title>All projects</title>
		<link rel="alternate" type="text/html" href="http://ocotal.iarc.uaf.edu/index.php?title=All_projects&amp;diff=159"/>
		<updated>2007-07-05T20:04:58Z</updated>

		<summary type="html">&lt;p&gt;127.0.0.1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= WERC Research Stations -- Site Visit Logs &amp;amp; ToDo Lists =&lt;br /&gt;
&lt;br /&gt;
== North Slope Kuparuk (Kane/NSF) ==&lt;br /&gt;
  * main met sites:&lt;br /&gt;
      ** [[ukmet|Upper Kuparuk met]]&lt;br /&gt;
      ** [[fbmet|Franklin Bluffs met]]&lt;br /&gt;
      ** [[ibmet|Imnavait Basin met]]&lt;br /&gt;
      ** [[shmet|Sagwon Hill met]]&lt;br /&gt;
      ** [[wkmet|West Kuparuk met]]&lt;br /&gt;
      ** [[bpmet|Betty Pingo met]]&lt;br /&gt;
      ** [[wdmet|West Dock met]]&lt;br /&gt;
  * precip sites in the headwaters:&lt;br /&gt;
      * [[uh|Upper Headwaters]]&lt;br /&gt;
      * [[eh|East Headwaters]]&lt;br /&gt;
      * [[wh|West Headwaters]]&lt;br /&gt;
      * [[nh|North Headwaters]]&lt;br /&gt;
      * [[gcl|Green Cabin Lake]]&lt;br /&gt;
  * radio base stations:&lt;br /&gt;
      ** [[sagriver|SagRiver Base]]&lt;br /&gt;
      ** [[toolik|ToolikLake Base]]&lt;br /&gt;
      ** [[deadhorse|Deadhorse Base]]&lt;br /&gt;
  * radio repeater stations:&lt;br /&gt;
      ** [[smrep|Slope Mountain repeater]]&lt;br /&gt;
      ** [[ssrep|Sagwon Summit repeater]]&lt;br /&gt;
      ** [[ukrep|Upper Kuparuk Ridge repeater]]&lt;br /&gt;
&lt;br /&gt;
== North Slope Bullen Project ==&lt;br /&gt;
  * main met sites:&lt;br /&gt;
      ** [[dbm1|Accomplishment Creek met]] (DBM1)&lt;br /&gt;
      ** [[dbm2|Ribdon River met]] (DBM2)&lt;br /&gt;
      ** [[dbm3|Juniper Creek met]] (DBM3)&lt;br /&gt;
      ** [[dbm4|Sag-Ivishak met]] (DBM4)&lt;br /&gt;
      ** [[dbm5|Upper Kadleroshilik River met]] (DBM5)&lt;br /&gt;
      ** [[dbm6|Kavik Camp met]] (DBM6)&lt;br /&gt;
      ** [[dbm7|Lower Kadleroshilik River met]] (DBM7)&lt;br /&gt;
      ** [[dbm8|Bullen Point met]] (DBM8)&lt;br /&gt;
  * radio repeater stations:&lt;br /&gt;
      ** [[dfr2|Slope Mtn2 repeater]] (DFR2)&lt;br /&gt;
      ** [[dbr2|Ribdon River repeater]] (DBR2)&lt;br /&gt;
      ** [[dbr3|Pogopuk Creek repeater]] (DBR3)&lt;br /&gt;
      ** [[dbr4|Kavik Ridge repeater]] (DBR4)&lt;br /&gt;
      ** [[dbr5|Franklin Bluffs repeater]] (DBR5)&lt;br /&gt;
      ** [[dfr3|Shell Pingo repeater]] (DFR3)&lt;br /&gt;
&lt;br /&gt;
== North Slope Foothills Project ==&lt;br /&gt;
  * main met sites:&lt;br /&gt;
      ** [[dfm1|South White Hills met]] (DFM1)&lt;br /&gt;
      ** [[dfm2|White Hills met]] (DFM2)&lt;br /&gt;
      ** [[dfm3|North White Hills met]] (DFM3)&lt;br /&gt;
      ** [[dfm4|Northwest Kuparuk met]] (DFM4)&lt;br /&gt;
  * radio repeater stations:&lt;br /&gt;
      ** [[dfr1|Kakukturat Mountain repeater]] (DFR1)&lt;/div&gt;</summary>
		<author><name>127.0.0.1</name></author>
		
	</entry>
	<entry>
		<id>http://ocotal.iarc.uaf.edu/index.php?title=All_projects&amp;diff=158</id>
		<title>All projects</title>
		<link rel="alternate" type="text/html" href="http://ocotal.iarc.uaf.edu/index.php?title=All_projects&amp;diff=158"/>
		<updated>2007-07-05T20:01:31Z</updated>

		<summary type="html">&lt;p&gt;127.0.0.1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= WERC Research Stations -- Site Visit Logs &amp;amp; ToDo Lists =&lt;br /&gt;
&lt;br /&gt;
== North Slope Kuparuk (Kane/NSF) ==&lt;br /&gt;
  * main met sites:&lt;br /&gt;
      ** [[ukmet|Upper Kuparuk met]]&lt;br /&gt;
      ** [[fbmet|Franklin Bluffs met]]&lt;br /&gt;
      ** [[ibmet|Imnavait Basin met]]&lt;br /&gt;
      ** [[shmet|Sagwon Hill met]]&lt;br /&gt;
      ** [[wkmet|West Kuparuk met]]&lt;br /&gt;
      ** [[bpmet|Betty Pingo met]]&lt;br /&gt;
      ** [[wdmet|West Dock met]]&lt;br /&gt;
  * precip sites in the headwaters:&lt;br /&gt;
      * [[uh|Upper Headwaters]]&lt;br /&gt;
      * [[eh|East Headwaters]]&lt;br /&gt;
      * [[wh|West Headwaters]]&lt;br /&gt;
      * [[nh|North Headwaters]]&lt;br /&gt;
      * [[gcl|Green Cabin Lake]]&lt;br /&gt;
  * radio base stations:&lt;br /&gt;
      ** [[sagriver|SagRiver Base]]&lt;br /&gt;
      ** [[toolik|ToolikLake Base]]&lt;br /&gt;
      ** [[deadhorse|Deadhorse Base]]&lt;br /&gt;
  * radio repeater stations:&lt;br /&gt;
      ** [[smrep|SlopeMountainRepeater]]&lt;br /&gt;
      ** [[ssrep|SagwonSummitRepeater]]&lt;br /&gt;
      ** [[ukrep|UpperKuparukRidgeRepeater]]&lt;br /&gt;
&lt;br /&gt;
== North Slope Bullen Project ==&lt;br /&gt;
  * main met sites:&lt;br /&gt;
      ** [[dbm1|AccomplishmentCreek]] (DBM1)&lt;br /&gt;
      ** [[dbm2|RibdonRiver]] (DBM2)&lt;br /&gt;
      ** [[dbm3|JuniperCreek]] (DBM3)&lt;br /&gt;
      ** [[dbm4|Sag-Ivishak met]] (DBM4)&lt;br /&gt;
      ** [[dbm5|UpperKadleroshilikRiver]] (DBM5)&lt;br /&gt;
      ** [[dbm6|KavikCamp]] (DBM6)&lt;br /&gt;
      ** [[dbm7|LowerKadleroshilikRiver]] (DBM7)&lt;br /&gt;
      ** [[dbm8|BullenPoint]] (DBM8)&lt;br /&gt;
  * radio repeater stations:&lt;br /&gt;
      ** [[dfr2|SlopeMtn2Repeater]] (DFR2)&lt;br /&gt;
      ** [[dbr2|RibdonRiverRepeater]] (DBR2)&lt;br /&gt;
      ** [[dbr3|PogopukCreekRepeater]] (DBR3)&lt;br /&gt;
      ** [[dbr4|KavikRidgeRepeater]] (DBR4)&lt;br /&gt;
      ** [[dbr5|FranklinBluffsRepeater]] (DBR5)&lt;br /&gt;
      ** [[dfr3|ShellPingoRepeater]] (DFR3)&lt;br /&gt;
&lt;br /&gt;
== North Slope Foothills Project ==&lt;br /&gt;
  * main met sites:&lt;br /&gt;
      ** [[dfm1|SouthWhiteHills]] (DFM1)&lt;br /&gt;
      ** [[dfm2|WhiteHills]] (DFM2)&lt;br /&gt;
      ** [[dfm3|NorthWhiteHills]] (DFM3)&lt;br /&gt;
      ** [[dfm4|NorthWestKuparuk]] (DFM4)&lt;br /&gt;
  * radio repeater stations:&lt;br /&gt;
      ** [[dfr1|KakukturatMountainRepeater]] (DFR1)&lt;/div&gt;</summary>
		<author><name>127.0.0.1</name></author>
		
	</entry>
</feed>