serielle schnittstelle zum x-ten mal!!!
-
Hallo alle zusammen!
Mein Problem ist folgend:
Programmierung erfolgt im Borland C 4.0 C
Ich habe ein einfaches Programm wo zwei Rechner mit einander kommunizieren über die COM 1 Schnittstelle;#include <stdio.h>
#include <conio.h>#define PORT 0x3F8 /* COM1 */
/* Defines Serial Ports Base Address
COM1 0x3F8
COM2 0x2F8
COM3 0x3E8
COM4 0x2E8
*/int main(void)
{
int checkBuffer;
int c;
_outp(PORT + 1 , 0); /* Turn off interrupts */
/* PORT - Communication Settings /
_outp(PORT + 3 , 0x80); / SET DLAB ON /
_outp(PORT + 0 , 0x0C); / Set Baud rate - Divisor Latch Low Byte */
/* Default 0x03 = 38,400 BPS */
/* 0x01 = 115,200 BPS */
/* 0x02 = 56,700 BPS */
/* 0x06 = 19,200 BPS */
/* 0x0C = 9,600 BPS */
/* 0x18 = 4,800 BPS */
/* 0x30 = 2,400 BPS /
_outp(PORT + 1 , 0x00); / Set Baud rate - Divisor Latch High Byte /
_outp(PORT + 3 , 0x03); / 8 Bits, No Parity, 1 Stop Bit /
_outp(PORT + 2 , 0xC7); / Configure FIFO Control Register /
_outp(PORT + 4 , 0x0B); / Turn on DTR, RTS, and OUT2 */
printf("\nSample Comm's Program. Press ESC to quit \n");do {
checkBuffer = _inp(PORT + 5);
if (checkBuffer & 1) {
c = _inp(PORT);
printf("%c", c);
if (c == 13) printf("\n");
_outp(PORT, c);
}
if (kbhit()) {
c = getch();
_outp(PORT, c);
}
} while (c !=27);return 0;
}Hier ist die Schnittstelle schon vorgegeben mit allen Einstellungen;
#define PORT 0x3F8 /* COM1 /
_outp(PORT + 1 , 0); / Turn off interrupts */
/* PORT - Communication Settings /
_outp(PORT + 3 , 0x80); / SET DLAB ON /
_outp(PORT + 0 , 0x0C); / Set Baud rate - Divisor Latch Low Byte */
/* Default 0x03 = 38,400 BPS */
/* 0x01 = 115,200 BPS */
/* 0x02 = 56,700 BPS */
/* 0x06 = 19,200 BPS */
/* 0x0C = 9,600 BPS */
/* 0x18 = 4,800 BPS */
/* 0x30 = 2,400 BPS /
_outp(PORT + 1 , 0x00); / Set Baud rate - Divisor Latch High Byte /
_outp(PORT + 3 , 0x03); / 8 Bits, No Parity, 1 Stop Bit /
_outp(PORT + 2 , 0xC7); / Configure FIFO Control Register /
_outp(PORT + 4 , 0x0B); / Turn on DTR, RTS, and OUT2 */Eigentlich sollte ich eine Funktion dazu schreiben die eine INI Datei öffnet -> komm.ini
und die Werte ausliest, entsprechen den Variablen übergibt und weiterverarbeitet in dem Programm;Die komm.ini Datei Sieht so aus:
Aktuelleschnitstelle=COM1
Baudrate=9600
Datenbits=8
Parität=Keine
Stopbits=1
Datenfluss=ONDazu habe ich diese stück Programm geschrieben, aber ich komme nicht weiter, d.h. ich kriege es hin nur denn ersten Wert auszulesen:
int ini(void)
{
FILE *File;
char msg[50];
char wert[50];
int i;
int PORT;File = fopen("c:\\Projekt\\komm.ini","r");
if (File != NULL)
{
fgets(msg,LINESIZE,File);for (i=0;i<4;i++)
{
wert[i] = msg[strlen(msg)-4+i];
}
wert[4]='\0';if (strcmp(wert,"COM1")==0) {PORT=0x3F8;}
printf("\n Der Port ist: %s", wert);fclose(File);
}
else
{
printf("Datei nicht vorhanden!");
}return 0;
}Die Idee ist das man die Änderungen nur in der ini Datei vornimmt, ohne jedes mal das Programm übersetzen zu müssen;
Ich wäre schon glücklich wenn ich die einzelne Werte bekommen werde, die weitere Bearbeitung kriege ich schon hin (glaube ich)!
Kann mir jemand weiter helfen oder sagen ob es so was schon gibt (bestimmt, oder?);
Danke im voraus!
-
mmh wenn du nicht den Builder benutzt bist du glaub ich im falschen Forum ... im Builder geht sowas mit TMemIniFile oder TIniFile. Vielleicht hilft es aber trotzdem weiter.
mfg
Steffen
-
Wir sind hier das Borland C++ Builder Forum. Das hat nix mit Borland C zu tun... => Verschoben
-junix