|
| turbo pascal / c++ Fra : glenn007 | Vist : 751 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.
| |
|
|