home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / dtx9202 / dbase / printh.c < prev    next >
Encoding:
C/C++ Source or Header  |  1989-09-02  |  3.0 KB  |  104 lines

  1. /********************************************************/
  2. /*            Modul: PRINTH.C            */
  3. /*    ermöglicht die Steuerung des Druckers auch    */
  4. /*    bei ASCII-Zero Sequenzen durch Angabe sinn-    */
  5. /*    fälliger Namen im CALL Befehl. Z.B.         */
  6. /*    CALL UTILITY WITH "20:UNDERSCORE_ON" versetzt    */
  7. /*    den Drucker in den Unterstreichungsmodus bis    */
  8. /*    er mit UNDERSCORE_OFF wieder ausgeschaltet    */
  9. /*    wird.                        */
  10. /********************************************************/
  11.  
  12. #include <stdlib.h>
  13. #include <string.h>
  14. #include <io.h>
  15. #include <dos.h>
  16.  
  17. /* printhandler : ---
  18.    gibt die vordefinierten Zeichensequenzen an den Drucker
  19.    aus. Dabei können diese nach eigenem Gusto beliebig er-
  20.    weitert werden. Wichtig: die einzelnen Namen sind durch
  21.    Kommas getrennt, so daß beim Durchsuchen nur die Zahl
  22.    der überlesenen Kommas gemerkt werden muß um die richti-
  23.    ge Ausgabesquenz im switch statement zu finden. */
  24. void printhandler(unsigned ds, unsigned bx)
  25. {
  26.  char *cmdstr=MK_FP(ds,bx);
  27.   {
  28.    char *opt="RESET,"            /* Reset des Druckers */
  29.          "ELITE_HS,"     /* Elite Highspeed */
  30.          "PICA_DRAFT,"     /* Pica Normalschrift */
  31.          "PICA_NAR,"     /* Pica Eng 18 dpi */
  32.          "NAR_OFF,"         /* Engschrift aus */
  33.          "8_LPI,"         /* 8 Zeilen/Zoll */
  34.          "6_LPI,"         /* 6 Zeilen/Zoll */
  35.          "25_LPP,"         /* 25 Zeilen/Seite */
  36.          "12_IPP,"         /* 12 Zoll/Seite */
  37.          "UNDERSCORE_ON,"     /* Unterstreichen an */
  38.          "UNDERSCORE_OFF,"     /* Unterstreichen aus */
  39.          "DOUBLE_HEIGHT_ON," /* doppelte Zeichenhöhe */
  40.          "DOUBLE_HEIGHT_OFF,"/* normale Zeichenhöhe */
  41.          "LQ_ON,"         /* Letter Quality an */
  42.          "LQ_OFF";         /*            und aus */
  43.    char *pt;
  44.    int opt_no,i;
  45.    if ((pt=strstr(opt,cmdstr))!=NULL)
  46.       /* merke string offset in pt falls gefunden */
  47.    {
  48.     for(i=0,opt_no=0;pt>opt+i;i++)
  49.      if (opt[i]==',') opt_no++;    /* zähle Kommas bis pt */
  50.     switch (opt_no)
  51.     {
  52.      /* Die Beispiele hier gelten für einen NEC P9 XL,
  53.     können aber wie erwähnt selbst konfiguriert werden.
  54.     write(4,...) bedeutet übrigens: schreibe auf
  55.     stdprn */
  56.      case 0 :
  57.       write(4,"\x1C""@",2);
  58.       break;
  59.      case 1 :
  60.       write(4,"\x1B""M""\x1C""S""\x1",5);
  61.       break;
  62.      case 2 :
  63.       write(4,"\x1C""S""\x0""\x1B""P",5);
  64.       break;
  65.      case 3 :
  66.       write(4,"\x1B""\xF",2);
  67.       break;
  68.      case 4 :
  69.       write(4,"\x12",1);
  70.       break;
  71.      case 5 :
  72.       write(4,"\x1B""0",2);
  73.       break;
  74.      case 6 :
  75.       write(4,"\x1B""2",2);
  76.       break;
  77.      case 7 :
  78.       write(4,"\x1B""C""\x19",3);
  79.       break;
  80.      case 8 :
  81.       write(4,"\x1B""C""\x0""\xC",4);
  82.       break;
  83.      case 9 :
  84.       write(4,"\x1B""-""\x1",3);
  85.       break;
  86.      case 10 :
  87.       write(4,"\x1B""-""\x0",3);
  88.       break;
  89.      case 11 :
  90.       write(4,"\x1C""V""\x1",3);
  91.       break;
  92.      case 12 :
  93.       write(4,"\x1C""V""\x0",3);
  94.       break;
  95.      case 13 :
  96.       write(4,"\x1B""x""\x1",3);
  97.       break;
  98.      case 14 :
  99.       write(4,"\x1B""x""\x0",3);
  100.       break;
  101.     }
  102.    }
  103.   }
  104. }