LED-Namensschild: Difference between revisions
Jump to navigation
Jump to search
| Line 138: | Line 138: | ||
<pre> | <pre> | ||
--- led_sign_orig.c 2007-06-18 19:06:52.731160337 +0200 | --- led_sign_orig.c 2007-06-18 19:06:52.731160337 +0200 | ||
+++ led_sign.c 2007-06- | +++ led_sign.c 2007-06-22 17:24:33.159417459 +0200 | ||
@@ -5,7 +5,6 @@ | @@ -5,7 +5,6 @@ | ||
#include <sys/ioctl.h> | #include <sys/ioctl.h> | ||
| Line 147: | Line 147: | ||
#include <termios.h> | #include <termios.h> | ||
@@ -13, | @@ -13,19 +12,23 @@ | ||
static int fd = 0; | static int fd = 0; | ||
| Line 159: | Line 159: | ||
{ | { | ||
- init_bl(); | - init_bl(); | ||
+ if(argc< | + if(argc<3){ | ||
+ printf(" | + printf("usage: %s speed text [device]\n%s 2 \"this is a text\" /dev/ttyUSB0\n",argv[0],argv[0]); | ||
+ return | + return 0; | ||
+ } | + } | ||
+ init_bl(argv[3]); | + init_bl(argv[3]); | ||
command_bl(argv[2], argv[1][0]); | command_bl(argv[2], argv[1][0]); | ||
- return (0); | |||
+ return 0; | |||
} | } | ||
/* Funktion zum Initialisieren und öffnen des Ports/Devices */ | /* Funktion zum Initialisieren und öffnen des Ports/Devices */ | ||
-int init_bl (void) | -int init_bl (void) | ||
+int init_bl (char * | +int init_bl (char *device) | ||
{ | { | ||
int modelines = 0; | int modelines = 0; | ||
struct termios settings; | struct termios settings; | ||
- | @@ -33,7 +36,10 @@ | ||
if (DEBUG_LEVEL > 5) fprintf (stderr,"init_bl: gestartet.\n"); | if (DEBUG_LEVEL > 5) fprintf (stderr,"init_bl: gestartet.\n"); | ||
/* öffnen und überprüfen des Filedeskriptors */ | /* öffnen und überprüfen des Filedeskriptors */ | ||
- fd = open ("/dev/ttyUSB0", O_RDWR|O_NOCTTY); | - fd = open ("/dev/ttyUSB0", O_RDWR|O_NOCTTY); | ||
+ if( | + if(device) | ||
+ fd = open ( | + fd = open(device, O_RDWR|O_NOCTTY); | ||
+ else | + else | ||
+ fd = open ("/dev/ttyUSB0", O_RDWR|O_NOCTTY); | + fd = open ("/dev/ttyUSB0", O_RDWR|O_NOCTTY); | ||
| Line 186: | Line 187: | ||
if (fd == -1) return (fd); | if (fd == -1) return (fd); | ||
@@ - | @@ -114,9 +120,12 @@ | ||
} | |||
/* Kopieren des Befehls in den Puffer */ | /* Kopieren des Befehls in den Puffer */ | ||
- for (i = 0; i < len; i++) buf[j++] = befehl[i]; | |||
+ for (i = 0; i < len; i++){ | |||
+ befehl[i]=toupper(befehl[i]); | |||
+ buf[j++] = befehl[i]; | |||
+ } | |||
buf[j++] = 3; | buf[j++] = 3; | ||
- | - | ||
+ buf[j | + buf[j] = '\0'; | ||
len += 3; | len += 3; | ||
if (DEBUG_LEVEL > 3 ) | if (DEBUG_LEVEL > 3 ) | ||
</pre> | </pre> | ||
Revision as of 15:24, 22 June 2007
Programm von ralf/entropia
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/ioctl.h>
#include <sys/time.h>
#include <fcntl.h>
#define __USE_BSD
#include <unistd.h>
#include <termios.h>
#define DEBUG_LEVEL 6
static int fd = 0;
int init_bl(void);
int command_bl(char*, char);
int main(int argc, char *argv[])
{
init_bl();
command_bl(argv[2], argv[1][0]);
return (0);
}
/* Funktion zum Initialisieren und öffnen des Ports/Devices */
int init_bl (void)
{
int modelines = 0;
struct termios settings;
if (DEBUG_LEVEL > 5) fprintf (stderr,"init_bl: gestartet.\n");
/* öffnen und überprüfen des Filedeskriptors */
fd = open ("/dev/ttyUSB0", O_RDWR|O_NOCTTY);
if (DEBUG_LEVEL > 5) fprintf (stderr, "init_bl: Filedeskriptor fuer Device tty* ist %d.\n", fd);
if (fd == -1) return (fd);
/* Prüfen ob Filedeskriptor zu einem Terminal gehört */
if (!isatty(fd))
{
fprintf (stderr,"Das Device ist kein Terminal-Device.\n");
return (-1);
}
if (DEBUG_LEVEL > 5) fprintf (stderr,"init_bl: Device %d ist ein Terminaldevice.\n", fd);
/* Setzen der Inputflags */
/* Ignoriere BREAKS beim Input / Keine Parität / Software-Handschake aus */
settings.c_iflag = IGNBRK | IGNPAR | IXOFF;
/* Setzen der Outputflags */
settings.c_oflag = 0; /* Keine besonderen Angaben nötig */
/* Setzen der Controlflags */
/* Setze acht Bit / Lesen erlauben / Ignoriere Modembefehle */
settings.c_cflag = CS8 | CREAD | CLOCAL;
/* Setzen der lokalen Flags */
settings.c_lflag = 0; /* Keine besonderen Angaben nötig */
/* Festlegen der maximalen Zeit, welche beim Lesen gewartet werden soll */
settings.c_cc[VTIME] = 10; /* Angabe in Zehntel-Sekunden */
/* Festlegen der minimalen Anzahl der zu lesenden Bytes */
settings.c_cc[VMIN] = 0;
/* Definieren der übertragungsgeschwindigkeit */
if(cfsetspeed (&settings, B1200) != 0) {
fprintf (stderr,
"Fehler beim Setzen der Übertragungsgeschwindigkeit auf 19200 !\n");
return (-1);
}
if (DEBUG_LEVEL > 5) fprintf (stderr, "init_bl: Baudrate 1200 fuer Device %d gesetzt.\n", fd);
/* übertragung der Einstellungen an die Schnittstelle */
if (tcsetattr (fd, TCSANOW, &settings) == -1) {
fprintf (stderr,"Fehler beim Setzen der Terminalattribute fuer Device.\n");
return (-1);
}
if (DEBUG_LEVEL > 5) fprintf (stderr, "init_bl: Schnittstellenparameter fuer Device %d gesetzt.\n", fd);
/* Lesen der IO-Control-Parameter */
if (ioctl (fd, TIOCMGET, &modelines) == -1) {
fprintf (stderr,"Fehler bei ioctl TIOCMGET fuer Device.\n");
return (-1);
}
if (DEBUG_LEVEL > 5) fprintf (stderr,"init_bl: IO-controlparameter fuer %d gelesen.\n", fd);
/* Setzen des RTS-Signals */
modelines &= ~TIOCM_RTS;
if (ioctl (fd, TIOCMSET, &modelines) == -1) {
fprintf (stderr,"Fehler bei ioctl TIOCMSET fuer Device.\n");
return (-1);
}
if (DEBUG_LEVEL > 5) fprintf (stderr,"init_bl: RTS-Signal fuer %d gesetzt.\n", fd);
return (fd);
}
int command_bl (char* befehl, char v)
{
int i, len, nbyte,j=2;
char buf[160];
buf[0] = 2;
buf[1] = v;
len = strlen(befehl);
if (len > 120) {
fprintf(stderr,"command_bl: Uebergabestring zu lang (%d). \n", len);
return (-1);
}
/* Kopieren des Befehls in den Puffer */
for (i = 0; i < len; i++) buf[j++] = befehl[i];
buf[j++] = 3;
len += 3;
if (DEBUG_LEVEL > 3 )
fprintf (stderr, "command_bl: -> BL (%d): %s \n", len, buf);
nbyte = write (fd, buf, len);
if (nbyte != len) {
fprintf (stderr,"command_bl: Schreibfehler. %d Zeichen uebertragen. \n", nbyte);
if (DEBUG_LEVEL < 5) return (-1);
}
return (-1);
}
AENDERUNGEN VON JCHOME
--- led_sign_orig.c 2007-06-18 19:06:52.731160337 +0200
+++ led_sign.c 2007-06-22 17:24:33.159417459 +0200
@@ -5,7 +5,6 @@
#include <sys/ioctl.h>
#include <sys/time.h>
#include <fcntl.h>
-#define __USE_BSD
#include <unistd.h>
#include <termios.h>
@@ -13,19 +12,23 @@
static int fd = 0;
-int init_bl(void);
+int init_bl(char*);
int command_bl(char*, char);
int main(int argc, char *argv[])
{
- init_bl();
+ if(argc<3){
+ printf("usage: %s speed text [device]\n%s 2 \"this is a text\" /dev/ttyUSB0\n",argv[0],argv[0]);
+ return 0;
+ }
+ init_bl(argv[3]);
command_bl(argv[2], argv[1][0]);
- return (0);
+ return 0;
}
/* Funktion zum Initialisieren und öffnen des Ports/Devices */
-int init_bl (void)
+int init_bl (char *device)
{
int modelines = 0;
struct termios settings;
@@ -33,7 +36,10 @@
if (DEBUG_LEVEL > 5) fprintf (stderr,"init_bl: gestartet.\n");
/* öffnen und überprüfen des Filedeskriptors */
- fd = open ("/dev/ttyUSB0", O_RDWR|O_NOCTTY);
+ if(device)
+ fd = open(device, O_RDWR|O_NOCTTY);
+ else
+ fd = open ("/dev/ttyUSB0", O_RDWR|O_NOCTTY);
if (DEBUG_LEVEL > 5) fprintf (stderr, "init_bl: Filedeskriptor fuer Device tty* ist %d.\n", fd);
if (fd == -1) return (fd);
@@ -114,9 +120,12 @@
}
/* Kopieren des Befehls in den Puffer */
- for (i = 0; i < len; i++) buf[j++] = befehl[i];
+ for (i = 0; i < len; i++){
+ befehl[i]=toupper(befehl[i]);
+ buf[j++] = befehl[i];
+ }
buf[j++] = 3;
-
+ buf[j] = '\0';
len += 3;
if (DEBUG_LEVEL > 3 )