Beiträge anzeigen

Diese Sektion erlaubt es dir alle Beiträge dieses Mitglieds zu sehen. Beachte, dass du nur solche Beiträge sehen kannst, zu denen du auch Zugriffsrechte hast.


Themen - Horst

Seiten: [1]
1
Lowlevel-Coding / Serial Port - lesen! - Kleiner Aussetzer xD
« am: 30. March 2010, 00:45 »
Hey...

also irgendwie komme ich gerade net mit... xD Ich weiß net ob es daran liegt das ich schon ewig nicht in C programmiert habe, aber ich bekomme es net mehr hin aus den Pointer einen String zusammen zu setzen.

// ++++++++++++++++++++++++++++++++++  R S 3 2 3  ~  C O M 2  ++++++++++++++++++++++++++++++++++++++
#define PORT 0x2f8   /* 3f8 = COM1 2f8 = COM2*/

void init_serial() {
   outb(PORT + 1, 0x00);    // Disable all interrupts
   outb(PORT + 3, 0x80);    // Enable DLAB (set baud rate divisor)
   outb(PORT + 0, 0x03);    // Set divisor to 3 (lo byte) 38400 baud
   outb(PORT + 1, 0x00);    //                  (hi byte)
   outb(PORT + 3, 0x03);    // 8 bits, no parity, one stop bit
   outb(PORT + 2, 0xC7);    // Enable FIFO, clear them, with 14-byte threshold
   outb(PORT + 4, 0x0B);    // IRQs enabled, RTS/DSR set
}

int serial_received() {
   return inb(PORT + 5) & 1;
}

char read_serial() {
   while (serial_received() == 0);

   return inb(PORT);
}

int is_transmit_empty() {
   return inb(PORT + 5) & 0x20;
}

void write_serial(char a) {
  switch(a) {
     case '\n':
a = 13;
        break;
     case '\r':
        a = 10;
        break;
     default:
        a = a;
        break;
    };
   
   while (is_transmit_empty() == 0);

   outb(PORT,a);
}

void SendSerial(const char *s)
{
    while(*s)
        write_serial(*(s++));
    return;
};

const char ReadSerial()
{
   int read;
   char zeichen;
   
   do
   {
    read = read_serial();   // puts("~ | \n", 0x0700,read_serial());

     }
   } while(read != 0);
   return zeichen;
}

// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Wie man sieht funktioniert eigentlich alles, bis auf das lesen. Das Senden von Strings habe ich über SendSerial() gemacht. Klappt auch super. Aber ich bekomms gerade net hin die einzellen Zeichen von read_serial() zu einem String zusammen zu setzen und Ascii(10) zu \r und Ascii(13) zu \n zu ersetzen. =(

Wer kann mir da mal schnell aus der Gedächnis Lücke helfen ?  =)

Würde mich sehr freuen.

L.G.
Horst
Seiten: [1]

Einloggen