Newsgroup: it.comp.lang.pascal
Titolo: Interfacciamento e impostazioni seriale

Salve a tutti.
Avrei bisogno di scrivere un programmino in pascal che mi acquisisca dati
dalla porta seriale e mi faccia un eco formattato sul video.
Il problema è che non ho la minima idea di come poter impostare la seriale
(start, stop, parità ecc) e di quale comando usare per leggere i dati.
Avete qualche documento o riferimento che mi possa aiutare?
--
Grazie mille
Daniele Giangrazi

Prova con interrupt Dos 14 non so se funziona con il Winzoz, con il vecchio
dos andava bene, di seguito ti riporto una libreria fatta per dos
unit TrDati;
interface
Function  Test_Rs232 (n:Word) :Boolean;
Procedure Dtra1;
Procedure Set_Com(Com : Word);
Procedure TrasmettiRs232(Com, Code : Word);
function  RiceviRs232(Com : Word;Comp2  : byte) : Integer;
implementation
Function Test_Rs232 (n:Word) :Boolean;
{ n: Numero della porta da settare
  Restiuisce False se non e collegato alcun computer altrimenti
  restituisce TRUE}
Var Test:Integer;
begin
  asm
    mov  ah, 03h                  {Test sulla porta}
    mov  al, 00
    mov  dx, n
    int  14h
    test ah, 20h          { Testa se S collegato un computer }
    jz @End
    mov ax,0
    jmp @End
@End:
    mov test, ax
  end;
  if test = 0 then Test_Rs232:=True
              else Test_Rs232:=False;
end;
{ Procedure per la gestione della porta seriale }
{--------------------------------------------------------------------------}
Procedure Dtra1; Assembler;
{ Farlo dopo l'inizializzazione della porta }
asm
   Mov ah, 05   {legge modem controll e il risultato va nel registro bl}
   Xor Al, Al
   Int 14h
   Mov Bl, 1     { mettiamo dtr=1}
   Mov Ah, 5    { setta dtr=1 reg.-> bl}
   Mov Al, 1
   Int 14h
end;
Procedure Set_Com(Com : Word); assembler;
asm
          xor ah, ah
          mov al, $a3
          mov dx, Com
          int 14h
end;
Procedure TrasmettiRS232(Com,Code : Word); Assembler;
asm             {Trasmetti su RS232}
@Trasm:         Mov    Dx,    Com       {Porta Seriale}
                Mov    Ah,    03h
                Int    14h
                Test   Ah,    20h
                Je     @Trasm
                Mov    Ax,    Code
                Mov    Ah,    01h
                Mov    Dx,    Com       {Porta Seriale}
                Int    14h
end;
function RiceviRS232(com : Word; Comp2 : Byte) : integer;
var Return : integer;
begin
  asm           {Ricevi da RS232}
@StatoPorta :   Mov  Dx, Com       {Porta Seriale}
                Mov  Ah, 03h
                Int  14h
                Test Ah,  01h       {test DataReady}
                Jz   @Nothin
                Mov  Ah,    02
                Mov  Dx,    Com       {Porta Seriale}
                Int  14h
                Cmp  Comp2, 00
                Je   @Normal
                Cbw
                Jmp  @End
@Normal :       Xor  Ah,    Ah
                jmp  @End
@Nothin :       Mov  Ax,    1000     {nessun carattere in arrivo}
@End:           Mov  Return,Ax
  end;
  RiceviRS232:=Return;
end;
begin
end.
Ciao ReDiCuori
------------------------------------------
pascal su IRC : #turbopascal
pascal sul web : 
www.pascallike.cjb.net
------------------------------------------

Io ne ho scritto uno funzionante perfettamente, purtroppo non ricordo se ho
ancora i sorgenti per il Pascal.
Perņ puoi trovare quelli per Delphi che puoi facilmente riconvertire in
Pascal + Assembler, dato che penso che tu usi il compilatore Borland non ci
dovrebbero essere problemi con l'assembler.
Le sorgenti per operare sulle porte seriali in Delphi le trovi all'indirizzo
www.xungame.com
 sezione tutorials.
Ciao da Giovanni.
--
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                           Giovanni Ceglia
                WebMaster & WebDesigner
 
http://www.xungame.com/
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^