09. september 2006 - 22:35
Der er
13 kommentarer og
1 løsning
Oversættelse af code fra Qbasic og til Pascal / Delphi
Jeg har noget kode som er skrevet i Qbasic, men jeg vil gerne have lavet det om til Pascal / Delphi, findes der en metode til dette som er forholdsvis nem at gå til eller er det noget som jeg skal holde mig fra, jeg skal bruge com porten og noget eksternt hardware, det eksterne skal sende nogle signaler tilbage til pc'en og udlæse dette på skærmen.
M.V.H.
TLV
P.S. der skal nok komme point på når jeg har fået vished for at det kan lade sig gøre.
11. september 2006 - 17:35
#6
Her kommer den så, det skal nok lige tilføjes at det er meget langtid siden at jeg sidst sad og hygge programerede så det kan da godt være at der bliver brug for en del vejledning, også er jeg i tvivl om jeg skal vælge PAS eller DEL, har vistnok en DEL ver 3 eller 4 til at ligge på en cd fra alt om data.
REM ***** Simple Logic Analyzer using RS232 *****
CLS
CLEAR
DIM CAdr(4), p(4, 3)
CAdr(1) = &H3F8: CAdr(2) = &H2F8: CAdr(3) = &H3E8: CAdr(4) = &H2E8:
REM ***** Declare subroutines for Keys <F1> and <F2> *****
KEY(1) ON: ON KEY(1) GOSUB f1
KEY(2) ON: ON KEY(2) GOSUB f2
REM ***** Write Logic Analyser logo on screen *****
PRINT
PRINT TAB(24); CHR$(201); STRING$(30, CHR$(205)); CHR$(187)
PRINT TAB(24); CHR$(186); STRING$(30, CHR$(32)); CHR$(186)
PRINT TAB(24); CHR$(186); " PC - Logic Analyser "; CHR$(186)
PRINT TAB(24); CHR$(186); STRING$(30, CHR$(32)); CHR$(186)
PRINT TAB(24); CHR$(200); STRING$(30, CHR$(205)); CHR$(188)
LOCATE 25, 30
PRINT "<F1> Restart / <F2> End"; SPC(20);
REM ***** determine COM port *****
LOCATE 10, 8
PRINT "COM port : (1) COM1 (2) COM2 (3) COM3 (4) COM4 : ";
DO
w$ = INKEY$
LOOP UNTIL (VAL(w$) < 5) AND (VAL(w$) > 0)
PRINT "COM"; w$
REM ***** Number of channels to use *****
LOCATE 12, 8
PRINT "Channels (1-4) : ";
DO
k$ = INKEY$
Channel = VAL(k$)
LOOP UNTIL (Channel < 5) AND (Channel > 0)
PRINT Channel
REM ***** Sweep mode *****
LOCATE 14, 8
PRINT "Sweep mode: (C)ontinuous / (S)ingle sweep / (P)ause: ";
DO
meas$ = UCASE$(INKEY$)
LOOP UNTIL meas$ = "C" OR meas$ = "S" OR meas$ = "P"
PRINT meas$
REM ***** Sample rate delay *****
DO
LOCATE 16, 8
INPUT "Delay (0 - 50.000) : ", Delay
LOOP UNTIL (Delay >= 0) AND (Delay <= 50000)
HCAdr = CAdr(VAL(w$))
OUT HCAdr + 3, INP(HCAdr + 3) OR 64
FOR w = 1 TO Channel
p(w, 1) = w * 80: p(w, 2) = (w * 80) - 50: p(w, 3) = w * 80
NEXT w
REM ***** Measurment *****
SCREEN 9
DO
CLS
REM ***** Draw X-axes and write additional text to screen *****
FOR w = 1 TO Channel
LINE (0, w * 80)-(640, w * 80), 15, , 255
p(w, 0) = 0
COLOR w + 2, 0
LOCATE 1, 1 + ((w - 1) * 10)
PRINT "Channel"; w;
NEXT w
COLOR 15, 0
PRINT "COM "; w$; " Delay : "; Delay; " Sweep mode : "; meas$
LOCATE 25, 30
PRINT "<F1> Restart / <F2> End"; SPC(20);
REM ***** Draw reference lines ****
FOR e = 1 TO 640 STEP 10
LINE (e, 25)-(e, 320), 8, , 1024
NEXT e
REM ***** Draw measured signals *****
FOR i = 1 TO 640
FOR x = 1 TO Channel
CState = INP(HCAdr + 6) AND 240
IF CState AND 2 ^ (3 + x) THEN
LINE (p(x, 0), p(x, 3))-(i - 1, p(x, 1) - 50), x + 2
p(x, 3) = p(x, 2)
ELSE
LINE (p(x, 0), p(x, 3))-(i - 1, p(x, 1)), x + 2
p(x, 3) = p(x, 1)
END IF
p(x, 0) = i
NEXT x
FOR q = 1 TO Delay
NEXT q, i
REM ***** After each sweep: Determine what sweep mode was selected *****
IF meas$ = "p" THEN
LOCATE 25, 28
PRINT "Paused! Press any key to continue"; ; SPC(20);
SLEEP
END IF
LOOP UNTIL meas$ = "S"
LOCATE 25, 20
PRINT "End of Measurement! Press any key to continue"; SPC(10);
SLEEP
RUN
REM ***** Subroutine for F1 *****
f1:
RUN
RETURN
REM ***** Subroutine for F2 *****
f2:
SCREEN 0
CLS
END
CLS
RETURN
M.V.H.
TLV