LED-Namensschild: Difference between revisions

From NoName e.V.
Jump to navigation Jump to search
m (Robot: Cosmetic changes)
 
(3 intermediate revisions by 3 users not shown)
Line 137: Line 137:
== AENDERUNGEN VON JCHOME ==
== AENDERUNGEN VON JCHOME ==
<pre>
<pre>
--- led_sign_orig.c 2007-06-18 19:06:52.731160337 +0200
 
+++ led_sign.c 2007-06-18 19:08:32.236830841 +0200
#include <string.h>
@@ -5,7 +5,6 @@
#include <stdio.h>
#include <sys/ioctl.h>
#include <stdlib.h>
#include <sys/time.h>
#include <sys/types.h>
#include <fcntl.h>
#include <sys/ioctl.h>
-#define __USE_BSD
#include <sys/time.h>
#include <unistd.h>
#include <fcntl.h>
#include <termios.h>
#include <unistd.h>
#include <termios.h>
 
#define DEBUG_LEVEL 6
 
static int fd = 0;
 
int init_bl(char*);
int command_bl(char*, char);
 
 
int main(int argc, char *argv[])
{
  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;   
}
   
   
@@ -13,27 +12,33 @@
/* Funktion zum Initialisieren und öffnen des Ports/Devices */
int init_bl (char *device)
{
  int modelines = 0;
  struct termios settings;
 
  if (DEBUG_LEVEL > 5) fprintf (stderr,"init_bl: gestartet.\n");
 
  /* öffnen und überprüfen des Filedeskriptors */
  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);
   
   
  static int fd = 0;
  /* 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;
   
   
-int init_bl(void);
  /* Definieren der übertragungsgeschwindigkeit */
+int init_bl(char*);
  if(cfsetspeed (&settings, B1200) != 0) {
int command_bl(char*, char);
    fprintf (stderr,
        "Fehler beim Setzen der Übertragungsgeschwindigkeit auf 19200 !\n");
    return (-1);
int main(int argc, char *argv[])
  }
{
  if (DEBUG_LEVEL > 5) fprintf (stderr, "init_bl: Baudrate 1200 fuer Device %d gesetzt.\n", fd);
-  init_bl();
 
+  if(argc<2){
  /* übertragung der Einstellungen an die Schnittstelle */
+   printf("please enter the speed and the text to set.\n%s [0-5] TEXT\n", argv[0]);
  if (tcsetattr (fd, TCSANOW, &settings) == -1) {
+    return 1;
    fprintf (stderr,"Fehler beim Setzen der Terminalattribute fuer Device.\n");
}
    return (-1);
init_bl(argv[3]);
   }
  command_bl(argv[2], argv[1][0]);
  if (DEBUG_LEVEL > 5) fprintf (stderr, "init_bl: Schnittstellenparameter fuer Device %d gesetzt.\n", fd);
  return (0);    
 
}
  /* 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);
    
    
/* Funktion zum Initialisieren und öffnen des Ports/Devices */
  return (fd);
-int init_bl (void)
}
+int init_bl (char *dev)
 
{  
int command_bl (char* befehl, char v)
  int modelines = 0;
{
  struct termios settings;
 
-
  int i, len, nbyte,j=2;
  if (DEBUG_LEVEL > 5) fprintf (stderr,"init_bl: gestartet.\n");
  char buf[160];
 
  /* öffnen und überprüfen des Filedeskriptors */
  buf[0] = 2;
-  fd = open ("/dev/ttyUSB0", O_RDWR|O_NOCTTY);
  buf[1] = v;
+ if(dev)
 
+   fd = open (dev, O_RDWR|O_NOCTTY);
  len = strlen(befehl);
+  else
  if (len > 120) {
+   fd = open ("/dev/ttyUSB0", O_RDWR|O_NOCTTY);
      fprintf(stderr,"command_bl: Uebergabestring zu lang (%d). \n", len);
  if (DEBUG_LEVEL > 5) fprintf (stderr, "init_bl: Filedeskriptor fuer Device tty* ist %d.\n", fd);
      return (-1);
  if (fd == -1) return (fd);
  }
 
  /* Kopieren des Befehls in den Puffer */  
  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 )
    fprintf (stderr, "command_bl: -> BL (%d): %s  \n", len, buf);
    
    
@@ -116,7 +121,7 @@
  nbyte = write (fd, buf, len);
  /* Kopieren des Befehls in den Puffer */
  if (nbyte != len) {
  for (i = 0; i < len; i++) buf[j++] = befehl[i];
        fprintf (stderr,"command_bl: Schreibfehler. %d Zeichen uebertragen. \n", nbyte);
  buf[j++] = 3;  
        if (DEBUG_LEVEL < 5) return (-1);
-
  }
+  buf[j++] = '\0';
 
  len += 3;
  return (-1);
}
  if (DEBUG_LEVEL > 3 )
</pre>
</pre>
[[Category:Projekte]]

Latest revision as of 12:39, 7 September 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


#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/ioctl.h>
#include <sys/time.h>
#include <fcntl.h>
#include <unistd.h>
#include <termios.h>

#define DEBUG_LEVEL 6

static int fd = 0;

int init_bl(char*);
int command_bl(char*, char);


int main(int argc, char *argv[])
{
  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;     
}
 
/* Funktion zum Initialisieren und öffnen des Ports/Devices */
int init_bl (char *device)
{ 
  int modelines = 0;
  struct termios settings;

  if (DEBUG_LEVEL > 5) fprintf (stderr,"init_bl: gestartet.\n");

  /* öffnen und überprüfen des Filedeskriptors */
  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);
 
  /* 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++){
    befehl[i]=toupper(befehl[i]); 
    buf[j++] = befehl[i];
  }
  buf[j++] = 3; 
  buf[j] = '\0';
  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);
}