Der Quellcode lautet:

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;
}
Die Länge für strncpy ist variabel und richtet sich nach der Länge des ersten Argumentes.