Øvelse+12+-+Extern+serial+kommunikation

A)
Serialporten kan tilgåes som et normalt char device og åbnes med kommandoen: code format="c" fd = open(serialPath, O_RDWR | O_NOCTTY | O_NDELAY); code hvor serialPath er defineret til "/dev/ttyS2"

Der åbnes med følgende flags: code format="c" O_RDWR | O_NOCTTY | O_NDELAY code som sætter porten til Read/write, 0_NOCTTY der betyder at den ikke kan kontrollerer det hele, altså tages der ikke imod inputsignaler fra fx et keyboard, 0_NDELAY som betyder at der ikke ventes på et "DCD signal", og gør der der ikke gåes i sleep

Opsætning af porten:
code format="c" void set_port {       struct termios options;

/*       * Get the current options for the port... */

tcgetattr(fd, &options);

/*        * Set the baud rates to 19200... */

cfsetispeed(&options, B115200); cfsetospeed(&options, B115200);

/*        * Enable the receiver and set local mode... set to 8N1 */

options.c_cflag |= (CLOCAL | CREAD); options.c_cflag &= ~PARENB options.c_cflag &= ~CSTOPB options.c_cflag &= ~CSIZE; options.c_cflag |= CS8;

/*         * Set the new options for the port... */

tcsetattr(fd, TCSANOW, &options); } code Opsætning foregår ved at læse instillingerne ind i en stuct med kommandoen tcgetattr(fd, &options);

Herefter ændres de enkelte flags, og den structen læses tilbage.

Nu kan der læses og skrives med read og write som ved et normalt char device!

B)
Der laves nu en sender og receiver.

Da dacen fungerer som et char-device sættes receiveren bare til at skrive den modtagne værdi til DAC'en.

I senderen læses der fra gpioen, og den læste værdi sendes.