Mikrocontroller an COM1

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Linux_Beginner
Beiträge: 44
Registriert: 24.06.2004 13:52:26

Mikrocontroller an COM1

Beitrag von Linux_Beginner » 03.02.2006 18:40:03

Hallo,

also ich komme irgendwie nicht weiter...

Also ich betreibe am COM1 Port einen Mikrocontroller der mir Werte sendet, sobald ich ihm ein schlichtes "h" schicke.
Daraufhin bekomme ich einen Messwert. Dieser Messwert sollte am Besten mit Datum und Uhrzeit in einer Datei abgespeichert werden. (oder noch besser in meine MySQL-Datenbank mit Zeitstempel eingetragen werden...)

Also die Kommunkation über CAT- und ECHO-Befehlen läuft 100%ig. Nur jetzt geht es eben darum ein Programm zu basteln, dass eben das h schickt und den Messwert wegspeichert.
Mein größtest Problem ist es, dass ich keine Entwicklungsumgebung auf dem Zielrechner installiert habe, ich also keinen C Quellcode kompilieren kann.
Was aber geht sind PERL-Skripte. Oder geht das auch irgendwie über die Linux-Boardmittel über ein BASH-Skript???

Bitte helft mir...

PS: Vielleicht kann mir jemand ein fertiges Programm für mein Debian-System schicken. (für /dev/ttyS0), dass die Werte aufzeichnet. Das Programm soll später über CRON angestoßen werden. Vielen Dank.

Benutzeravatar
finupsen
Beiträge: 1327
Registriert: 21.04.2004 20:07:05
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dortmund
Kontaktdaten:

Beitrag von finupsen » 03.02.2006 19:35:02

hallo

also du könntest ein bashscript für mysql benutzen

in etwa so ....:

Code: Alles auswählen

#!/bin/bash

VALUE=`<wert-von-ttys>`
mysql -p<passwort> -u<benutzer> -e 'INSERT INTO ....$VALUE' <datenbank-name>
Niemand hat vor eine zentrale Datensammelbehörde aufzubauen. Es handelt sich vielmehr um dezentrale IT-Systeme die miteinander vernetzt werden.
... und Wasser ist naß.

ToPeG
Beiträge: 437
Registriert: 14.04.2004 00:42:06

Beitrag von ToPeG » 03.02.2006 23:16:39

Sooo das ganze nur in Perl...

Code: Alles auswählen

#!/usr/bin/perl
$SIG{ALRM} = \&timeout;
$|=1;

open(IN, '<', '/dev/ttyS0') or die "Kann /dev/ttyS0 nicht öffnen!($!)\n";

open(OUT, '>', '/dev/ttyS0') or die "Kann /dev/ttyS0 nicht öffnen!($!)\n";
print OUT "h";
close(OUT);

while(1)
{
 my $in = '';
 alarm(1);
 sysread(IN, $in, 1);
 alarm(0);
 print $in;
}
close(IN);
exit(0);

sub timeout()
{
 alarm(0);
 close(IN);
 print "\n";
 exit(0);
}
Leider klappt es bei mir einfach nicht, das Device sowohl lesend als auch schreibend zu öffnen. So funktioniert es zwar, aber ich weiß nicht ob das auch so bleibt...

Antworten