Die C-Library hat ihren Ort auf dem Linuxsystem, welches den Host für die Skalen-Elektronik und -Software bildet. Sie besteht aus kompilierten und in einem Archiv zusammenfassten C-Funktionen, sowie aus einer Header-Datei, welche die Funktionsprototypen für den Zugriff auf die Bibliotheksfunktionen durch Anwender-Programme enthält.

Funktionen der Library:


i2c_to_rc5(command);

mit command (0 - 63).

Es wird dem IR-Sender, realisiert mit einem Arduino, über die  I2C-Adresse 0x20 das Kommandobyte übergeben. Dieses wird im RC5 - Code als Infrarot-Signal zur Drehwaage übertragen und steuert diese dann in Abhängigkeit vom Wert des Kommandos.

 

Die folgenden Funktionen sind weitgehend selbsterklärend:

 

laserON(void);

laserOFF(void);

 

fieldmass_left_pos(void);

fieldmass_right_pos(void);

fieldmass_middle_pos(void);

 

spot1on(void);

spot1off(void);

spot2on(void);

spot2off(void);

 

adc_group_select(char n);

read_single_ads7828(arrayposition);

read_all_ads7828(void);

 

adc_groupselect(char n) ist notwendig, um auf die beiden ADC-Gruppen a 4 AD-Wandler zuzugreifen, da der Adressraum der ADS7828 für den I2C-Bus herstellerbedingt auf 4 Adressen beschränkt ist. n kann dann 0 oder 1 sein.

read_single_ads7828(arrayposition) liest den Wert ADC-Kanal eines Fotosensors wobei 'arrayposition' sich aus dem Skalenwert (-31 bis +32) plus 31 ergibt. Die Werte werden in einem Array mit 64 Elementen vorgehalten.

read_all_ads() liest alle ADC-Kanaäle und schreibt diese in ein Array mit 64 Elementen.

Bibliotheken (Libraries) unter Linux

  • statische
  • dynamische

Bibliotheken sind fertig kompilierte Programmodule, welche nur noch in den sie verwendenden Code über die Compilerdirektive #include eingebunden werden müssen. Im vorliegenden Fall dient die Bibliothek als Schnittstelle zu Applikationen, welche die Drehwaage für die Bedienung im Web verfügbar macht. 

Statische Bibliotheken werden jedesmal dem eigenen Code durch den Linker hinzugebundenen. Geschieht das häufig, sagen wir n-mal, so wird auch deer n-fache Speicherplatz benötigt. Daher ist diese Form der Bibliothekserstellung i.d.R. sinnvoll nur bei Bibliotheken, welche von wenigen Programmen genutzt werden. Ist das nicht der Fall, kann man die Bibliothek auch dem Fundus des Betriebssystems einverleiben. Sie exitiert dann nur einmal und wird dynamisch, d.h. zur Laufzeit des jeweiligen sie nutzenden Programms hinzugeladen.

Eine ausführliche Erläuterung findet man in: Wolf,J., Linux-UNIX Programmierung, Bonn 2009