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