fritzbee21
Hacker
wie schon im titel beschrieben, genau das möchte ich tun :?:
ich habe ein gerät welches ich per serieller schnittstelle steuern kann. das teil hat ein eigenes "serielle interface protokoll" mit dem es über eine serielle rs232 verbindung mit der aussenwelt kommuniziert.
ich möchte jetzt quasi das teil mit einem pc bedienen. nun hab ich mich bei windows etwas eingelesen, bei den dokus die ich gefunden habe, bin ich der meinung unter linux muesste es am einfachsten gehen (eventuell befasse ich mich spaeter mit windows)
ok ich müsste per pc einen ascii string über die serielle schnittstelle absenden (2. schritt dann auslesen aber zuerst mal der reihe nach).
gefunden habe ich dazu folgendes:
zuerst muss man wohl den seriellen port öffnen
Listing 1 - Opening a serial port.
#include <stdio.h> /* Standard input/output definitions */
#include <string.h> /* String function definitions */
#include <unistd.h> /* UNIX standard function definitions */
#include <fcntl.h> /* File control definitions */
#include <errno.h> /* Error number definitions */
#include <termios.h> /* POSIX terminal control definitions */
/*
* 'open_port()' - Open serial port 1.
*
* Returns the file descriptor on success or -1 on error.
*/
int
open_port(void)
{
int fd; /* File descriptor for the port */
fd = open("/dev/ttyS0", O_RDWR | O_NOCTTY | O_NDELAY);
if (fd == -1)
{
/*
* Could not open the port.
*/
perror("open_port: Unable to open /dev/ttyS0 - ");
}
else
fcntl(fd, F_SETFL, 0);
return (fd);
}
dann kann ich daten zum portt schicken:
n = write(fd, "ATZ\r", 4);
if (n < 0)
fputs("write() of 4 bytes failed!\n", stderr);
ich gehe davon aus das "ATZ\r" ein befehl an ein angeschlossenes modem ist. d.h. hier muss mein ascii string rein -> richtig ?
schoen und gut, sollte das nun alles richtig sein, wie kann ich denn den code ausführen ?
code in texteditor rein -> abspeichern
dann muss das doch compiliert werden -> richtig ?
ok an dieser stelle gebe ich öffentlich zu, im studium blau gemacht zu haben
wie kann ich denn den code compilieren damit ich diesen ausführen kann ?
ich brauch erstmal keine graphische gui, ausführen über console reicht vollkommen aus.
ich stell mir das jetzt so vor das ich fuer jeden befehl eine datei erstelle und diese dann einfach per console zünde.
aller anfang ist schwer
danke fuer eure hilfe !
ich habe ein gerät welches ich per serieller schnittstelle steuern kann. das teil hat ein eigenes "serielle interface protokoll" mit dem es über eine serielle rs232 verbindung mit der aussenwelt kommuniziert.
ich möchte jetzt quasi das teil mit einem pc bedienen. nun hab ich mich bei windows etwas eingelesen, bei den dokus die ich gefunden habe, bin ich der meinung unter linux muesste es am einfachsten gehen (eventuell befasse ich mich spaeter mit windows)
ok ich müsste per pc einen ascii string über die serielle schnittstelle absenden (2. schritt dann auslesen aber zuerst mal der reihe nach).
gefunden habe ich dazu folgendes:
zuerst muss man wohl den seriellen port öffnen
Listing 1 - Opening a serial port.
#include <stdio.h> /* Standard input/output definitions */
#include <string.h> /* String function definitions */
#include <unistd.h> /* UNIX standard function definitions */
#include <fcntl.h> /* File control definitions */
#include <errno.h> /* Error number definitions */
#include <termios.h> /* POSIX terminal control definitions */
/*
* 'open_port()' - Open serial port 1.
*
* Returns the file descriptor on success or -1 on error.
*/
int
open_port(void)
{
int fd; /* File descriptor for the port */
fd = open("/dev/ttyS0", O_RDWR | O_NOCTTY | O_NDELAY);
if (fd == -1)
{
/*
* Could not open the port.
*/
perror("open_port: Unable to open /dev/ttyS0 - ");
}
else
fcntl(fd, F_SETFL, 0);
return (fd);
}
dann kann ich daten zum portt schicken:
n = write(fd, "ATZ\r", 4);
if (n < 0)
fputs("write() of 4 bytes failed!\n", stderr);
ich gehe davon aus das "ATZ\r" ein befehl an ein angeschlossenes modem ist. d.h. hier muss mein ascii string rein -> richtig ?
schoen und gut, sollte das nun alles richtig sein, wie kann ich denn den code ausführen ?
code in texteditor rein -> abspeichern
dann muss das doch compiliert werden -> richtig ?
ok an dieser stelle gebe ich öffentlich zu, im studium blau gemacht zu haben
wie kann ich denn den code compilieren damit ich diesen ausführen kann ?
ich brauch erstmal keine graphische gui, ausführen über console reicht vollkommen aus.
ich stell mir das jetzt so vor das ich fuer jeden befehl eine datei erstelle und diese dann einfach per console zünde.
aller anfang ist schwer
danke fuer eure hilfe !