Autore Topic: Porta seriale  (Letto 1834 volte)

Offline Cubacapra

  • Gamberetto
  • *
  • Post: 27
    • Mostra profilo
Porta seriale
« il: 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

Offline leo72

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 2.163
    • Mostra profilo
    • http://www.leonardomiliani.com
Re: Porta seriale
« Risposta #1 il: 02 Marzo 2008, 18:48:21 »
premesso che non ho mai lavorato con una seriale, esattamente che errore ti dà Gambas?
Visita il mio sito personale: http://www.leonardomiliani.com

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Porta seriale
« Risposta #2 il: 02 Marzo 2008, 23:27:16 »
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.

Offline leo72

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 2.163
    • Mostra profilo
    • http://www.leonardomiliani.com
Re: Porta seriale
« Risposta #3 il: 03 Marzo 2008, 10:17:47 »
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.
Visita il mio sito personale: http://www.leonardomiliani.com

Offline Cubacapra

  • Gamberetto
  • *
  • Post: 27
    • Mostra profilo
Re: Porta seriale
« Risposta #4 il: 04 Marzo 2008, 14:14:55 »
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

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Porta seriale
« Risposta #5 il: 05 Marzo 2008, 23:43:23 »
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

Offline Mario

  • Grande Gambero
  • ***
  • Post: 138
    • Mostra profilo
    • http://overhill1963.blogspot.com/
Re: Porta seriale
« Risposta #6 il: 10 Luglio 2008, 09:35:17 »
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?
Saluti a tutti

Mario

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Porta seriale
« Risposta #7 il: 15 Luglio 2008, 13:58:42 »
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.