/ Forside/ Teknologi / Udvikling / C/C++ / Spørgsmål
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
turbo pascal / c++
Fra : glenn007
Vist : 773 gange
200 point
Dato : 19-02-03 12:53

jeg har et styke hardware som jeg har lavet ud fra en diagram fundet på internettet, der var tilhørende software med til denne men lavet i turbo pascal,
Nu er det jeg gerne ville vide om det er muligt at afvikle turbo pascal fra c++ miljø.
Elelr om det er et strort arbejde at convertere denne kode til c++

Hvis du kan konvertere dette til c++ for mig ville jeg være lykkelig

Program serial_adc;

Uses Crt;

Const
combase=$2f8; { I/O address of the COM port you are using }
MCR=combase+4;
LCR=combase+3;
MSR=combase+6;

Procedure Initialize_converter;
Begin
Port[MCR]:=3; { make DTR line to supply power and set CS input of chip to 1 }
Port[LCR]:=0; { set clock line of the chip to 0 }
End;

Function Read_value:byte;
Var
value:byte;
count:byte;
Begin
value:=0;
Port[MCR]:=1; { set CS down }
For count:=0 to 7 Do Begin { do the bit value eading 7 times }
value:=value SHL 1; { value=2*value }
Port[LCR]:=64; { clock line up }
If (port[MSR] and $10)=$10 Then Inc(value); { read the input data and update value }
Port[LCR]:=0; { clock line down }
End;
Port[MCR]:=3; { set CS up again }
Read_value:=value; { return the value }
End;

Begin
Initialize_converter; { call initialization routine }
Repeat
Writeln(Read_value); { call reading routine and print the value }
Until KeyPressed; { repeat until any key is pressed }
End.



 
 
Accepteret svar
Fra : pmbruun

Modtaget 210 point
Dato : 19-02-03 13:23

Det er ikke enkelt at linke et pascal program med et c++ program, da de bruger forskellige konventioner for parameteroverførsel.

Hvis du har en executable (.exe) fil fra dit pascalprogram, så kan det kaldes fra c++ med:

system("serial_adc.exe");

Hvis du ikke har en .exe og ikke har en pascalcompiler, så må du jo bide i den sure kanin og oversætte til C/C++.

Peter





Kommentar
Fra : glenn007


Dato : 19-02-03 13:28

hmm lyuder som om jeg skal bide kaninen, men inden vi lukker ned her, kan du compile turbo psacal, for jeg har et par ændreringer til com port adressen som jeg meget gerne vil have compilet ? måske du kunnne hjælpe mig her ?

Kommentar
Fra : pmbruun


Dato : 19-02-03 13:57

Desværre. Jeg har en meget gammel udgave på disketter et eller andet sted derhjemme i et skab. Det bliver for bøvlet.

Hvordan du lige rammer PCens porte fra C må du spørge en Windows ekspert om. Der er sikkert et eller andet virtuelt array. Så vidt jeg husker er portene ikke memory-mapped på en PC, så memcpy virker nok ikke.

Peter


Godkendelse af svar
Fra : glenn007


Dato : 19-02-03 19:31

det har jeg fundet ud af, bruger createfile til at åbne porten til den, men mangler info om hvorledes jeg kan manipulere de forskelige pin`s ben på porten.

Kommentar
Fra : pmbruun


Dato : 20-02-03 09:33

Hvis du skriver kombinationen af 0 og 1 som du vil sætte på dine pins ud som binært tal, og derpå konverterer det til hexadecimalt tal, får du den kode, du skal skrive ud på porten. F.eks.:

0011 1110 1001 0010 = 0x3e94

(Jeg ved ikke lige hvor mange bits din port er på, eksemplet antager 16bits)

Fordelen ved hexadecimal i stedet for decimal repræsentation er, at du kan oversætte grupper a 4bits hver for sig, og stykke hex tallet sammen af dem:

0000 = 0
0001 = 1
0010 = 2
0011 = 3
0100 = 4
0101 = 5
0110 = 6
0111 = 7
1000 = 8
1001 = 9
1010 = a
1011 = b
1100 = c
1101 = d
1110 = e
1111 = f

Peter


Du har følgende muligheder
Eftersom du ikke er logget ind i systemet, kan du ikke skrive et indlæg til dette spørgsmål.

Hvis du ikke allerede er registreret, kan du gratis blive medlem, ved at trykke på "Bliv medlem" ude i menuen.
Søg
Reklame
Statistik
Spørgsmål : 177577
Tips : 31968
Nyheder : 719565
Indlæg : 6409071
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste