Autore Topic: Comunicare sulla seriale  (Letto 2555 volte)

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.728
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re:Comunicare sulla seriale
« Risposta #30 il: 16 Ottobre 2021, 19:50:25 »
nino83 ti allego un mio progetto che uso per testare le seriali vedi se ti può essere utile!
ciao
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline nino83

  • Gamberetto
  • *
  • Post: 35
    • Mostra profilo
Re:Comunicare sulla seriale
« Risposta #31 il: 18 Ottobre 2021, 09:24:53 »
Citazione
se fossi in te proverei a scrivere un piccolo programma di comunicazione


sì, ovviamente sto provando questo approccio: non sto lavorando direttamente sul mio programma reale, proprio per un discorso di semplicità.

Citazione
cortocircuitando il TX con RX per vedere se rileggi quello che scrivi sulla seriale.

 :-[  questo lo devo tradurre prima: non ho idea di cosa voglia dire

Citazione
Userei la gestione della porta direttamente dall'IDE di Gambas che trovo, per le prove molto comoda.

cioè "non via codice"? esiste qualche strumento integrato nell'IDE? cercherò a riguardo


Darò un'occhiata anche al progetto che, molto gentilmente, mi hai postato.
Grazie!

Offline nino83

  • Gamberetto
  • *
  • Post: 35
    • Mostra profilo
Re:Comunicare sulla seriale
« Risposta #32 il: 18 Ottobre 2021, 12:12:02 »
Usando esempi qua e la' ho rifatto tutto da zero (non mi sembra cambi molto, però sta funzionando):

Codice: [Seleziona]
Private intervSleep As Float = 0.5
Private SComm As SerialPort
Const None As Integer = 0
Private Rx As String

Public Sub Form_Open()
  SComm = New SerialPort As "SComm"
  SComm.PortName = "/dev/ttyACM0"
  SComm.Speed = "9600"
  SComm.Parity = 0
  SComm.DataBits = "8"
  SComm.StopBits = "1"
  SComm.FlowControl = 0
  Try
    SComm.Open()
    TextArea2.Text &= "seriale aperta..." & "\r\n"
    SComm.Close()
    TextArea2.Text &= "...e subito chiusa" & "\r\n"
   
  If Error
    Message("Problema nel test della seriale...")
    Quit
  End If

End 

Public Sub btnON_Click()
  SComm.Open()
  SComm.Begin()
  Sleep intervSleep
  Write #SComm, "HUB_ON"
  Sleep intervSleep
  SComm.Send()
  SComm.Close()
End

Public Sub btnOFF_Click()
  SComm.Open()
  SComm.Begin()
  Sleep intervSleep
  Write #SComm, "HUB_OFF"
  Sleep intervSleep
  SComm.Send()
  SComm.Close()
End

Se pongo intervSleep < 0.5 il comando non ha effetto (latenza di comunicazione, ok, anche se sembra un po' troppo).
E lo Sleep devo inserirlo ben 2 volte (il che non mi fa impazzire).
Intanto è un passo, ma ancora c'è tantissima strada da fare!

Offline Arco

  • Gambero
  • **
  • Post: 93
    • Mostra profilo
Re:Comunicare sulla seriale
« Risposta #33 il: 18 Ottobre 2021, 14:13:22 »
Se nella sub dei tasti metti sempre
SComm.Open()
SComm.Begin()
e relative chiusure alla fine devi attendere il tempo per inizializzare la seriale di conseguenza lo Slepp di attesa.
Se apri la seriale in form e la chiudi quando esci dal programma dovrebbe funzionare meglio.
Spero di non aver sbagliato qualcosa.

Offline nino83

  • Gamberetto
  • *
  • Post: 35
    • Mostra profilo
Re:Comunicare sulla seriale
« Risposta #34 il: 18 Ottobre 2021, 14:57:49 »
Citazione
Se nella sub dei tasti metti sempre
SComm.Open()
SComm.Begin()
e relative chiusure alla fine devi attendere il tempo per inizializzare la seriale di conseguenza lo Slepp di attesa.
Se apri la seriale in form e la chiudi quando esci dal programma dovrebbe funzionare meglio.
Spero di non aver sbagliato qualcosa.

Sei stato chiaro ma, mi è sembrato di capire, che è buona norma APRIRE-LEGGERE/INVIARE-CHIUDERE contestualmente, e non lasciare seriale aperta per svariato tempo...

EDIT:
difatti ho verificato, mettendo solo l'Open all'apertura dell'app... funziona tutto, non va in reset... è proprio un comportamento diverso da quello che ottengo su windows utilizzando Xojo (linguaggio diverso, ma principio praticamente identico... lo stesso codice, su windows gira regolarmente... insomma all'open della seriale non viene resettato tutto.  Su linux invece è come se venisse inviato un reset).

« Ultima modifica: 18 Ottobre 2021, 15:05:25 da nino83 »

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Comunicare sulla seriale
« Risposta #35 il: 18 Ottobre 2021, 15:38:59 »
...mi è sembrato di capire, che è buona norma APRIRE-LEGGERE/INVIARE-CHIUDERE contestualmente, e non lasciare seriale aperta per svariato tempo...
Al di là del caso "porta seriale" quella sequenza di istruzioni rappresenta ovviamente la procedura generale di come leggere "da" o scrivere "in" un file.
Ad ogni modo un file (e più spesso accade agendo sui file-device) può restare tranquillamente aperto in particolar modo quando viene posto in "osservazione" - ad esempio in lettura - con l'istruzione "Watch ".
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline astragalo

  • Gamberetto
  • *
  • Post: 37
    • Mostra profilo
Re:Comunicare sulla seriale
« Risposta #36 il: 02 Novembre 2021, 01:24:21 »
Ciao, qualche anno fa con un collega stavamo mettendo su un progetto con Arduino. Per lo studio  della comunicazione seriale avevo modificato  l'esempio  serialport presente sull'ide di gambas2 mi pare.in pratica avevo aggiunto alcune  funzioni  extra che permettevano di inviare richieste cicliche e di dare risposte a seconda  di quello che arrivava dalla seriale nonché di conteggiare richieste e risposte.
Se pensi possa tornarti utile lo posso inviare, credo che con poco possa lavorare anche con le versioni  attuali di gambas.
A breve dovrei riprendere  dei test con Arduino magari ci si potrà  scambiare  delle informazioni.

A presto.

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Comunicare sulla seriale
« Risposta #37 il: 02 Novembre 2021, 01:37:21 »
Se pensi possa tornarti utile lo posso inviare
...magari anche condividerlo su questo forum...
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline astragalo

  • Gamberetto
  • *
  • Post: 37
    • Mostra profilo
Re:Comunicare sulla seriale
« Risposta #38 il: 03 Novembre 2021, 18:48:22 »
Scusate il ritardo ma non riuscivo a trovarlo   :hatecomputer:

Premetto che ho modificato/implementeto l'esempio che veniva distribuito con l'ide di Gambas2 un pò di anni fa con Gamabs2, ho visto che anche con la 3 si avvia e l'ho risalvato con quella ma non ho fatto altre prove. Inoltre sono una pippa a scarabocchiare codice quindi di sicuro ci saranno mille cose che dovrebbero essere fatte in modo migliore. Tuttavia a suo tempo mi è stato parecchio utile per giochicchiare con Arduino... Spero possa tornare utile anche ad altri.

Ultima cosa i colori della grafica sono improponibili, non riesco a capire come ho fatto a sceglierli :o

A presto.

P.s. Dovrei iniziare un nuovo progettino con Arduino, quindi prevedo di riprenderlo in mano e magari migliorarlo, nel caso vi aggiorno.
« Ultima modifica: 03 Novembre 2021, 18:49:52 da astragalo »

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Comunicare sulla seriale
« Risposta #39 il: 03 Novembre 2021, 19:06:03 »
grazie.
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »