Pro-Linux.de

Pro-Linux

Pro-Linux Diskussions- und Hilfeforum
Aktuelle Zeit: 19. Nov 2018 16:43

Alle Zeiten sind UTC+01:00




Ein neues Thema erstellen  Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
BeitragVerfasst: 05. Sep 2006 15:02 
Offline

Registriert: 05. Sep 2006 14:29
Beiträge: 12
Hallo,

ich möchte gerne die serielle Schnittstelle unter Linux nutzten.
Dazu habe ich auch ein gutes Tutorial gefunden was dies für DOS erklärt.
Hier mal der Link dazu: http://www.franksteinberg.de/progss.htm

Nun möchte ich das ganze aber unter Linux nutzten und nicht unter DOS.
Wie kann ich dies realisieren?

Hier ist der Programmcode in DOS: http://www.franksteinberg.de/SOURCE/COMBLINK.BAS
Code:
'-- comblink.bas ----------------------------------------------- >>fst'04<< -
' - gibt abwechsend High-Pegel auf TxD und DTR/RTS von COM1 aus
' - an die entsprechenden Pins angeschlossene LEDs blinken abwechselnd
' - Anschlussschema&#58;             &#40;  Pinbelegung  Sub-D Stecker  &#41;
'   * Widerstand 1 kOhm an Masse &#40;9-Pol = Pin 5, 25-Pol = Pin  7&#41;
'   * langes Bein LED1 an TxD    &#40;9-Pol = Pin 3, 25-Pol = Pin  2&#41;
'   * langes Bein LED2 an DTR    &#40;9-Pol = Pin 4, 25-Pol = Pin 20&#41;
'   * langes Bein LED3 an RTS    &#40;9-Pol = Pin 7, 25-Pol = Pin  4&#41;
'   * alle kurzen Beine an den Widerstand
' - funktioniert alternativ auch mit den Modem-LEDs &#40;soweit vorhanden&#41;
'-- V 20040111 ------------------------------- http&#58;//www.FrankSteinberg.de -
		
CLS
LOCATE 4, 1
PRINT " LED-Wechselblinker fuer COM1       >> BENUTZUNG AUF EIGENE GEFAHR <<"
PRINT " Unter DOS oder im DOS-Modus ausfuehren!"
LOCATE 12, 1
PRINT " Datenformat-Register  Bit 6 &#40;break TxD&#41; = "
PRINT " Modem-Steuer-Register Bit 0 &#40;DTR&#41;       = "
PRINT " Modem-Steuer-Register Bit 1 &#40;RTS&#41;       = "

BAdr% = &H3F8        'Basisadresse COM1; COM2 = &H2F8
DFR% = BAdr% + 3     'Adresse des Datenformat-Registers  &#40;Offset 3&#41;
MSR% = BAdr% + 4     'Adresse des Modem-Steuer-Registers &#40;Offset 4&#41;


'Bit3 &#40;MasterInterrupt&#41; setzen; alle anderen Bits loeschen
'&#40;erm”glicht Zugang zum COM-Port unter Win95/98&#41;&#58;
OUT MSR%, 8

DO WHILE INKEY$ = ""
 OUT &#40;DFR%&#41;, INP&#40;DFR%&#41; OR 64    'Bit 6 &#40;Wert 64&#41; setzen     = TxD
 OUT &#40;MSR%&#41;, INP&#40;MSR%&#41; AND 252  'Bit 0+1 &#40;Wert 1+2&#41; l”schen = DTR+RTS
 LOCATE 12, 45&#58; PRINT "1"
 LOCATE 13, 45&#58; PRINT "0"
 LOCATE 14, 45&#58; PRINT "0"
 SLEEP 1
 OUT &#40;DFR%&#41;, INP&#40;DFR%&#41; AND 191  'Bit 6 &#40;Wert 64&#41; l”schen    = TxD
 OUT &#40;MSR%&#41;, INP&#40;MSR%&#41; OR 3     'Bit 0+1 &#40;Wert 1+2&#41; setzen  = DTR+RTS
 LOCATE 12, 45&#58; PRINT "0"
 LOCATE 13, 45&#58; PRINT "1"
 LOCATE 14, 45&#58; PRINT "1"
 SLEEP 1
LOOP
Diesen möchte ich nun unter Linux nutzten.
Wie bekomme ich daraus ein unter Linux lauffähige Kommandozeilenprogramm?

Danke für die Hilfe

Linux-Fan


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 05. Sep 2006 19:02 
Offline
Benutzeravatar

Registriert: 11. Feb 2006 19:10
Beiträge: 3569
Wenn du DTR etc. von Hand kontrollieren willst, musst du dazu einfach die passenden ioctl()-Aufrufe verwenden. Guck mal hier:

http://www.lafn.org/~dave/linux/Serial- ... -HOWTO.txt

Sektion 7 beschreibt, was du suchst.

Janka

_________________
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 11. Sep 2006 16:37 
Offline

Registriert: 05. Sep 2006 14:29
Beiträge: 12
Hallo Janka,
Zitat:
Wenn du DTR etc. von Hand kontrollieren willst, musst du dazu einfach die passenden ioctl()-Aufrufe verwenden. Guck mal hier:
http://www.lafn.org/~dave/linux/Serial- ... -HOWTO.txt
Sektion 7 beschreibt, was du suchst.
Danke für den Link.

Leider komme ich damit noch nicht wirklich weiter.

Ich suche noch ein paar Muster oder HowTo zu dem Thema.

Danke Linux-Fan.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 11. Sep 2006 18:24 
Offline
Benutzeravatar

Registriert: 11. Feb 2006 19:10
Beiträge: 3569
So ähnlich sollte das aussehen:
Code:
#include <fcntl.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>

int main &#40;int argc, char* argv&#91;&#93;&#41;
&#123;
  int fd,i;
  
  /* 1. seriellen Port öffnen */
  fd=open&#40;"/dev/ttyS0",O_RDWR&#41;;

  /* 10 mal */
  for &#40;i=0;i<10;i++&#41;
  &#123;
    /* DTR an, schlafen */
    ioctl&#40;fd, TIOCMBIS, TIOCM_DTR&#41;
    sleep&#40;1&#41;;

    /* DTR aus, schlafen */
    ioctl&#40;fd, TIOCMBIC, TIOCM_DTR&#41;
    sleep&#40;1&#41;;
  &#125;

  /* Port schließen, Ende */
  close&#40;fd&#41;;
  return 0;
&#125;

_________________
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 11. Sep 2006 19:29 
Offline

Registriert: 05. Sep 2006 14:29
Beiträge: 12
Hallo,

danke für die Hilfe!

Wenn ich das im www richit gelsesn habe ist es so das verschieden PC´s die RS232 Schnittstelle beim booten testen oder Stnadartmässig auf HIGH setzten, ist dem Korrekt so? Wenn ja lässt sich soetwas abfangen, so das nur HIGH gesetzt wird durch das kleine eigene Programm?

Danke Linux-Fan.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 16. Sep 2006 23:40 
Offline
Benutzeravatar

Registriert: 11. Feb 2006 19:10
Beiträge: 3569
Der Ruhepegel von RS232 ist +12V. Das nennt man dann "Space". Wenn man ein "Mark" macht, sind das dann -12V.
Die Spannung auf 0 zu setzen ist nicht vorgesehen.
Wenn du LEDs anschließt, drehe einfach deren Polung, um sie bei -12V leuchten zu lassen.

Nochwas: jeder LED sollten eine Dioden 1N4148 *anti*parallel geschaltet werden, da LEDs nur eine Sperrspannung von ca. 5V haben und deshalb bei der jeweils falschen Polung des RS232-Signals (==aus) kaputt gehen können.

Janka

_________________
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 17. Sep 2006 12:56 
Offline

Registriert: 05. Sep 2006 14:29
Beiträge: 12
Hallo Janka,

das bedeutet das ich um ein Relay damit zu steuern noch eine Diode dazwischen schalten muß?

Muß bei der LED auch eine zusätzliche Diode eingebaut werden wenn ein entsprechender Vorwiederstand verwedet wird?

Ich habe es hiermit ausgerechent: LED-Vorwiderstandsrechner
http://www.elektronik-kompendium.de/sit ... 109111.htm

MfG


Nach oben
   
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen  Auf das Thema antworten  [ 7 Beiträge ] 

Alle Zeiten sind UTC+01:00


Wer ist online?

Mitglieder in diesem Forum: Bing [Bot] und 0 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.
Sie dürfen keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
Powered by phpBB® Forum Software © phpBB Limited
Deutsche Übersetzung durch phpBB.de