home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1994 #1 / monster.zip / monster / PROG_PAS / MGCOMTP0.ZIP / MG_FRC.DOC < prev    next >
Text File  |  1980-01-01  |  37KB  |  1,198 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.                             * ───────────────────────────────────────────── *                  /
  21.                           /                                                //
  22.                         /                                                 / /
  23.                       /                                                  / /
  24.                     /                                                   / /
  25.                   /                                                   /  /
  26.                 /                   MGCOMTP v0.9b                    /  /
  27.               /           Copyright 1994 by Mark Gauthier.         /   /
  28.             /                                                    /    /
  29.           /                                                     /    /
  30.         /                                                     /    /
  31.       /                                                     /     /
  32.     ┌──────────────────────────────────────────────────────┐     /
  33.     │                                                      │    /
  34.     │       HS    AA    CD   OH   RD   SD   TR   MR        │  /
  35.     │                                                      │/
  36.     └──────────────────────────────────────────────────────┘
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.      R O U T I N E S  D ' A C C E S  A U X  S O R T I E S  S E R I E S .
  51.  
  52.  
  53.  
  54.          QU'EST-CE QUE MGCOMTP:
  55.          ────────────────────
  56.  
  57.               C'est un "UNIT" pour Turbo Pascal qui contient des procédures
  58.          qui servent à gérer les sorties séries.  Il est possible de
  59.          gérer jusqu'à huit sorties séries simultanément et ce en
  60.          utilisant au choix, un "fossil" de communication comme X00 ou BNU
  61.          ou en utilisant un "interrupt" de communication interne.
  62.                     
  63.  
  64.          GÉNÉRALITÉS:
  65.          ────────────
  66.  
  67.               Ce logiciel est "shareware" de ce fait, je ne garantis
  68.          rien sinon qu'il va prendre de l'espace sur votre disque.
  69.          Vous êtes entièrement responsable des problèmes qui pourraient,
  70.          été trouvé, retourne #0.  Si un caractère a été trouvé,
  71.          survenir dû à l'utilisation de ce logiciel.
  72.  
  73.          NÉCESSAIRE:
  74.          ──────────
  75.  
  76.               Turbo Pascal version 5.5, 6, 7 ou Borland Pascal 7.0.
  77.               Changer le nom du fichier correspondant TP? pour TPU.
  78.  
  79.               MGCOMTP0.TP5 -> MGCOMTP0.TPU  ( TP 5.5                   )
  80.               MGCOMTP0.TP6 -> MGCOMTP0.TPU  ( TP 6.0                   )
  81.               MGCOMTP0.TP7 -> MGCOMTP0.TPU  ( TP 7.0, BP 7.0 Real Mode )
  82.               MGCOMTP0.TPP ->               ( BP 7.0 Protected mode    )
  83.  
  84.  
  85.          ENREGISTREMENT:
  86.          ──────────────
  87.  
  88.               Si vous planifiez utiliser ce logiciel, veuillez compléter
  89.          la feuille d'information ci-jointe, à la fin de ce document.
  90.  
  91.  
  92.  
  93.  
  94.          COMMENT ME CONTACTER:
  95.          ────────────────────
  96.  
  97.          Par messages électroniques, sur un système:
  98.  
  99.                                Fidonet à l'adresse
  100.                                1:242/818.5
  101.  
  102.                                FrancoMedia à l'adresse
  103.                                101:160/305.5
  104.  
  105.                 ou par la poste.
  106.  
  107.                                 MgCom / Mark Gauthier
  108.                                 58, Émilien─Frenette, Sainte─Thérèse.
  109.                                 Québec, Canada
  110.                                 J7E 5K3
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119. FUNCTION        OPENCOM
  120. ──────────────────────────────────────────────────────────────────────────
  121.  
  122.  
  123.         SYNTAXE:   OpenCom(ComPort:Byte; C: Connect_Type): Boolean;
  124.  
  125.         DESCRIPTION:
  126.  
  127.              Ouvre une sortie série, soit avec ou sans "fossil".
  128.              Dans le cas ou le type de connections est Ports, alors
  129.              réserve les "buffers" de transferts et installe "l'interrupt"
  130.              de communication.
  131.  
  132.         PARAMETRES:
  133.  
  134.              ComPort; le numéro de la sortie série (1─8) à ouvrir.
  135.  
  136.              C; le type d'ouverture, soit fossil ou ports.
  137.  
  138.         EXEMPLE:
  139.  
  140.              Begin
  141.                   If Not OpenCom(1,Fossil) Then Halt;
  142.                   {  Ouverture avec un fossil de communication de la
  143.                      sortie série numéros 1 (COM1).
  144.                   }
  145.              End.
  146.  
  147.              Begin
  148.                   If Not OpenCom(1,Ports) Then Halt;
  149.                   {  Ouverture avec les ports de la sortie série numéros 1
  150.                      (COM1).
  151.                   }
  152.              End.
  153.  
  154.  
  155.  
  156.  
  157.  
  158.  
  159. PROCEDURE       CLOSECOM
  160. ──────────────────────────────────────────────────────────────────────────
  161.  
  162.         SYNTAXE:   CloseCom(ComPort:Byte);
  163.  
  164.  
  165.         DESCRIPTION:
  166.  
  167.              Ferme une sortie série qui a préalablement été ouverte,
  168.              grâce à la fonction OpenCom.  Si le port a été ouvert
  169.              avec Ports, "l'interrupt" de communication va être retiré
  170.              et les "buffers" de transfert sont éliminés.
  171.  
  172.         PARAMETRES:
  173.  
  174.              ComPort; le numéro de la sortie série à fermer.
  175.  
  176.         EXEMPLE:
  177.  
  178.              Begin
  179.                   If Not OpenCom(1,Fossil) Then Halt; { Ouverture }
  180.                   CloseCom(1);                        { Fermeture }
  181.              End.
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188. PROCEDURE       CLOSEALLCOMS
  189. ──────────────────────────────────────────────────────────────────────────
  190.  
  191.         SYNTAXE:   CloseAllComs;
  192.  
  193.  
  194.         DESCRIPTION:
  195.  
  196.              Procédure qui fait exactement la même chose que la
  197.              procédure précédente (CloseCom) sauf que celle─ci
  198.              ferme la totalité des sorties séries qui ont préalablement
  199.              été ouvertes avec la fonction OpenCom.
  200.  
  201.         PARAMETRES:
  202.  
  203.              Auncun;
  204.  
  205.         EXEMPLE:
  206.  
  207.              Begin
  208.                   If Not OpenCom(1,Fossil) Then Halt; { Ouvre le COM1 }
  209.                   If Not OpenCom(2,Fossil) Then Halt; { Ouvre le COM2 }
  210.                   CloseAllComs;                       { Ferme tout.   }
  211.              End.
  212.  
  213.  
  214.  
  215.  
  216.  
  217.  
  218. PROCEDURE       HANGUP
  219. ──────────────────────────────────────────────────────────────────────────
  220.  
  221.         SYNTAXE:   HangUp;
  222.  
  223.  
  224.         DESCRIPTION:
  225.  
  226.              Procédure qui ferme la ligne pendant quelques 1/1000 de seconde.
  227.              Cette procédure utilise le "D.T.R." pour raccrocher.  Une autre
  228.              possibilité est d'envoyer "+++" au modem et d'attendre quelques
  229.              1/1000 secondes et d'envoyer 'ATH'+#13.
  230.  
  231.         PARAMETRES:
  232.  
  233.              Auncun;
  234.  
  235.         EXEMPLE:
  236.  
  237.              Begin
  238.                   If Not OpenCom(1,FOssil) Then;   { Ouverture du COM1     }
  239.                   {...}                            { Quelque chose...      }
  240.                   HangUp;                          { Fermeture de la ligne }
  241.                   CloseAllComs;                    { Fermetue du port.     }
  242.              End.
  243.  
  244.  
  245.  
  246.  
  247.  
  248.  
  249. FUNCTION        CHECKCD
  250. ──────────────────────────────────────────────────────────────────────────
  251.  
  252.         SYNTAXE:   CheckCD(ComPort:Byte): Boolean;
  253.  
  254.  
  255.         DESCRIPTION:
  256.  
  257.              Fonction qui vérifie le statu du "carrier detect" d'un
  258.              modem, sur une certaine sortie série.  Si le "carrier detect"
  259.              est actif, alors la fonction retourne "TRUE" dans le cas
  260.              contraire, le retour est "FALSE".
  261.  
  262.         PARAMETRES:
  263.  
  264.              ComPort; le numéro de la sortie série à vérifier.
  265.  
  266.         EXEMPLE:
  267.  
  268.              Const Esc = 27;
  269.              Var Ch:Char;
  270.              Begin
  271.                   If Not OpenCom(1,Fossil) Then Halt; { Ouvre le COM1        }
  272.                   Repeat                              { Répétition           }
  273.                         Ch:=ReadKey;                  { Entré d'un caractère }
  274.                         Write(Ch);                    { Ecriture             }
  275.                         If Not CheckCD(1) Then        { Vérification du CD   }
  276.                         Write('Ligne coupe...');      { Le CD est off        }
  277.                   Until Ch=Esc;                       { tant que <> ESC      }
  278.              End.
  279.  
  280.  
  281.  
  282.  
  283.  
  284.  
  285. PROCEDURE       SETDTR
  286. ──────────────────────────────────────────────────────────────────────────
  287.  
  288.         SYNTAXE:   SetDTR(ComPort:Byte; S:Boolean);
  289.  
  290.  
  291.         DESCRIPTION:
  292.  
  293.              Procédure qui sert à déterminer le statu du "D.T.R." sur
  294.              le modem d'une certaine sortie série.  Si S = "TRUE" alors,
  295.              le "D.T.R." sera "High" sur le COM, si S = "FALSE" alors
  296.              le "D.T.R." sera "Low" sur le COM.
  297.  
  298.  
  299.         PARAMETRES:
  300.  
  301.              ComPort; le numéro de la sortie série à changer.
  302.              S; Spécifit si le DTR doit etre "Low" ou "High".
  303.  
  304.         EXEMPLE:
  305.       
  306.              Uses Crt;
  307.              Begin
  308.                   If Not OpenCom(1,Fossil) Then Halt; { Ouverture du COM   }
  309.                   SetDTR(1,TRUE);                     { DTR (COM1) "High"  }
  310.                   Delay(50);                          { Pause de 50/1000s  }
  311.                   SetDTR(1,FALSE);                    { DTR (COM1) "Low"   }
  312.              End.
  313.  
  314.  
  315.  
  316.  
  317.  
  318.  
  319. PROCEDURE       PURGEINPUT
  320. ──────────────────────────────────────────────────────────────────────────
  321.  
  322.         SYNTAXE:   PurgeInput(ComPort:Byte);
  323.  
  324.  
  325.         DESCRIPTION:
  326.         
  327.              Procédure qui détruit tous les caractères qui sont
  328.              présentement dans le "buffer" d'entrée, soit les caractères
  329.              qui sont reçus.
  330.  
  331.         PARAMETRES:
  332.  
  333.              ComPort; le numéro de la sortie série à purger.
  334.  
  335.         EXEMPLE:
  336.  
  337.              Begin
  338.                   If Not OpenCom(1,Fossil) Then Halt; { Ouverture du COM     }
  339.                   PurgeInput(1);                      { Purge "INPUT" (COM1) }
  340.              End.
  341.  
  342.  
  343.  
  344.  
  345.  
  346.  
  347. PROCEDURE       PURGEOUTPUT
  348. ──────────────────────────────────────────────────────────────────────────
  349.  
  350.         SYNTAXE:   PurgeOutput(ComPort:Byte);
  351.  
  352.  
  353.         DESCRIPTION:
  354.       
  355.              Procédure qui détruit tous les caractères qui sont
  356.              présentement dans le "buffer" de sortie, soit les caractères
  357.              qui sont à envoyer.
  358.  
  359.         PARAMETRES:
  360.  
  361.              ComPort; le numéro de la sortie série à purger.
  362.              
  363.         EXEMPLE:
  364.                                  
  365.              Begin
  366.                   If Not OpenCom(1,Fossil) Then Halt; { Ouverture du COM      }
  367.                   PurgeOutput(1);                     { Purge "OUTPUT" (COM1) }
  368.              End.
  369.  
  370.  
  371.  
  372.  
  373.  
  374.  
  375. PROCEDURE       FLUSHOUTPUT
  376. ──────────────────────────────────────────────────────────────────────────
  377.  
  378.         SYNTAXE:   FlushOutPut(ComPort:Byte);
  379.  
  380.  
  381.         DESCRIPTION:
  382.  
  383.              Procedure qui s'assure que tous les caractères contenu
  384.              dans le "buffer" de sortie, soient envoyés avant de
  385.              revenir.
  386.  
  387.         PARAMETRES:
  388.  
  389.              ComPort; le numéro de la sortie série a "flusher".
  390.  
  391.         EXEMPLE:
  392.  
  393.              Begin
  394.                   If Not OpenCom(1,Fossil) Then Halt; { Ouverture du COM      }
  395.                   FlushOutput(1);                     { Flush "OUTPUT" (COM1) }
  396.              End.
  397.  
  398.  
  399.  
  400.  
  401.  
  402.  
  403. FUNCTION        READCH
  404. ──────────────────────────────────────────────────────────────────────────
  405.  
  406.         SYNTAXE:    ReadCh(ComPort:Byte): Char;
  407.  
  408.  
  409.         DESCRIPTION:
  410.  
  411.              Fonction qui regarde si un caractère est disponible sur
  412.              une certaine sortie série.  Si un caractère est présent,
  413.              retourne celui─ci dans la valeur de la fonction.  Si
  414.              aucun caractère est disponible retourne #0.
  415.  
  416.         PARAMETRES:
  417.  
  418.              ComPort; le numéro de la sortie série où il faut
  419.                       tenter de récupérer un caractère.
  420.         
  421.         EXEMPLE:
  422.  
  423.              Var Ch:Char;
  424.              Begin
  425.                   If Not OpenCom(1,Fossil) Then Halt; { Ouverture du COM1   }
  426.                   Repeat                              { Répétition          }
  427.                         Ch:=ReadCh(1);                { Scan le COM1        }
  428.                   Until Ch <> #0;                     { Si un caractère est }
  429.              End.                                     { reçu alors exit...  }
  430.  
  431.  
  432.  
  433.  
  434.  
  435.  
  436. FUNCTION        READCHW
  437. ──────────────────────────────────────────────────────────────────────────
  438.  
  439.         SYNTAXE:    ReadChW(ComPort:Byte): Char;
  440.  
  441.  
  442.         DESCRIPTION:
  443.  
  444.              Fonction qui regarde si un caractère est disponible sur
  445.              une certaine sortie série.  Si un caractère est présent,
  446.              retourne celui─ci dans la valeur de la fonction.  Si
  447.              aucun caractère est disponible alors attend qu'un
  448.              caractère se présente et retourne celui─ci dans la valeur
  449.              de la fonction.
  450.  
  451.         PARAMETRES:
  452.  
  453.              ComPort; le numéro de la sortie série où il faut
  454.                       récupérer un caractère.
  455.         
  456.         EXEMPLE:
  457.  
  458.              Var Ch:Char;
  459.              Begin
  460.                   If Not OpenCom(1,Fossil) Then Halt; { Ouverture du COM1   }
  461.                   Ch:=ReadChW(1);                     { "Scan" le COM1      }
  462.              End.
  463.  
  464.  
  465.  
  466.  
  467.  
  468.  
  469. FUNCTION        MULTIRECVCH
  470. ──────────────────────────────────────────────────────────────────────────
  471.  
  472.         SYNTAXE:    MultiRecvCh(var ComPorts: Byte): Char;
  473.  
  474.  
  475.         DESCRIPTION:
  476.  
  477.              Fonction qui retourne un caractère.  Cette procédure cherche
  478.              un caractère dans les sorties séries qui sont spécifiées
  479.              dans le paramètre ComPorts.  Si après avoir vérifié toutes
  480.              les sorties spécifiées dans Comports, si aucun caractère n'a
  481.              il est dans la valeur de la fonction et la variable
  482.              Comports contient le numéro de la sortie série où le
  483.              caractère a été récupéré.
  484.  
  485.  
  486.         PARAMETRES:
  487.  
  488.              ComPorts;  Contient les sorties séries à vérifier.
  489.  
  490.                         7 6 5 4 3 2 1 0       (Bits)
  491.                         │ │ │ │ │ │ │ └> COM1
  492.                         │ │ │ │ │ │ └──> COM2
  493.                         │ │ │ │ │ └────> COM3
  494.                         │ │ │ │ └──────> COM4
  495.                         │ │ │ └────────> COM5
  496.                         │ │ └──────────> COM6
  497.                         │ └────────────> COM7
  498.                         └──────────────> COM8
  499.  
  500.         EXEMPLE:
  501.  
  502.              Var ComPorts:Byte;
  503.                  Ch:Char;
  504.              Begin
  505.                   If Not OpenCom(1,Fossil) Then Halt; { Ouvre le COM1       }
  506.                   If Not OpenCom(3,Fossil) Then Halt; { Ouvre le COM3       }
  507.                   ComPorts:=1+4;                      { Com1+Com3           }
  508.                   Repeat
  509.                         Ch:=MultiRecvCh(ComPorts);    { "Scan" COM1 et COM3 }
  510.                   Until Ch <> #0;                     { Tant que <> #0      }
  511.                   WriteLn('Le caractere ',ch,' vient de la sortie',
  512.                           'serie ',ComPorts);
  513.              End.
  514.  
  515.  
  516.  
  517.  
  518.  
  519.  
  520. FUNCTION        MULTIRECVCHW
  521. ──────────────────────────────────────────────────────────────────────────
  522.  
  523.         SYNTAXE:    MultiRecvChW(var ComPorts: Byte): Char;
  524.  
  525.  
  526.         DESCRIPTION:
  527.  
  528.              Fonction qui retourne un caractère.  Cette procédure prend
  529.              un caractère dans la première sortie série spécifiées
  530.              qui indique un caractère disponible.  Si toutes les sorties
  531.              séries non pas de caractère en attente, alors la procédure
  532.              attend qu'un caractère se présente.  A la sortie, le paramètre
  533.              ComPorts contient le numéro de la sortie où le caractère a
  534.              été obtenu.
  535.  
  536.  
  537.         PARAMETRES:
  538.  
  539.              ComPorts;  Contient les sorties séries à vérifier.
  540.  
  541.                         7 6 5 4 3 2 1 0       (Bits)
  542.                         │ │ │ │ │ │ │ └> COM1
  543.                         │ │ │ │ │ │ └──> COM2
  544.                         │ │ │ │ │ └────> COM3
  545.                         │ │ │ │ └──────> COM4
  546.                         │ │ │ └────────> COM5
  547.                         │ │ └──────────> COM6
  548.                         │ └────────────> COM7
  549.                         └──────────────> COM8
  550.         EXEMPLE:
  551.  
  552.              Var ComPorts:Byte;
  553.                  Ch:Char;
  554.              Begin
  555.                   If Not OpenCom(1,Fossil) Then Halt; { Ouvre le COM1       }
  556.                   If Not OpenCom(3,Fossil) Then Halt; { Ouvre le COM3       }
  557.                   ComPorts:=1+4;                      { Com1+Com3           }
  558.                   Ch:=MultiRecvChW(ComPorts);         { "Scan" COM1 et COM3 }
  559.              End.
  560.  
  561.  
  562.  
  563.  
  564.  
  565.  
  566. FUNCTION        READBLOCK
  567. ──────────────────────────────────────────────────────────────────────────
  568.  
  569.         SYNTAXE:    ReadBlock(ComPort:Byte; BufPtr: Pointer;
  570.                               MaxRead:Word): Word;
  571.  
  572.  
  573.         DESCRIPTION:
  574.  
  575.              Fonction qui fait la lecture du "buffer" d'entrée d'une sortie             série et transfert du "buffer" de communication au "buffer"
  576.              déclaré par l'usagé, les données.  Le nombre total de caractères
  577.              transférés se trouve dans la valeur de la fonction.
  578.  
  579.         PARAMETRES:
  580.  
  581.              ComPort; le numéro de la sortie série d'où on lit les
  582.                       données.
  583.  
  584.              BufPtr;  l'adresse du "buffer" où il faut envoyer les données
  585.                       lues dans le "buffer" de la sortie série spécifiée.
  586.                                                                      
  587.              MaxRead; le nombre maximum de caractères à lire.  Normalement
  588.                       la grosseur de votre "buffer".
  589.  
  590.         EXEMPLE:
  591.  
  592.              Var BytesRead:Word;
  593.                  Buf : Array[1..10] of Char;
  594.              Begin
  595.                   If Not OpenCom(1,Fossil) Then Halt;         { Ouvre COM1  }
  596.                   BytesRead:=ReadBlock(1,Addr(Buf[1]),Size(Buf)); { Lecture }
  597.              End.
  598.  
  599.  
  600.  
  601.  
  602.  
  603.  
  604. FUNCTION        WRITECH
  605. ──────────────────────────────────────────────────────────────────────────
  606.  
  607.         SYNTAXE:    WriteCh(ComPort:Byte; Ch:Char): Boolean;
  608.  
  609.  
  610.         DESCRIPTION:
  611.  
  612.              Fonction qui envoi un caractère dans une certaine sortie
  613.              série.  Si le caractère est accepté, alors retourne
  614.              "TRUE", si le caractère n'est pas accepté, ex: si le "buffer"
  615.              est plein, retourne "FALSE".
  616.  
  617.         PARAMETRES:
  618.  
  619.              ComPort; Le numéro de la sortie série dans laquelle on
  620.                       doit envoyer un caractère.
  621.  
  622.              Ch;      Le caractère qu'il faut envoyer dans la sortie
  623.                       série.
  624.  
  625.         EXEMPLE:
  626.  
  627.              Begin
  628.                    If Not OpenCom(1,Fossil) Then Halt; { Ouvre le COM1     }
  629.                    If Not WriteCh(1,'!') Then          { "Send" caractère  }                   Write('Le "buffer" est plein.');
  630.              End.
  631.  
  632.  
  633.  
  634.  
  635.  
  636.  
  637. PROCEDURE       WRITECHW
  638. ──────────────────────────────────────────────────────────────────────────
  639.  
  640.         SYNTAXE:   WriteChW(ComPort:Byte; Ch:Char);
  641.  
  642.  
  643.         DESCRIPTION:
  644.  
  645.              Procédure qui envoi un certain caractère dans une certaine
  646.              sortie série.  Si il n'y a pas de place dans le "buffer" de
  647.              sortie, alors la procédure attend qu'il y est de l'espace
  648.              et envoi le caractère avant de revenir.
  649.  
  650.         PARAMETRES:
  651.  
  652.              ComPort; Le numéro de la sortie série dans laquelle on
  653.                       doit envoyer un caractère.
  654.  
  655.              Ch;      Le caractère qu'il faut envoyer dans la sortie
  656.                       série.
  657.  
  658.         EXEMPLE:
  659.  
  660.              Begin
  661.                    If Not OpenCom(1,Fossil) Then Halt; { Ouvre le COM1       }
  662.                    WriteChW(1,'!')                     { Envoi le caractère  }
  663.              End.
  664.  
  665.  
  666.  
  667.  
  668.  
  669.  
  670. PROCEDURE       WRITESTRW
  671. ──────────────────────────────────────────────────────────────────────────
  672.  
  673.         SYNTAXE:   WriteStrW(ComPort:Byte; S:String);
  674.  
  675.  
  676.         DESCRIPTION:
  677.  
  678.              Procédure qui envoi une certaine chaîne de caractère dans
  679.              une certaine sortie série.  S'il n'y a pas de place dans le
  680.              "buffer" de sortie, alors la procédure attend qu'il y est de
  681.              l'espace avant de revenir.
  682.  
  683.         PARAMETRES:
  684.  
  685.              ComPort; Le numéro de la sortie série dans laquelle il faut
  686.                       envoyer la chaîne de caractères.
  687.  
  688.              S;       Une chaîne de caractère quelconque.
  689.  
  690.         EXEMPLE:
  691.  
  692.              Begin
  693.                    If Not OpenCom(1,Fossil) Then Halt; { Ouvre le COM1    }
  694.                    WriteStrW(1,'Allo!!!')              { Envoit la chaîne }
  695.              End.
  696.  
  697.  
  698.  
  699.  
  700.  
  701.  
  702. PROCEDURE       WRITESTRLNW
  703. ──────────────────────────────────────────────────────────────────────────
  704.  
  705.         SYNTAXE:   WriteStrLnW(ComPort:Byte; S:String);
  706.  
  707.  
  708.         DESCRIPTION:
  709.  
  710.              Procédure qui envoi une certaine chaîne de caractère plus
  711.              les codes "LineFeed" et "Cariage Return" dans une certaine sortie
  712.              série.  S'il n'y a pas de place dans le "buffer" de sortie,
  713.              alors la procédure attend qu'il y est de l'espace avant
  714.              de revenir.
  715.  
  716.         PARAMETRES:
  717.  
  718.              ComPort; Le numéro de la sortie série dans laquelle il
  719.                       faut envoyer la chaîne de caractère.
  720.  
  721.              S;       Une chaîne de caractère quelconque.
  722.  
  723.         EXEMPLE:
  724.  
  725.              Begin
  726.                    If Not OpenCom(1,Fossil) Then Halt; { Ouvre le COM1    }
  727.                    WriteStrLnW(1,'Allo!!!')            { Envoit la chaîne }
  728.              End.
  729.  
  730.  
  731.  
  732.  
  733.  
  734.  
  735. PROCEDURE       WRITESTRDELAY
  736. ──────────────────────────────────────────────────────────────────────────
  737.  
  738.         SYNTAXE:   WriteStrDelay(ComPort:Byte; S:String; x: Word);
  739.  
  740.  
  741.         DESCRIPTION:
  742.  
  743.              Procédure qui envoi une certaine chaîne de caractère
  744.              dans une certaine sortie série. En faisant une pause de
  745.              x 1/1000sec entre chaque caractère.  S'il n'y a pas de place
  746.              dans le "buffer" de sortie, alors la procédure attend qu'il y
  747.              est de l'espace avant de revenir.
  748.  
  749.         PARAMETRES:
  750.  
  751.              ComPort; Le numéro de la sortie série dans laquelle il
  752.                       faut envoyer la chaîne de caractère.
  753.  
  754.              S;       Une chaîne de caractère quelconque.
  755.  
  756.              X;       Le nombre de 1/1000sec entre chaque envoi d'un
  757.                       caractère.
  758.  
  759.         EXEMPLE:
  760.  
  761.              Begin
  762.                    If Not OpenCom(1,Fossil) Then Halt; { Ouvre le COM1    }
  763.                    WriteStrDelay(1,'Allo!!!',55)       { Envoit la chaîne }
  764.              End.
  765.  
  766.  
  767.  
  768.  
  769.  
  770.  
  771. PROCEDURE       WRITESTRLNDELAY
  772. ──────────────────────────────────────────────────────────────────────────
  773.  
  774.         SYNTAXE:   WriteStrLnDelay(ComPort: Byte; S:String; x: Word);
  775.  
  776.  
  777.         DESCRIPTION:
  778.  
  779.              Procédure qui envoi une certaine chaîne de caractère
  780.              dans une certaine sortie série plus les codes "LineFeed" et
  781.              "Cariage Return". En faisant une pause de x 1/1000sec entre
  782.              chaque caractère.  S'il n'y a pas de place dans le "buffer" de
  783.              sortie, alors la procédure attend qu'il y est de l'espace avant
  784.              de revenir.
  785.  
  786.         PARAMETRES:
  787.  
  788.              ComPort; Le numéro de la sortie série dans laquelle il
  789.                       faut envoyer la chaîne de caractère.
  790.  
  791.              S;       Une chaîne de caractère quelconque.
  792.  
  793.              X;       Le nombre de 1/1000sec entre chaque envoi d'un
  794.                       caractère.
  795.  
  796.         EXEMPLE:
  797.  
  798.              Begin
  799.                    If Not OpenCom(1,Fossil) Then Halt; { Ouvre le COM1    }
  800.                    WriteStrLnDelay(1,'Allo!!!',55)     { Envoit la chaîne }
  801.              End.
  802.  
  803.  
  804.  
  805.  
  806.  
  807.  
  808. FUNCTION        WRITEBLOCK
  809. ──────────────────────────────────────────────────────────────────────────
  810.  
  811.         SYNTAXE:    WriteBlock(ComPort:Byte; BufPtr:Pointer;
  812.                                MaxSend:Word): Word;
  813.  
  814.  
  815.         DESCRIPTION:
  816.  
  817.              Fonction qui transfert un "buffer" déclaré par l'usagé,
  818.              dans le "buffer" de sortie d'une certaine sortie série.
  819.              La valeur retournée par la fonction, est la quantité
  820.              en "bytes"  de caractères qui ont été acceptés.
  821.  
  822.         PARAMETRES:
  823.  
  824.              ComPort; Le numéro de la sortie série dans laquelle il faut
  825.                       envoyer un certain buffer.
  826.  
  827.              BufPtr;  L'adresse du "buffer" à transmettre.
  828.  
  829.              MaxSend; Le nombre maximum de caractères à transmettre,
  830.                       generalement, c'est la grosseur du "buffer" de l'usagé.
  831.  
  832.         EXEMPLE:
  833.  
  834.              Const Buf:Array[1..5] of Char = ('1','2','3','4','5');
  835.                    x:Word;
  836.              Begin
  837.                    If Not OpenCom(1,Fossil) Then Halt; { Ouvre le COM1     }
  838.                    x:=WriteBlock(1,Addr(Buf[1]),SizeOf(Buf)); { Envoit le  }
  839.                                                               { Buffer.    }
  840.                    { x = le nombre de caractères transmit.                 }
  841.              End.
  842.  
  843.  
  844.  
  845.  
  846.  
  847.  
  848. PROCEDURE       MULTISENDCHW
  849. ──────────────────────────────────────────────────────────────────────────
  850.  
  851.         SYNTAXE:   MultiSendChW(ComPorts: Byte; ch:Char);
  852.  
  853.  
  854.         DESCRIPTION:
  855.  
  856.              Procédure qui envoi un caractère dans plusieurs sorties
  857.              séries spécifiées par le paramètre ComPorts.  Si un "buffer"
  858.              de sortie d'un des COM est plein, alors la procédure attend
  859.              qu'il y est de l'espace et envoi le caractère avant de revenir.
  860.  
  861.         PARAMETRES:
  862.  
  863.              ComPorts;  Contient les sorties séries à "scanner".
  864.  
  865.                         7 6 5 4 3 2 1 0       (Bits)
  866.                         │ │ │ │ │ │ │ └> COM1
  867.                         │ │ │ │ │ │ └──> COM2
  868.                         │ │ │ │ │ └────> COM3
  869.                         │ │ │ │ └──────> COM4
  870.                         │ │ │ └────────> COM5
  871.                         │ │ └──────────> COM6
  872.                         │ └────────────> COM7
  873.                         └──────────────> COM8
  874.  
  875.              Ch;        Contient le caractère à envoyer dans les sorties
  876.                         séries indiquées.
  877.  
  878.         EXEMPLE:
  879.  
  880.              Var ComPorts:Byte;
  881.                  Ch:Char;
  882.              Begin
  883.                   If Not OpenCom(1,Fossil) Then Halt; { Ouvre le COM1      }
  884.                   If Not OpenCom(3,Fossil) Then Halt; { Ouvre le COM3      }
  885.                   ComPorts:=1+4;                      { Com1+Com3          }
  886.                   Ch:=#27;
  887.                   MultiSendChW(ComPorts,Ch); { Envoit dans le COM1 et COM3 }
  888.              End.
  889.  
  890.  
  891.  
  892.                      
  893.  
  894.  
  895. FUNCTION        MULTISENDCH
  896. ──────────────────────────────────────────────────────────────────────────
  897.  
  898.         SYNTAXE:    MultiSendCh(ComPorts: Byte; ch:Char): Byte;
  899.  
  900.  
  901.         DESCRIPTION:
  902.  
  903.              Fonction qui tente d'envoyer un certain caractère, dans
  904.              une ou plusieurs sorties séries.  Si le "buffer" de sortie
  905.              d'un port de communication est plein, alors la fonction
  906.              n'envoi pas dans ce port, le caractère.  Le résultat de
  907.              la fonction est l'indication qui vous dit quels COM ont
  908.              accepté le caractère.  La définition est la même que
  909.              pour le parametre Comports c'est─à─dire que la bit 0 = COM1 et
  910.              la bit 1 = COM2, etc.
  911.  
  912.         PARAMETRES:
  913.  
  914.              ComPorts;  Contient les sorties séries à vérifier.
  915.  
  916.                         7 6 5 4 3 2 1 0       (Bits)
  917.                         │ │ │ │ │ │ │ └> COM1
  918.                         │ │ │ │ │ │ └──> COM2
  919.                         │ │ │ │ │ └────> COM3
  920.                         │ │ │ │ └──────> COM4
  921.                         │ │ │ └────────> COM5
  922.                         │ │ └──────────> COM6
  923.                         │ └────────────> COM7
  924.                         └──────────────> COM8
  925.  
  926.              Ch;        Contient le caractère à envoyer dans les sorties
  927.                         séries indiquées.
  928.  
  929.         EXEMPLE:
  930.  
  931.              Var ComPorts:Byte;
  932.                  Ch:Char;
  933.                  Accept:Byte;
  934.              Begin
  935.                   If Not OpenCom(1,Fossil) Then Halt; { Ouvre le COM1       }
  936.                   If Not OpenCom(3,Fossil) Then Halt; { Ouvre le COM3       }
  937.                   ComPorts:=1+4;                      { Com1+Com3           }
  938.                   Ch:=#27;
  939.                   Accept:=MultiSendCh(ComPorts,Ch);   { Envoit dans le COM1
  940.                                                         et COM3             }
  941.              End.
  942.  
  943.  
  944.  
  945.  
  946.  
  947.  
  948. PROCEDURE       SETHANDSHAKE
  949. ──────────────────────────────────────────────────────────────────────────
  950.  
  951.         SYNTAXE:   SetHandShake(ComPort:Byte; Hard, Soft: Boolean);
  952.  
  953.  
  954.         DESCRIPTION:
  955.  
  956.               Procédure qui change le mode de vérification des
  957.               transferts.  Si Hard est "TRUE", alors le mode RTS/CTS
  958.               est actif, alors qu'il est désactivé si Hard est "FALSE".
  959.               C'est la même chose pour Soft, sauf que Soft représente
  960.               le mode Xon/Xoff.
  961.  
  962.         PARAMETRES:
  963.  
  964.               ComPort; Le numéro de la sortie série à modifier.
  965.  
  966.               Hard;    Le status du mode RTS/CTS.
  967.  
  968.               Soft;    Le Status du mode Xon/Xoff.
  969.  
  970.         EXEMPLE:
  971.  
  972.               Begin
  973.                    If Not OpenCom(1,Fossil) Then Halt; { Ouvre le COM1      }
  974.                    SetHandShake(1,TRUE,TRUE);          { COM1 <─RTS/CTS on  }
  975.                                                        {       Xon/Xoff on  }
  976.               End.
  977.  
  978.  
  979.  
  980.  
  981.  
  982.  
  983. PROCEDURE       SETPARAMS
  984. ──────────────────────────────────────────────────────────────────────────
  985.  
  986.         SYNTAXE:  SetParams(ComPort:Byte; Baud:LongInt; WordSize:Byte;
  987.                             Parity:Char; StopBits:Byte);
  988.  
  989.  
  990.         DESCRIPTION:
  991.  
  992.               Modifie les paramètres de communication d'une certaine
  993.               sortie série.
  994.  
  995.         PARAMETRES:
  996.  
  997.               ComPort; Le numéro de la sortie série a modifier.
  998.  
  999.               Baud;    La vitesse de transmition
  1000.                        Si : Port ─> (300─115200) : Fossil ─> (300─38400)
  1001.  
  1002.               WordSize; La grosseur des transmition, 5,6,7 ou 8 Bits.
  1003.  
  1004.               Parity;   Le type de parity soit 'N' ─> None,
  1005.                                                'O' ─> Odd,
  1006.                                                'E' ─> Even.
  1007.  
  1008.         EXEMPLE:
  1009.  
  1010.               Begin
  1011.                    If Not OpenCom(1,Fossil) Then Halt; { Ouvre le COM1       }
  1012.                    SetParams(1,2400,8,'N',1);          { Change le COM1      }
  1013.               End.
  1014.  
  1015.  
  1016.  
  1017.  
  1018.  
  1019.  
  1020. PROCEDURE       SETCOMHARDWARE
  1021. ──────────────────────────────────────────────────────────────────────────
  1022.  
  1023.         SYNTAXE:   SetComHardWare(ComPort:Byte; ComAddr, ComIntr: Word);
  1024.  
  1025.  
  1026.         DESCRIPTION:
  1027.  
  1028.               Change l'adresse de la sortie série ou le numéro de
  1029.               "l'interrupt" utilise.  Cette procédure n'a d'éffet que
  1030.               sur les sorties séries ouvertes avec la manière PORTS,
  1031.               elle ne fait absolument rien aux sorties ouvertes avec un
  1032.               "fossil".
  1033.  
  1034.         PARAMETRES:
  1035.  
  1036.               ComPort; Le numéro de la sortie série à modifier.
  1037.  
  1038.               ComAddr; L'adresse hardware de la sortie série.
  1039.  
  1040.               ComIntr; L'interrupt à utiliser pour communiquer.
  1041.  
  1042.  
  1043.         EXEMPLE:
  1044.  
  1045.               { Le standart pour COM1 = ADDR :$3F8 et INTR 4 }
  1046.  
  1047.               Begin
  1048.                    If Not OpenCom(1,Ports) Then Halt; { Ouvre le COM1       }
  1049.                    SetComHardWare(1,$3F8,5);          { Change le COM1      }
  1050.               End.
  1051.  
  1052.  
  1053.  
  1054.  
  1055.  
  1056.  
  1057. FUNCTION        GETFOSSILNAME
  1058. ──────────────────────────────────────────────────────────────────────────
  1059.  
  1060.         SYNTAXE:    GetFossilName (ComPort:Byte; var ID: String): Boolean;
  1061.  
  1062.  
  1063.         DESCRIPTION:
  1064.  
  1065.               Fonction qui retourne le nom du "fossil" qui est utilisé.
  1066.               Si aucun "fossil" n'est détecté, alors la fonction retourne
  1067.               "FALSE".
  1068.  
  1069.         PARAMETRES:
  1070.  
  1071.               ComPort; Le numéro de la sortie série à vérifier.
  1072.  
  1073.               ID;      La variable qui contiendra le nom du fossil,
  1074.                        contient une valeur indeterminée si la function
  1075.                        retourne "FALSE".
  1076.  
  1077.         EXEMPLE:
  1078.  
  1079.               Var Nom:String;
  1080.               Begin
  1081.                    If Not OpenCom(1,Fossil) Then Halt; { Ouvre le COM1    }
  1082.                    GetFossilName(1,Nom);               { Récupère le nom. }
  1083.               End.
  1084.  
  1085.  
  1086.  
  1087.  
  1088.  
  1089.  
  1090. FUNCTION        GETSTATUS
  1091. ──────────────────────────────────────────────────────────────────────────
  1092.  
  1093.         SYNTAXE:    GetStatus(ComPort:Byte): Word;
  1094.  
  1095.  
  1096.         DESCRIPTION:
  1097.  
  1098.               Fonction qui retourne le statu d'une certaine sortie
  1099.               série.  A noter que le type d'information est différent
  1100.               selon que vous avez ouvert la sortie série avec
  1101.               la manière Ports ou Fossil.
  1102.  
  1103.  
  1104.              Si le comport à été ouvert avec le FOSSIL:
  1105.  
  1106.               14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 (Bits)
  1107.                │  │          │ │ │
  1108.                │  │          │ │ └───────────────> "Carrier Detect".
  1109.                │  │          │ └─────────────────> caractère disponible.
  1110.                │  │          └───────────────────> "buffer" d'entré trop plein.
  1111.                │  │
  1112.                │  │
  1113.                │  └──────────────────────────────> "buffer" de sortie non plein.
  1114.                └─────────────────────────────────> "buffer" de sortie VIDE.
  1115.  
  1116.  
  1117.               Si le comport à été ouvert avec les PORTS:
  1118.  
  1119.               7 6 5 4 3 2 1 0 (Bits)
  1120.               │ │ │ │ │ │ │ └──> "buffer" d'entre vide.
  1121.               │ │ │ │ │ │ └────> "buffer" d'entre plein.
  1122.               │ │ │ │ │ └──────> "buffer" de sortie vide.
  1123.               │ │ │ │ └────────> "buffer" de sortie plein.
  1124.               │ │ │ └──────────> "buffer" d'entrée trop plein.
  1125.               │ │ └────────────> "buffer" de sortie trop plein.
  1126.               │ └──────────────> Status du mode RTS/CTS.
  1127.               └────────────────> Status du mode Xon/Xoff.
  1128.  
  1129.         PARAMETRES:
  1130.  
  1131.               ComPort; Le numéro de la sortie série à vérifier.
  1132.  
  1133.         EXEMPLE:
  1134.  
  1135.               Var Info:Word;
  1136.               Begin
  1137.                    If Not OpenCom(1,Fossil) Then Halt; { Ouvre le COM1      }
  1138.                    Info:=GetStatus(1);                 { Récupère le status }
  1139.                    If Info and 256 = 256 Then;   { caractère disponible ?   }
  1140.               End.
  1141.  
  1142.  
  1143.                       ENRIGISTREMENT DE MGCOM_TP v0.9
  1144.                       ───────────────────────────────
  1145.  
  1146.  
  1147. Nom de famille  : ______________________________
  1148.  
  1149. Prénom          : ______________________________
  1150.  
  1151. Adresse         : ____________________________________________
  1152.  
  1153. Ville           : ________________________
  1154.  
  1155. Province/État   : ____________________
  1156.  
  1157. Pays            : _________________
  1158.  
  1159. Code Postal/ZIP : _________________
  1160.  
  1161. Date            : _________________
  1162.  
  1163.  
  1164. Ou avez─vous eu MgCom ? _______________________________________________
  1165.  
  1166.  
  1167. ***********************************************************************
  1168. Un paiement de 25$CAN ou 20$US doit être fait au nom de Mark Gauthier,
  1169. par chèque ou mandat poste, si vous envoyez de l'argent vous prenez le
  1170. risque qu'il ne se rende pas...
  1171. ***********************************************************************
  1172.  
  1173. Commentaires / Sugestions.
  1174.  
  1175.         : ___________________________________________________________________
  1176.  
  1177.           ___________________________________________________________________
  1178.  
  1179.           ___________________________________________________________________
  1180.  
  1181.           ___________________________________________________________________
  1182.  
  1183.           ___________________________________________________________________
  1184.  
  1185.           ___________________________________________________________________
  1186.  
  1187.           ___________________________________________________________________
  1188.  
  1189.  
  1190.  
  1191.                                 MgCom / Mark Gauthier
  1192.                                 58 Emilien─Frenette, Sainte─Thérèse
  1193.                                 PQ, Canada
  1194.                                 J7E 5K3
  1195.                                 
  1196.  
  1197.  
  1198.