Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 40
  1. #1
    Utente di HTML.it L'avatar di Chiara1982
    Registrato dal
    Jul 2007
    residenza
    Provincia di Belluno
    Messaggi
    649

    QBasic e inserimento stringa nuovo comando. Come si fa? E dove?

    Salve, sono sempre io, sempre alle prese con il solito programma. Visto che già mi avete aiutato correggendomi alcuni errori, vorrei ora chiedervi un altro aiuto.

    Qui di seguito vi posto la scrittura in QBasic del mio programma:


    x% = 15 'Offset grafico per le ascisse
    DIM Vmedio(650)
    scherm% = 1
    car% = 47

    CLS : BEEP
    LOCATE 1, 10
    PRINT "Programma di aquisizione dati tramite porta parallela"
    LOCATE 2, 22
    PRINT "utilizzante un chip ADC0831"
    LOCATE 4, 19
    PRINT "by Flavio Falcinelli - Giungo 1997"
    LOCATE 12, 3
    INPUT "Desidere leggere e visualizzare un file di dati su disco (S=si N=no)"; a$
    s% = 0
    IF (a$ = "S") OR (a$ = "s") THEN GOSUB 68: s% = 1: GOTO 5


    2 CLS : LOCATE 5, 3
    data$ = DATE$
    LOCATE 6, 3
    PRINT "Accertati di aver collegato l'interfaccia ADc."
    LOCATE 10, 3
    INPUT "Scegli il numero di campioni da mediare (max. 32000): Ncamp = "; N
    IF N = 0 THEN Ncamp% = 1
    IF N > 32000 THEN Ncamp% = 32000
    IF N <= 32000 THEN Ncamp% = N
    LOCATE 11, 57: PRINT "Ncamp = "; Ncamp%
    Nmedia% = Ncamp%

    flag% = 0: LOCATE 13, 3
    INPUT "Vuoi salvare su un file i dati del valore medio (S=si N=no)"; c$
    IF (c$ = "S") OR (c$ = "s") THEN
    flag% = 1: LOCATE 15, 25: INPUT "Nome del file di dati: "; nome$


    tempoin$ = TIME$
    tempofin$ = TIME$


    5 CLS : SCREEN 9
    COLOR 14, 11
    LOCATE 25, 1: PRINT "0"
    LOCATE 22, 1: PRINT "1"
    LOCATE 19, 1: PRINT "2"
    LOCATE 17, 1: PRINT "3"
    LOCATE 14, 1: PRINT "4"
    LOCATE 11, 1: PRINT "5"
    LOCATE 10, 74: PRINT "tempo"
    LOCATE 1, 15: PRINT "CONVERTITORE ANALOGICO-DIGITALE controllato da PC"
    IF s% = 0 THEN LOCATE 6, 20: PRINT "Valore della tensione letta ="
    LOCATE 10, 4: PRINT "<Esc> per uscire"
    LOCATE 9, 4: PRINT "schermata n."; scherm%
    LOCATE 10, 36: PRINT "Ncamp ="; Ncamp%
    LOCATE 2, 20: PRINT "Ora locale inizio osservazione: "; tempoin$
    LOCATE 3, 20: PRINT "Ora locale fine osservazione: "; tempofin$
    LOCATE 9, 69: PRINT data$
    LINE (16, 144)-(630, 344), 15, BF
    LINE (15, 143)-(631, 345), 8, B


    FOR i% = 144 TO 344 STEP 20
    LINE (16, i%)-(630, i%), 12, , &H1111
    NEXT i%
    FOR j% = 16 TO 616 STEP 20
    LINE (j%, 144)-(j%, 344), 12, , &H1111
    NEXT j%


    IF s% = 1 THEN GOTO 70


    addout% = &H3BC 'indirizzo della porta parallela LPT1
    addin% = addout% + 1
    DO
    somma& = 0


    FOR j% = 1 TO Nmedia%
    IF INKEY$ = CHR$(27) THEN OUT addout%, 0: END
    REDIM bitin%(8)
    word% = 0
    OUT addout%, 5 'indirizza l'ACD0831
    OUT addout%, 7 'inizia la conversione A/D
    OUT addout%, 5
    FOR a% = 7 TO 0 STEP -1 'acquisisce una parola ad 8 bit
    OUT addout%, 7
    OUT addout%, 5
    bitin%(a%) = INP(addin%)
    NEXT a%
    OUT addout%, 13 'deseleziona l'ADC0831



    FOR r% = 7 TO 0 STEP -1
    IF bitin%(r%) < 128 THEN word% = word% + (2 ^ r%)
    NEXT r%

    somma& = word% + somma&
    NEXT j%


    media = somma& / Nmedia%
    volt = 5 * media / 255 'calcola la tensione letta
    Vmedio(x%) = volt
    V2% = 344 - 40 * volt
    IF x% = 15 THEN V1% = V2%
    x% = x% + 1
    LINE (x% - 1, V1%)-(x%, V2%), 1
    V1% = V2%
    LOCATE 6, 50: PRINT USING "##.##"; volt; : PRINT " V";


    LOOP WHILE x% < 631


    x% = 15
    scherm% = scherm% + 1
    data$ = DATE$
    tempoin$ = tempofin$
    tempofin$ = TIME$
    IF flag% = 1 THEN car% = car% + 1: GOSUB 65
    GOTO 5

    65 IF car% > 57 THEN RETURN
    OPEN nome$ + CHR$(car%) FOR OUTPUT AS #2
    PRINT #2, nome$ + CHR$(car%)
    PRINT #2, data$
    PRINT #2, Ncamp%
    PRINT #2, tempoin$
    PRINT #2, tempofin$
    FOR i% = 16 TO 630: PRINT #2, Vmedio(i%): NEXT i%
    CLOSE #2: RETURN

    68 LOCATE 15, 25: INPUT "Nome del file di dati: "; nomefile$
    ON ERROR GOTO 200
    OPEN nomefile$ FOR INPUT AS #1
    INPUT #1, nomefile$
    INPUT #1, data$
    INPUT #1, Ncamp%
    INPUT #1, tempoin$
    INPUT #1, tempofin$
    FOR i% = 16 TO 630: INPUT #1, Vmedio(i%): NEXT i%
    CLOSE #1: RETURN
    70 LOCATE 8, 73: PRINT nomefile$
    FOR x% = 16 TO 630
    LINE (x% - 1, 344 - 40 * Vmedio(x% - 1))-(x%, 344 - 40 * Vmedio(x%)), 1
    NEXT x%
    GOTO 80
    BEEP: CLS : LOCATE 5, 30: PRINT "File non trovato!":
    SLEEP 2: RESUME 80

    80 LOCATE 5, 2: PRINT "Scegli le seguenti opzioni:"
    LOCATE 5, 30: PRINT " 1) lettura e visualizzazione di altri dati"
    LOCATE 6, 30: PRINT " 2) acquisizione dati da interfaccia"
    LOCATE 7, 30: PRINT " 3) FINE LAVORO"

    85 LOCATE 7, 50: INPUT B$
    IF B$ = "1" THEN s% = 1: CLS : GOSUB 68: GOTO 5
    IF B$ = "2" THEN s% = 0: scherm% = 1: x% = 15: GOTO 2
    IF B$ = "3" THEN END
    GOTO 85



    Si tratta di un programma che acquisisce attraverso una porta parallela, una tensione variabile di cui deve fare il grafico.
    Vorrei che qualcuno di voi mi potesse dire COSA (la stringa) e DOVE inserire un comando che dica di arrestare il grafico ogni volta che la tensioni diventi zero e che lo riavvii appena la tensione assume valori positivi diversi da zero.

    Grazie.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Prima di tutto, sei sicura che questo programma funzioni in un sistema come Windows XP (che presumo tu usi ?) ... penso proprio di no dato che non e' possibile accedere direttamente alle porte da parte di un programma con tale sistema ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it L'avatar di Chiara1982
    Registrato dal
    Jul 2007
    residenza
    Provincia di Belluno
    Messaggi
    649
    Originariamente inviato da oregon
    Prima di tutto, sei sicura che questo programma funzioni in un sistema come Windows XP (che presumo tu usi ?) ... penso proprio di no dato che non e' possibile accedere direttamente alle porte da parte di un programma con tale sistema ...
    Il suddetto programma viene usato sul mio pc che ha SO XP. Entrando da QBasic.exe, scelgo la voce "apri", seleziono il file ADC0831.BAS (ADC0831 è il nome del programma) e il programma parte regolarmente. Il segnale che riceve (si tratta di una tensione variabile proveniente da un ricevitore radio e che passa attraverso un opportuno convertitore) passa attraverso il connettore a vaschetta maschio DB25 poli (per intenderci sul retro di ogni pc c'è la predisposizione per questo) e, avendo il programma in qbasic aperto, si crea un grafico su ascisse\ordinate.

    La mia richiesta è come fare a inserire un comando di rallentamento. In che punto della scrittura del programma devo inserire la stringa per fare questo? e soprattutto come scrivo questa stringa?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Forse non sono stato chiaro ... o non hai letto attentamente quello che ti ho detto ...

    Questo tipo di programmi (che accedono direttamente alla porta parallela) NON possono funzionare con sistemi operativi tipo XP, ma solo su DOS e WIN9X ...

    Nel senso che vengono aperti ed eseguiti ma NON interagiscono correttamente con la parallela ... ovvero quello che vedrai NON sara' il grafico della tensione acquisita dalla tua interfaccia ma dei valori casuali.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it L'avatar di Chiara1982
    Registrato dal
    Jul 2007
    residenza
    Provincia di Belluno
    Messaggi
    649
    Il programma è stato scritto da un esperto nel campo della radioastronomia che io ho ricopiato e fatto funzionare. So perfettamente che bisogna lavorare in DOS, ma i valori che fino a ora sono riuscita a leggere nel grafico non sono affatto casuali, ma muovendo dei comandi e delle manopole sul ricevitore interfacciato, i dati che visualizzo sul grafico corrispondono.

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da Chiara1982
    Il programma è stato scritto da un esperto nel campo della radioastronomia che io ho ricopiato e fatto funzionare.
    E' un vecchio progetto di Falcinelli del 1997 ma questo e' irrilevante in relazione a quanto ti ho detto ... Anzi, proprio perche' e' "vecchio", puo' non essere eseguito correttamente su sistemi moderni.

    So perfettamente che bisogna lavorare in DOS
    Quindi, lavori in DOS e NON in una finestra DOS di XP ...

    , ma i valori che fino a ora sono riuscita a leggere nel grafico non sono affatto casuali, ma muovendo dei comandi e delle manopole sul ricevitore interfacciato, i dati che visualizzo sul grafico corrispondono.
    Se lavori in DOS, allora va bene ... era quello che ti volevo dire ... altrimenti potresti avere problemi nell'accesso alla parallela.

    Per quello che vuoi fare, puoi provare scrivendo

    If volt>0 Then x% = x% + 1

    al posto della semplice

    x% = x% + 1
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it L'avatar di Chiara1982
    Registrato dal
    Jul 2007
    residenza
    Provincia di Belluno
    Messaggi
    649
    Grazie mille per la risposta, era quello che mis erviva. Il mio problema, credo, è che SO che bisogna lavorare in DOS, ma in realtà io lavoro nel prompt DOS di XP. Forse è qui che sbaglio...

    Dovrei avere un altro pc privo di qualsiasi sistema operativo che lavora solo in DOS?

    Ho anche un commodore VIC20, su quello potrebbe funzionare?

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da Chiara1982
    Grazie mille per la risposta, era quello che mis erviva. Il mio problema, credo, è che SO che bisogna lavorare in DOS, ma in realtà io lavoro nel prompt DOS di XP. Forse è qui che sbaglio...
    Mi stai facendo confondere ...

    Se lavori nel prompt del DOS in XP, allora NON puoi accedere alla porta parallela ed avere il tuo grafico ...

    Avevi detto che avevi dei dati corretti ... cosi' non puo' essere su XP ... devo pensare che NON hai mai eseguito il tuo programma con dei dati in input ...

    Dovrei avere un altro pc privo di qualsiasi sistema operativo che lavora solo in DOS?
    Il DOS

    e'

    un sistema operativo ...

    In ogni caso, ti basterebbe un PC con Windows 98 ...

    Ho anche un commodore VIC20, su quello potrebbe funzionare?
    Dovresti riscrivere il sorgente.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it L'avatar di Chiara1982
    Registrato dal
    Jul 2007
    residenza
    Provincia di Belluno
    Messaggi
    649
    Oggi pomeriggio riscrivo tutto sul mio Vic20, inserendo la stringa che mi hai indicato, ma cosa intendi per "riscrivere il sorgente"? Vuol dire che lavorando in DOS, devo riscrivere diversamente alcune parti del programma? Mi sembrava di aver capito, da quanto scrive Falcinelli sul suo libro, che il programma vada in DOS... allora perchè riscrivere il sorgente?
    Puoi aiutarmi?

    Inotlre volevo sapere se posso ricevere aiuto anche per quanto riguarda questo: per ora ho utilizzato la porta a 25 poli (nel mio pc dove c'è XP) per far entrare la tensione.

    Se ora lavoro sul VIC20 come devo fare per adattare la porta a 25 poli al VIC?
    Nel VIC esiste la porta Joystick e la porta utente. In quale delle due dovrei far entrare il segnale di tensione? E dove trovare gli "attacchi" per queste porte?

    Grazie mille per l'aiuto.
    Chiara

  10. #10
    Utente di HTML.it L'avatar di Chiara1982
    Registrato dal
    Jul 2007
    residenza
    Provincia di Belluno
    Messaggi
    649
    Nessuno mi aiuta?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.