Interface entre portable et carte isa (PASCAL|C++)

Interface entre portable et carte isa (PASCAL|C++) - C++ - Programmation

Marsh Posté le 26-05-2004 à 11:07:15    

Bonjour a tous.
 
je suis actuellement en BTS IG, en fin de première année. Je dois faire un programme qui fasse interface entre un pc portable et une carte ISA branché sur USB via un adaptateur USB/ISA.
 
Autant vous dire tout de suite que mon niveau en programmation n'est pas extraordinaire mais je veus comprendre.
 
Voila comment sa fonctionne.  
materiel >>
1 pc portable
1 pc de bureau
1 system de comptage
 
Sur le pc portable, il y a un logiciel, qui s'occupe du comptage (temps au tour pour des voitures, ...), sur le pc de bureau, un logiciel en pascal qui fait fonctionner le system de comptage brancher sur le port isa et renvoi les infos necessaire via le port com.
 
Voila comment il va falloir que sa fonctionne.
materiel >>
1 pc portable
1 adaptateur usb/isa
1 system de comptage.
 
Le logiciel de comtage tourne toujours sur l'ordinateur portable. en meme temps en lance mon petit programme (qui marche en dos pas plus) et qui initialise la carte isa (qui est dans son adaptateur USB/ISA) afin que le logiciel de comptage récupere les infos. au travers de l'usb.
 
je vais vous mettre le programme en pascal qui fonctionne actuellement.

Code :
  1. program Example;
  2. Uses
  3.   Crt,
  4.   Dos,
  5.   Printer;
  6. type
  7.     tableau_byte  = array[1..256] of byte;
  8. const
  9.    txt_amb = 'A M B    T I M I N G    H O L L A N D';
  10.    Maxpnt = 10000;  { Maximum number of entry's so maxlap pro car =Maxpnt/10 }
  11.    MaxHit = 50;     { maximum count of hits in 10mS }
  12.    Ind_Hold = false;{ Hold flag }
  13.    DelaySec = 2;    { Delay time = 2 seconds }
  14.    BitMap : array[0..15] of word =
  15.             ($0001,$0002,$0004,$0008,
  16.              $0010,$0020,$0040,$0080,
  17.              $0100,$0200,$0400,$0800,
  18.              $1000,$2000,$4000,$8000
  19.             );
  20.    Paddr1 = $170;
  21.    Paddr2 = $190;
  22.    Paddr3 = $1B0;
  23.    Paddr4 = $1D0;
  24.    Paddr5 = $1F0;
  25.    irq3 = $08;
  26.    irq4 = $10;
  27.    irq5 = $20;
  28.    irq6 = $40;
  29.    irq7 = $80;
  30.    masqirq3 = $F7;
  31.    masqirq4 = $EF;
  32.    masqirq5 = $DF;
  33.    masqirq6 = $BF;
  34.    masqirq7 = $7F;
  35.    irq = irq3;
  36.    masqirq = masqirq3;
  37.    Paddr = Paddr3;
  38.    com_port = 0;
  39.    nbport=0;
  40.    PortAdr = $3FE;
  41. type
  42.    str1  = string[1];
  43.    str2  = string[2];
  44.    str4  = string[4];
  45.    str8  = string[8];
  46.    str11 = string[11];
  47.    str13 = string[13];
  48.    str15 = string[15];
  49.    str80 = string[80];
  50.    RegSet = record
  51.                  ax,bx,cx,dx,bp,si,di,ds,es,f: integer
  52.               end;
  53.    DelTabEntry =                   { This is the format for the delay tabel }
  54.       record
  55.          S,D     : byte;
  56.          Tpnt    : integer;
  57.          Zero    : Boolean;
  58.          Hold    : Boolean;
  59.          Hit     : Byte;
  60.          HitDel  : Byte;
  61.       end;
  62.    TimTabEntry =             { Used for storing the data from the interrupt }
  63.       record
  64.          Car     : byte;     { Car number (1-10)                       }
  65.          H,M,S,D : byte;     { Hous, Minutes, Seconds, 1/100 sec       }
  66.          Hit     : byte;     { Number of contacts with the transponder }
  67.       end;
  68.    TimTabarr = array[1..Maxpnt] of TimTabEntry;
  69.    MainTabEntry =
  70.       record
  71.          laps,
  72.          new_H, new_M, new_S, new_D,
  73.          old_H, old_M, old_S, old_D,
  74.          lap_H, lap_M, lap_S, lap_D   : integer;
  75.          Hit                          : integer;       { hitcounter          }
  76.          Hitstr                       : str2;
  77.       end;
  78. var
  79.         ind_full       : boolean;    { buffer full                           }
  80.         ind_beep       : boolean;    { Indicator beep on/off                 }
  81.         ind_start      : boolean;    { Start indicator                       }
  82.         ind_quit       : boolean;    { Stop indicator                        }
  83.         etattrans      : boolean;
  84.         dummy,I        : integer;    { for start/stop timer                  }
  85.         Inpstr         : Str80;
  86.         key            : char;       { input keyboard                        }
  87.         HH,MM,SS,DD    : byte;       { main timer                            }
  88.         Ipnt,Mpnt      : integer;    { pointers in timtab                    }
  89.         TimTab         :^TimTabarr;
  90.         MainTab        : array[1..10] of MainTabEntry;
  91.         old_sec,old    : byte;       { for display_main                      }
  92.         Bpcnt,oldmot   : byte;       { for beeper                            }
  93.         Bpdel          : byte;       { for delay beeper                      }
  94.         R        : RegSet;
  95.         DS_Save  : integer absolute $0000:$01C7;
  96.         InA, InB : byte;
  97.         InData   : integer;
  98.         Dpnt     : integer;
  99.         DelTab   : array[0..15] of DelTabEntry;   { the delay tabel }
  100.         d        : byte;
  101. procedure rs_init;
  102. var
  103.    regs : registers;
  104. begin
  105.      regs.ah:=0;
  106.      regs.dx:=nbport; {com1}
  107.      regs.al:=$E3;   {9600,1stop,7bits,aucun ctrl}
  108.      intr($14,regs);
  109. end;
  110. procedure rs_write(data : byte);
  111. var
  112.    regs : registers;
  113. begin
  114.      regs.ah:=1;
  115.      regs.dx:=nbport;
  116.      regs.al:=data;
  117.      intr($14,regs);
  118.      if (regs.ah and 128)=128 then
  119.      begin
  120.           gotoxy(1,1);writeln('Erreur transmission');
  121.      end;
  122. end;
  123. procedure envoi_carac(carac : char);
  124. begin
  125.      rs_write(ord(carac));
  126. end;
  127. procedure envoicom(amb232:str15);
  128. var boucle,longueur : integer;
  129.     lettre : char;
  130. begin
  131.       if etattrans then
  132.          begin
  133.            gotoxy(1,20); writeln('WINARC a ouvert le port com');
  134.            gotoxy(32,22);writeln('    ');
  135.            gotoxy(1,22);writeln('envoi sur port comm : ',amb232);
  136.            longueur := Length(amb232);
  137.            for boucle:=1 to longueur do
  138.               begin
  139.               lettre := amb232[boucle];
  140.               envoi_carac(lettre);
  141.            end;
  142.          end
  143.                    else
  144.          begin
  145.            gotoxy(1,20); writeln('WINARC a ferm‚ le port com ');
  146.            gotoxy(1,22);writeln('                                   ');
  147.          end;
  148. end;
  149. procedure MyIntHandler;
  150. interrupt;
  151. begin
  152.   InData := (Port[Paddr+6] shl 8) or Port[Paddr+4];   { This is the data from }
  153.   for Dpnt:=9 downto 0 do                             { the 10 inputs         }
  154.   begin
  155.     if Deltab[Dpnt].Hold then
  156.     begin
  157.       if DelTab[Dpnt].Zero then
  158.       begin
  159.         if ((InData and BitMap[Dpnt]) <> 0) and not ind_Hold then
  160.         begin
  161.           TimTab^[Ipnt].Car := Dpnt+1;      { The main program gets it data }
  162.           TimTab^[Ipnt].H   := HH;          { via the TimTab tabel          }
  163.           TimTab^[Ipnt].M   := MM;          { HH= Hours, MM= Minuts,        }
  164.           TimTab^[Ipnt].S   := SS;          { SS= sec, DD= 1/100 sec.       }
  165.           TimTab^[Ipnt].D   := DD;
  166.           DelTab[Dpnt].Hit  := 0;           { init hitcount  }
  167.           DelTab[Dpnt].Hitdel:= MaxHit;     { maxhit = 500ms }
  168.           DelTab[Dpnt].Tpnt := Ipnt;        { remember ipnt  }
  169.           DelTab[Dpnt].Zero := false;
  170.           DelTab[Dpnt].S := DELAYSEC;
  171.           DelTab[Dpnt].D := 0;
  172.           Bpcnt := Bpcnt+1;
  173.           Ipnt := Ipnt + 1;
  174.           If Ipnt >= Maxpnt then Ipnt:=1;
  175.         end
  176.       end
  177.       else
  178.       begin   { DelTab[Dpnt].Zero false }
  179.         if DelTab[Dpnt].D=0 then
  180.         begin
  181.           if DelTab[Dpnt].S=0 then DelTab[Dpnt].Zero := true else DelTab[Dpnt].S := DelTab[Dpnt].S - 1;
  182.           DelTab[Dpnt].D := 99;
  183.         end
  184.         else DelTab[Dpnt].D := DelTab[Dpnt].D - 1;
  185.       end;
  186.     end;
  187.     with DelTab[Dpnt] do
  188.     begin
  189.       if HitDel > 0 then   { do this for Maxhit*10ms }
  190.       begin
  191.         HitDel := HitDel - 1;    { this is the delay }
  192.         if (Indata and BitMap[Dpnt]) <> 0 then
  193.         begin      { count hits only in when exist }
  194.           Hit := Hit + 1;
  195.         end;
  196.         if HitDel=0 then TimTab^[Tpnt].Hit := Hit;
  197.       end;
  198.     end;  { with DelTab[dpnt] }
  199.   end;
  200.   If (Bpcnt<>0) and (Bpdel=0) and ind_beep then
  201.   begin
  202.     Port[97]:=Port[97] or $03;    {Beeper on}
  203.     Bpdel:=20;                    {Beeper delay}
  204.     Bpcnt:=Bpcnt-1;
  205.   end;
  206.   If Bpdel=7 then
  207.   begin
  208.     Port[97]:=Port[97] and $FC;     {Beeper off}
  209.   end;
  210.   If Bpdel<>0 then Bpdel:=Bpdel-1;    {beeper delay}
  211.   DD:=DD+1;
  212.   if DD>=100 then
  213.   begin
  214.     DD:=0;  SS:=SS+1;
  215.     if SS>=60 then
  216.     begin
  217.       SS:=0;  MM:=MM+1;
  218.       if MM>=60 then
  219.       begin
  220.         MM:=0;  HH:=HH+1;
  221.         if HH>=100 then HH:=0
  222.       end
  223.     end
  224.   end;
  225.   dummy:=Port[Paddr+4];
  226.   Inline(
  227.       $EC/                      {        in     al,dx }
  228.       $B0/$20/                  {        mov    al,20h }
  229.       $E6/$20                   {        out    20h,al }
  230.                          );     { End of inlinecode }
  231. end;    { MyIntHandler }
  232. {******* end of interrupt handler *********}
  233. procedure start_timer;      { start timer / interrupt handler }
  234. begin
  235.   dummy := Port[Paddr+4];  { start interrupt }
  236. end;    { start_timer }
  237. procedure stop_timer;
  238. begin
  239.   dummy := Port[Paddr+7];  { stop interrupt }
  240. end;    { stop_timer }
  241. procedure set_point;               {save and set pointers interrupt handler}
  242. begin
  243.   DS_Save := Dseg;
  244.   R.ax := $250B;
  245.   R.ds := Cseg;
  246.   R.dx := Ofs(MyIntHandler);
  247.   MsDos(Dos.Registers(R));
  248.   Port[$21] := Port[$21] and masqirq;
  249.   Port[Paddr+3]:= $34;     { mode:count 0,2 byte load/read,mode2,NO BCD count }
  250.   Port[Paddr+0]:= $20;     { LSB first $4E20 = 20000, 20000*.5us=10ms }
  251.   Port[Paddr+0]:= $4E;     { MSB last, total 10 msec by clk = 2Mc     }
  252.   Port[$20] := $20;
  253.   start_timer;
  254.   stop_timer;
  255. end;    { set_point }
  256. procedure restore_point;   { restore pointers interrupt handler }
  257. begin
  258.   Port[$21] := Port[$21] or irq;
  259. end;     { restore_point }
  260. procedure conv2 (inp : integer ;var outp : str2);
  261. begin
  262.   if inp > 99 then outp := '??'
  263.   else
  264.   begin
  265.     if inp < 10 then
  266.     begin
  267.       str(inp:1,outp);
  268.       outp := '0' + outp;
  269.     end
  270.     else
  271.     begin
  272.       str(inp:2,outp);
  273.     end;
  274.   end;
  275. end;     {of conv2}
  276. procedure format_time(hf,mf,sf,df,sup : integer; var form : str11);
  277. var    hulp : str2;
  278.        tel  : integer;
  279. begin                         {                hh:mm:ss.dd }
  280.   form := '';                 { format time to 12:34:56.78 }
  281.   conv2(hf,hulp);
  282.   form := form + hulp + ':';
  283.   conv2(mf,hulp);
  284.   form := form + hulp + ':';
  285.   conv2(sf,hulp);
  286.   form := form + hulp + '.';
  287.   conv2(df,hulp);
  288.   form := form + hulp;
  289.   tel := 1;
  290.   while ((form[tel] = '0') or (form[tel] = ':')) and (tel < sup) do
  291.   begin
  292.     form[tel] := ' ';
  293.     tel := tel + 1;
  294.   end;    { of while/do}
  295. end;
  296. procedure format_rs232(cf,hf,mf,sf,df,hitf: integer; var form : str15);
  297. var    hulp : str2;
  298. begin                         {             car   hh:mm:ss.dd }
  299.   form := '@';                 { format time to @NNhhmmssdd}
  300.   conv2(cf,hulp);
  301.   form := form + hulp;
  302.   conv2(hf,hulp);
  303.   form := form + hulp;
  304.   conv2(mf,hulp);
  305.   form := form + hulp;
  306.   conv2(sf,hulp);
  307.   form := form + hulp;
  308.   conv2(df,hulp);
  309.   form := form + hulp;
  310.   conv2(hitf,hulp);
  311.   form := form +hulp+chr(13)+chr(10);
  312. end;
  313. procedure format_temps_rs232(hf,mf,sf: integer; var form : str15);
  314. var    hulp : str2;
  315. begin                         {             car   hh:mm:ss.dd }
  316.   form := '@00';                 { format time to @NNhhmmssdd}
  317.   conv2(hf,hulp);
  318.   form := form + hulp;
  319.   conv2(mf,hulp);
  320.   form := form + hulp;
  321.   conv2(sf,hulp);
  322.   form := form +hulp+chr(13)+chr(10);
  323. end;
  324. procedure subtrct(var outp,inp1,inp2,carry:integer;max:integer);
  325. begin
  326.   outp := inp1 - inp2 - carry;
  327.   carry := 0;
  328.   if outp < 0 then
  329.   begin
  330.     outp := max + outp;
  331.     carry := 1;
  332.   end;
  333. end;     { subtrct }
  334. procedure Read_Rs232;
  335. var Portadrr :word;
  336.     Stat     : byte;
  337.     Stat4    : byte;
  338.     Stat5    : byte;
  339.     mot : byte;
  340. begin
  341.   stat:=(Port[PortAdr] and $F0);
  342.   stat4:=(Stat and $10) div 16;
  343.   stat5:=(Stat and $20) div 32;
  344.   if old<>stat then
  345.     begin
  346.       mot:=stat4+stat5*2;
  347. {      gotoxy(1,1); writeln(oldmot);
  348.       gotoxy(1,2); writeln(mot);}
  349.       if mot=3 then ind_start:=true;
  350.       if (mot=3) and (oldmot<>0) then etattrans:=true else etattrans:=false;
  351.       if ind_start then begin
  352.                         gotoxy(1,18); writeln('ordre de start donn‚ ');
  353.                         end
  354.                    else begin
  355.                         gotoxy(1,18); writeln('plus d ordre de start');
  356.                         end;
  357.       oldmot:=mot;
  358.       old:=stat;
  359.     end;
  360. end;  { Read_Rs232 }
  361. procedure build_screen;            { build standard screen-layout }
  362. var         arr8      : array[1..8] of char;
  363.             carstr    : str2;
  364. begin
  365.   gotoxy(70, 3); write(#$c9);
  366.   gotoxy(79, 3); write(#$bb);
  367.   gotoxy(70, 4); write(#$ba);
  368.   gotoxy(79, 4); write(#$ba);
  369.   gotoxy(70, 5); write(#$c8);
  370.   gotoxy(79, 5); write(#$bc);
  371.   gotoxy(75, 4); write('    ');
  372.   FillChar(arr8,8,#$cd);
  373.   gotoxy(71, 3); write(arr8);
  374.   gotoxy(71, 5); write(arr8);
  375.   gotoxy(10, 5); write(' Car        Time     Hits');
  376.   gotoxy( 5, 1); write('AMB Carte --> AMB 232 <C> X.Wilfart');
  377.   gotoxy( 5,25); write(txt_amb);
  378. end;    { build_screen }
  379. procedure clk_zero;
  380. begin
  381.   HH := 0; MM := 0; SS := 0; DD := 0; { Reset maintimer    }
  382.   old_sec := 99;                      { forc display timer }
  383.   Gotoxy(71,4);write('        ');
  384. end;     { clk_zero }
  385. procedure clear_buf;               { clear all buffers, pointers etc.}
  386. var
  387.     I  : integer;
  388. begin
  389.   Release(Heaporg);
  390.   new(TimTab);
  391.   clk_zero;                              { set main timer to zero }
  392.   For I := 1 to 10 do
  393.   begin
  394.     with MainTab[I] do                   { Clear MainTab }
  395.     begin
  396.       Hitstr     := '  ';
  397.       Hit        := 0;
  398.       old_H      := 0;
  399.       old_M      := 0;
  400.       old_S      := 0;
  401.       old_D      := 0;
  402.       new_H      := 0;
  403.       new_M      := 0;
  404.       new_S      := 0;
  405.       new_D      := 0;
  406.       laps       := 0;
  407.     end;
  408.   end;
  409.   For I := 0 to 15 do
  410.   begin
  411.     with DelTab[I] do    { Clear DelTab }
  412.     begin
  413.       S      := 0;
  414.       D      := 0;
  415.       Tpnt   := 0;
  416.       zero   := true;
  417.       hold   := true;
  418.       Hit    := 0;
  419.       HitDel := 0;
  420.     end;
  421.   end;
  422.   Ipnt := 1;
  423.   Mpnt := Ipnt;
  424. end;     { clear_buf }
  425. procedure detect(car,det_H,det_M,det_S,det_D,det_Hit:integer);
  426. var
  427.     telx,carry : integer;
  428.     tmpnul     : integer;
  429. begin
  430.   tmpnul:=0;
  431.   with maintab[car] do
  432.   begin
  433.     Hit := det_Hit;
  434.     Str(det_Hit:2,HitStr);
  435.     laps := laps + 1;
  436.     If laps >= 10000 then laps := 0;
  437.     old_H := new_H;
  438.     old_M := new_M;
  439.     old_S := new_S;
  440.     old_D := new_D;
  441.     new_H := det_H;
  442.     new_M := det_M;
  443.     new_S := det_S;
  444.     new_D := det_D;
  445.     carry := 0;               { carry must be zero for the first call }
  446.     subtrct(lap_D,new_D,old_D,carry,100);        { lap_@:=new_@-old_@ }
  447.     subtrct(lap_S,new_S,old_S,carry,60);
  448.     subtrct(lap_M,new_M,old_M,carry,60);
  449.     subtrct(lap_H,new_H,old_H,carry,100);
  450.   end;    { of with/do }
  451. end;      { detect }
  452. procedure auto_detect(pointer:integer;var car:integer);
  453. begin                              { Info from TimTab-->MainTab }
  454.   car := TimTab^[pointer].car;
  455.   repeat until DelTab[car-1].HitDel=0;    { wait for hit count }
  456.   detect(car,TimTab^[pointer].H,TimTab^[pointer].M,TimTab^[pointer].S,TimTab^[pointer].D,TimTab^[pointer].Hit);
  457. end;     {of auto_detect}
  458. procedure display_main;            { Display maintimer on screen }
  459. var
  460.     timstr  : str11;
  461.     timstr232 : str15;
  462.     dispstr : str8;
  463.     carstr  : str2;
  464. begin
  465.   If old_sec <> SS then
  466.   begin
  467.     old_sec := SS;                       { take new sec.     }
  468.     format_time(HH,MM,SS,DD,5,timstr);   { 0:00              }
  469.     format_temps_rs232(HH,MM,SS,timstr232);
  470.     dispstr := Copy(timstr,1,8);         { delete 1/100 sec. }
  471.     Gotoxy (71,4); write(dispstr);
  472.     envoicom(timstr232);
  473.   end;
  474. end;     { display_main }
  475. procedure Disp_dat(I:Integer);
  476. var  dispstr   : string[80];
  477.      spltimstr : str11;
  478.      spltimstr232 : str15;
  479.      laptimstr : str11;
  480.      carstr    : str2;
  481.      lapstr    : str4;
  482. begin
  483.   with MainTab[I] do
  484.   begin
  485.     str(I:2,carstr);
  486.     format_time(new_H,new_M,new_S,new_D,8,spltimstr);     { 0.00 }
  487.     format_rs232(I,new_H,new_M,new_S,new_D,Hit,spltimstr232);
  488.     format_time(lap_H,lap_M,lap_S,lap_D,8,laptimstr);
  489.     laptimstr := Copy(laptimstr,5,7);
  490.     Str(Laps:4,Lapstr);
  491.     dispstr := Carstr + ' >> ' + spltimstr + '   ' + HitStr;
  492.     Gotoxy(10,I+6); write(dispstr);
  493.     envoicom(spltimstr232);
  494.   end;
  495. end;      {of Disp_dat}
  496. procedure process;                 { processing the inputs }
  497. var ind_display : boolean;
  498.     car,lecture : integer;
  499. begin
  500.   repeat
  501.     display_main;
  502.     if (ipnt <> mpnt) then           { ipnt <> mpnt when car in TimTab buffer }
  503.     begin
  504.       auto_detect(mpnt,car);
  505.       Disp_Dat(car);
  506.       mpnt := mpnt+1;
  507.       If mpnt >= Maxpnt then         { Attention buffer overflow }
  508.       begin
  509.         gotoxy(1,10);
  510.         clreol;
  511.         write('   B U F F E R   F U L L');
  512.       end;
  513.     end;
  514.      if ind_start then
  515.        begin
  516.           stop_timer;
  517.           clrscr;
  518.           rs_init;
  519.           build_screen;
  520.           clear_buf;
  521.           ind_start := false;
  522.           start_timer;
  523.        end;
  524.     read_rs232;
  525.   until ind_quit;
  526. end;
  527. var lecture : integer;
  528. begin
  529.   clrscr;
  530.   rs_init;
  531.   build_screen;
  532.   ind_start := false;
  533.   ind_quit:=false;
  534.   oldmot:=0;
  535.   old:=0;
  536.   clear_buf;
  537.   restore_point;
  538.   set_point;
  539.   stop_timer;                { stop existing interrupts }
  540.   repeat
  541.     process;
  542.   until ind_quit;
  543.   stop_timer;
  544.   restore_point;
  545.   clrscr;
  546.   nosound;
  547. end.


 
Donc ici sa fonctionne avec un pc en plus et les infos son transmise par port com1. Au final, sa doit fonctionner juste avec l'adaptateur USB/ISA.
 
Les personnes souhaitant m'aider, sont les biens venu, parce que j'en ai besoin.
 
Comme dit plus haut, je suis débutant, et si il manque des infos je serais ravi des vous les données.
 
Encore merci a tous  :)

Reply

Marsh Posté le 26-05-2004 à 11:07:15   

Reply

Marsh Posté le 26-05-2004 à 11:40:57    

c'est du C++ ça ???  :sarcastic:

Reply

Marsh Posté le 26-05-2004 à 11:57:52    

Non cricri_, c'est du pascal, mais c'était pour vous donner une idées de ce que sa pouvais être comme programme.  :)  
 

Code :
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <conio.h>
  4. #include <iostream.h>
  5. /*==========================================================
  6. =========================CONSTANTES=========================
  7. ==========================================================*/
  8. #define txt_amb  "-=AMB=-|-=France=-|-=Orl&XWilfart=-"
  9. #define maxpnt 10000        //Maximum number of entry's so maxlap pro car =maxpnt/10
  10. #define maxhit 50;         //Maximum count of hits in 10ms
  11. #define ind_hold false;        //hold flag
  12. #define delaysec 2;         //Delay time = 2 Seconds
  13. #define bitmap0 0x0001        //Debut Tableau BitMap
  14. #define bitmap1 0x0002
  15. #define bitmap2 0x0004
  16. #define bitmap3 0x0008
  17. #define bitmap4 0x0010
  18. #define bitmap5 0x0020
  19. #define bitmap6 0x0040
  20. #define bitmap7 0x0080
  21. #define bitmap8 0x0100
  22. #define bitmap9 0x0200
  23. #define bitmap10 0x0400
  24. #define bitmap11 0x0800
  25. #define bitmap12 0x1000
  26. #define bitmap13 0x2000
  27. #define bitmap14 0x4000
  28. #define bitmap15 0x8000        //Fin Tableau BitMap
  29. #define paddr1 0x170
  30. #define paddr2 0x190
  31. #define paddr3 0x1b0
  32. #define paddr4 0x1d0
  33. #define paddr5 0x1f0
  34. #define masqirq3 0xf7
  35. #define masqirq4 0xef
  36. #define masqirq5 0xdf
  37. #define masqirq6 0xbf
  38. #define masqirq7 0x7f
  39. #define irq irq3
  40. #define masqirq masqirq3
  41. #define paddr paddr3
  42. #define com_port 0
  43. #define nbport 0
  44. #define portadr $3fe
  45. #define str1 string[1]
  46. #define str2 string[2]
  47. #define str4 string[4]
  48. #define str8 string[8]
  49. #define str11 string[11]
  50. #define str13 string[13]
  51. #define str15 string[15]
  52. #define str80 string[80]
  53. /*==========================================================
  54. =========================STRUCTURES=========================
  55. ==========================================================*/
  56. struct regset
  57. {
  58. int ax,bx,cx,dx,bp,si,di,ds,es,f;
  59. };
  60. struct deltabentry
  61. {
  62. int tpnt;
  63. bool zero,hold;
  64. unsigned char s,d,hit,del;
  65. };
  66. struct timtabentry
  67. {
  68. unsigned char car;         //car number (1-10)
  69. unsigned char h,m,s,d;        //Heures, Minutes, Secondes, 1/10 Sec
  70. unsigned char hit;         //Reception avec la puce  
  71. };
  72. struct maintabentry
  73. {
  74. unsigned int laps, new_h, new_m, new_s, new_d, old_h, old_m, old_s, old_d, lap_h, lap_m, lap_s, lap_d;
  75. unsigned int hit;         //Hit Counter
  76. };
  77. int main ()
  78. {
  79. printf("%s\n",txt_amb);
  80. system("pause" );
  81. return 0;
  82. }


 
voila le début d'une traduction de ce program pascal., je n'ai pas encore fais les tableau. mais si vous voyez une erreur faut pas hésiter.

Reply

Marsh Posté le 19-11-2004 à 23:53:49    

La chose qui ne devrait pas être [:fear]
 
 
Sérieusement, tu ne veux pas balancer cette abomination et recommencer ça proprement plutôt que d'essayer de la traduire de façon à peu près aussi horrible ?
 
 
Et merde, désolé pour le up :/


Message édité par printf le 19-11-2004 à 23:54:53

---------------
Un matin je me lèverai et il fera beau.
Reply

Marsh Posté le 20-11-2004 à 00:30:45    

puis avec les chaînes t'es mal barré :o
en Pascal/Delphi les chaînes déclarées comme "nom[longueur]" ce sont des ShortString, type n'ayant pas d'équivalent en C il me semble : tableau de caractère de longueur fixe dont la longueur utilisée est stockée à l'index 0 (donc les caractères vont de 1 à "longueur" )
 
edit: bah oui pourquoi tu uppes ça :pfff:


Message édité par antp le 20-11-2004 à 00:31:27

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 06-01-2005 à 15:35:52    

Bonjour, :??:  
 
J'arrive un peu tard mais j'ai lu sur ton message que tu disposais d'un interface USB-> ISA.
Ou a tu degotté cette perle rare ????
En est tu satisfait...
 
merçi d'avance.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed