Gambas-it
Archivi (sola lettura) => Programmazione (Gambas 2) => Topic aperto da: Cubacapra - 02 Marzo 2008, 13:10:48
-
sto provando ad inviare una stringa sulla porta seriale ,ma mi da errore
Serialport1.PortName = "/dev/ttyUSB0"
Serialport1.Open 'apre la porta seriale 1
OUTPUT #serialport1, Chr(45) & Chr(45) & Chr(92) & Chr(35)
READ #Serialport1, s, Lof(Serialport1)
E' solo una prova : considerato che vorrei ricostruire un programma fatto in vb sto cercando di capire come dialogare con la seriale ,quello che devo inviare alla seriale sarebbero 2 asterischi "## una stringa "128"e un asterisco "*"
dovrebbe essere trasmessa così : ##128* .
ho provato con il codice sopra ma non funziona .
avete qualche suggerimento?
Ciaoserial port
-
premesso che non ho mai lavorato con una seriale, esattamente che errore ti dà Gambas?
-
Un paio di giorni fà ho inviato un mio vecchio programmino per monitorare un UPS tramite porta seriale; se il webmaster lo mette nei download, puoi vedere come ho gestito la cosa.
L'unico problema che potresti avere, sono i diritti di accesso al device (in /dev/tty*), su cui di solito ha accesso solo root. Nel caso tocca cambiarli, oppure eseguire il programma come utente root.
-
Ho visto il file.
In questi giorni ho avuto un po' di problemi tra il lavoro e le faccende domestiche per cui ho seguito poco l'amministrazione del sito.
Provvederò a metterlo online quanto prima.
-
Ciao,
ho provato alcune soluzioni ed ho utilizzato in parte il file di esempio "SerialPort" ho provato ad inserire una routine per far lampeggiare dei led con protocollo seriale
DIM dato AS String
DIM i AS Integer
DIM rit AS Integer
FOR i = 0 TO 255
FOR rit = 1 TO 900 questo per ritardare il lampeggio altrimenti sarebbe troppo veloce
PRINT i & " "
NEXT
TxtSend.text = Chr(42) & Chr(42) & Chr(i) & Chr(35)
IF Sport.Status = Net.Inactive THEN
message("Porta non Aperta!", "OK")
ELSE
WRITE #Sport, TxtSend.Text , & Chr(13) & Chr(10), TxtSend.Length + 2
PRINT #Sport, txtSend.Text ; Chr$(13); Chr$(10);
END IF
NEXT
sembra funzionare ..un po lento nelle risposte ma funziona .
una domanda :al posto del ciclo for next per ritardare il lampeggio si può mettere un funzione timer? se si come?
Ciao
-
La gestione di un timer è relativamente semplice.
In pratica viene trattato come un oggetto, con una proprietà corrispondente al ritardo tra un tic e il successivo.
Ad ogni tic viene chiamato un'apposito gestore dell'evento, la cui definizione è similare a tutti gli eventi gestiti in Gambas: PUBLIC SUB _timer().
Dentro l'evento fai quello che vuoi; se il timer è parte di una form, puoi utilizzare le proprietà della form stessa, o dei metodi che hai creato all'interno.
Attivare o disattivare il timer è semplice, esiste il metodo "enable", che funziona da interruttore (è un boolean); true per abilitare, false per disattivare il timer.
Ricorda però che il tempo utilizzato dal codice al tic del timer non deve superare l'intervallo di tempo per il prossimo tic, altrimenti avrai un'accavallamento di chiamate che potrebbero causare caos; i tic non si fermano, a meno di non disabilitare il timer. La cosa si può ovviare disattivando il timer appena entrati nell'evento, e riabilitarlo all'uscita.
Un'altra cosa che devi fare presente è che se includi il timer dentro una form, se questa và in errore, il timer rimane attivo, per cui sarebbe il caso di prevederne la disabilitazione nel metodo _free, controllando prima se la variabile non è già stata liberata dall'interprete di gambas.
Spero che la spiegazione sia stata esauriente.
Ciao
-
Sfrutto questo topic per fare qualche domanda sulla gestione delle porte USB.
Ho visto che la "porta seriale" è un termine generico per indicare anche le USB, appunto, quindi immagino che con questo metodo sia possibile leggere/scrivere i dati su questo tipo di porte.
E' sufficiente utilizzare gb.net nei componenti o serve anche altro?
-
Non sò risponderti, anche perchè non mi sono mai cimentato con le porte usb.
Tieni conto che, anche se vengono trattate analogamente a quelle seriali, il protocollo è completamente diverso, e i device sono anch'essi diversi.