Der Quellcode lautet:
Die Länge für strncpy ist variabel und richtet sich nach der Länge des ersten Argumentes.Code:// Compile with: GCC /var/scripte/senden.c -o /var/scripte/senden //#include <iostream> //using namespace std; #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <termios.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <time.h> #define BAUDRATE B115200 // Baudrate char MODEMDEVICE[]= "/dev/ttyAMA0"; // Device zum Senden struct termios newtio={}; // Variable für "termios.h" volatile int fd; // File descriptor unsigned char Send_UART(char c[]) // Gibt ein einzelnes Zeichen über UART (als fd geöffnet) aus. { int res; char Counter; char lenght = 0x00; lenght = strlen(c); // Länge des Strings feststellen while(Counter < lenght) { res = write(fd, &c[Counter], 1); Counter++; } Counter = 0x00; // Counter reseten res = write(fd, &"\r", 1); // CR senden res = write(fd, &"\n", 1); // LF senden } int UART_Init() //Schnittstelle öffnen und parametrieren { /*** Init ***/ //O_RDONLY, O_WRONLY or O_RDWR - //O_NDELAY (geht weiter, wenn keine Daten da sind und gibt "-1" zurueck) // man 2 open fuer mehr Infos - see "man 2 open" for more info // O_NOCTTY No ControllTeleType fd = open(MODEMDEVICE, O_WRONLY | O_NOCTTY); if (fd < 0) { printf("Fehler beim öffnen von %s\n", MODEMDEVICE); exit(-1); } memset(&newtio, 0, sizeof(newtio)); newtio.c_cflag = BAUDRATE | CS8 | CLOCAL | CREAD; // Setzt die neuen Porteinstellungen newtio.c_iflag = IGNPAR; newtio.c_oflag = 0; newtio.c_lflag = 0; /* set input mode (non-canonical, no echo, ...) */ newtio.c_cc[VTIME] = 0; /* inter-character timer unused */ newtio.c_cc[VMIN] = 1; /* blocking read until 1 chars received */ tcflush(fd, TCIFLUSH); tcsetattr(fd, TCSANOW, &newtio); return fd; } int main(int argc, char** argv) //Programmstart { // Variablen für das Hauptprogramm char buffer[] = ""; int Laenge = 0x00; UART_Init(); // Schnittstelle öffnen und parametrieren Laenge = strlen(argv[1]); strncpy(buffer, argv[1], Laenge); // Kopiert den zweiten Parameter der übergeben wurde in den String "Buffer if (argc >= 1) { printf("Text empfangen\n"); // Empfangsbestätigung senden Send_UART(buffer); } close (fd); return 0; }







Zitieren

Lesezeichen