/*浜様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様融 V 2 4 - D R I V E R - T E S T 麺様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様郵 Copyright (C) 1993 by Vision Systems GmbH, Norderstedt, Germany All rights reserved 麺様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様郵 Dieses Programm zeigt die Ansteuerung der COM-Ports ber die V24DRV- Unit. Es ist ein einfaches Terminal-Programm, das die Tastatur-Eingaben auf bis zu 4 COM-Ports schreibt und den Input der COM-Ports verschieden- farbig auf den Bildschirm bringt. Die COM-Ports knnen in beliebiger Konfiguration ohne, mit verschiedenen oder mit gesharten Interrupts betrieben werden. 麺様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様郵 19.Oct.93 WW: 1st release 19.Nov.93 WW: Interrupt Sharing 藩様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様夕 */ #include #include #include #include // Fr Borland C++ 3.1 ff. #include "tpascal.h" #include "v24dll.h" long /* verwendete Adressen und Interrupts. Adr=0 schaltet Port aus, Irq=0 schaltet Irq aus */ Com1Adr = 0x3e0, Com1Irq = 10, Com1Baud = 115200L, Com1Col = BLUE, Com2Adr = 0x2E0, Com2Irq = 11, Com2Baud = 115200L, Com2Col = GREEN, Com3Adr = 0x3E8, Com3Irq = 10, Com3Baud = 19200L, Com3Col = YELLOW, Com4Adr = 0x2f0, Com4Irq = 11, Com4Baud = 75L, Com4Col = RED; /*敖陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳朕 H a u p t S c h l e i f e 青陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳潰*/ void Main() { char IBuf[256],OBuf[256]; char Ch, chstr[2]="x" ; int i, Ret ; Byte ta ; struct text_info TextInfo ; gettextinfo (&TextInfo) ; ta = TextInfo.attribute ; // alte Farben retten for (i=1; i<=16; i++) cputs("\r\n"); while (True) { // Test auf Tastatur-Eingabe: OBuf[0]='\0'; while (kbhit()) { Ch = getch() ; //if (Ch == 3) return ; if (Ch == 0) { Ch = getch() ; if (Ch == 0x2D) return ; /* ALT-X */ } else if (Ch ==27) strcat (OBuf, "\r\nABCDEFGHIJKLMNOPQRSTUVWXYZ\r\n") ; else { chstr[0] = Ch ; strcat (OBuf, chstr) ; } } if (OBuf[0] != '\0') for (i=1; i<=4; i++) Ret=SendBuffer(i,&OBuf[0],strlen(OBuf)); // Input von den COM Ports: for(i=1; i<=4; i++) { Ret=RecvBuffer(i,&IBuf[0],255); if (Ret > 0) { IBuf[Ret] = '\0' ; gettextinfo (&TextInfo) ; ta = TextInfo.attribute ; // alte Farben retten switch (i) { case 1: textcolor(Com1Col); break ; case 2: textcolor(Com2Col); break ; case 3: textcolor(Com3Col); break ; case 4: textcolor(Com4Col); break ; } cputs(IBuf); textattr (ta); textcolor(ta & 0xF) ; } } } } /*.cp 20*/ /*敖陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳朕 I n i t i a l i s i e r u n g 青陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳潰*/ void ComInit (int Num) { Byte UART; Boolean Ret; // Initialisierung der Ports: switch (Num) { case 1: if (Com1Adr!=0) Ret=Init_V24(1,Com1Adr,Com1Irq,9256,9256); else return; break; case 2: if (Com2Adr!=0) Ret=Init_V24(2,Com2Adr,Com2Irq,256,256); else return; break; case 3: if (Com3Adr!=0) Ret=Init_V24(3,Com3Adr,Com3Irq,256,256); else return; break; case 4: if (Com4Adr!=0) Ret=Init_V24(4,Com4Adr,Com4Irq,256,256); else return; break; default: return ; } if (!Ret) { printf ("ERROR: Com %d Init failed!\n", Num); return ; } UART = Uart_Class(Num); printf ("Com%d Uart-Class:",Num); if (UART & uaScratch) cputs(" ScratchReg."); if (UART & uaAFR) cputs(" AFR"); if (UART & uaFifo) cputs(" FIFO"); if (UART & uaLoop) cputs(" LoopBack"); puts("") ; // Baudraten setzen switch (Num) { case 1: Set_BaudRate(1,Com1Baud); break ; case 2: Set_BaudRate(2,Com2Baud); break ; case 3: Set_BaudRate(3,Com3Baud); break ; case 4: Set_BaudRate(4,Com4Baud); break ; } Set_LineParam(Num,lp8Bits); // Line-Parameter setzen: //Set_Handshake(Num,hsInXOn or hsInRTS or hsOutXOn or hsOutCTS); Set_MCR(Num,mpDTR | mpRTS); // Modem-Parameter setzen: // ggf. Handshake Management setzen: // Set_Handshake(Num,hsInXOn or hsInRTS or hsOutXOn or hsOutCTS); } /*敖陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳朕 M A I N - P R O G R A M 青陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳潰*/ main() { puts("") ; /* Initialisierung: */ if (!Set_IntVect(100)) { puts("V24DRV TSR kann nicht angesprochen werden"); return 1; } ComInit(1); ComInit(2); ComInit(3); ComInit(4); Main(); /* Hauptprogramm */ puts(""); /* Abschalten der Com-Ports */ Exit_V24(4); Exit_V24(3); Exit_V24(2); Exit_V24(1); puts(""); return 0; }