Autore Topic: inviare dati alla seriale con serialport  (Letto 2147 volte)

Offline fionda08

  • Gamberetto
  • *
  • Post: 13
    • Mostra profilo
inviare dati alla seriale con serialport
« il: 23 Ottobre 2014, 17:49:21 »
Salve a tutti mi presento sono fionda08 e sono nuovo, premetto che sto iniziando ora a programmare con Gambas per una mia scoperta di recente. fino a 10 giorni fa usavo Visual basic, e sta cosa dava molto fastido.
Comunque pongo il mio problema, vorrei inviare dei dati alla seriale (1 o 0) che verra letto successivamente da arduino.
Io ho inserito una serial port nel form e in un bottone ho scritto
Serialport1.write ("1")
e nell altro ho inserito
Serialport1.write ("0")
.
naturalmente nel form ho scritto
Serialport1.open() e inizializzato la seriale a 9600baud e chiamata dev/ttyACM0

ma mi da errore nel codice che invia 1 e 0

Offline fionda08

  • Gamberetto
  • *
  • Post: 13
    • Mostra profilo
Re: inviare dati alla seriale con serialport
« Risposta #1 il: 23 Ottobre 2014, 19:56:38 »
Codice: [Seleziona]
Public Sub Form_Open()
StatoSeriale.Background = Color.Red
SerialPort1.Open
End

Public Sub AccendiBottone_Click()

  StatoBottone.Text = "ON"
  StatoBottone.Background = Color.Green
  SerialPort1.Write = "1"

End

Public Sub SpegniBottone_Click()

  StatoBottone.Text = "OFF"
  StatoBottone.Background = Color.Red
 SerialPort1.Write = "0"
End

Public Sub AvvioSeriale_Click()

 
  StatoSeriale.Background = Color.Green
  StatoBottone.Enabled = True
End

un errore è cannot open serial port
e l'altro è unknow symbol write serial port

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.269
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: inviare dati alla seriale con serialport
« Risposta #2 il: 23 Ottobre 2014, 19:58:42 »
e l'altro è unknow symbol write serial port

Relativamente a questo errore, effettivamente .Write non è un metodo della Classe SerialPort.
Dovresti fare così:
Codice: gambas [Seleziona]
Write #SerialPort1, "1"
« 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 fionda08

  • Gamberetto
  • *
  • Post: 13
    • Mostra profilo
Re: inviare dati alla seriale con serialport
« Risposta #3 il: 23 Ottobre 2014, 20:01:58 »
ok ma quando apro la porta seriale
serialport1.open
mi dice
Codice: [Seleziona]
cannot open serialport (5)

Offline fionda08

  • Gamberetto
  • *
  • Post: 13
    • Mostra profilo
Re: inviare dati alla seriale con serialport
« Risposta #4 il: 23 Ottobre 2014, 20:05:14 »
ok, dava questo errore perchè scrivevo dev/ttyACM0 invece di /dev/ttyACM0

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.269
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: inviare dati alla seriale con serialport
« Risposta #5 il: 23 Ottobre 2014, 20:12:25 »
ok, dava questo errore perchè scrivevo dev/ttyACM0 invece di /dev/ttyACM0
Altre volte può dare quell'errore, poiché il file-device è protetto, ed in questi casi va eliminata quella protezione.



Quindi hai risolto ?   :)
« Ultima modifica: 23 Ottobre 2014, 20:14:07 da vuott »
« 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 fionda08

  • Gamberetto
  • *
  • Post: 13
    • Mostra profilo
Re: inviare dati alla seriale con serialport
« Risposta #6 il: 23 Ottobre 2014, 20:22:42 »
sisi però ti faccio leggere il codice .
Codice: [Seleziona]
Public Sub _new()

End

Public Sub Form_Open()
StatoBtnSeriale.Background = Color.Red

End





Public Sub AccendiBottone_Click()

  If SerialPort1.Status == Net.Active
  StatoBottone.Text = "ON"
  StatoBottone.Background = Color.Green
  Write #SerialPort1, "1" 
  Else
    Message("porta seriale non abilitata")
Endif 
 

 
   
   
   
   
 

End

Public Sub SpegniBottone_Click()

  If SerialPort1.Status == Net.Active
  StatoBottone.Text = "OFF"
  StatoBottone.Background = Color.Red
  Write #SerialPort1, "0"
  Else
    Message("porta seriale non abilitata")
    Endif
 
 
 
 

End

Public Sub AvvioSeriale_Click()

  If SerialPort1.Status == Net.Inactive
  SerialPort1.Open
  StatoBtnSeriale.Background = Color.Green
  StatoBottone.Enabled = True
  StatoBtnSeriale.text = "Enabled9600Baud"
  Else
    AvvioSeriale.Enabled = False
    Endif
 
 
End


Public Sub SerialPort1_Read()

 

End
Public Sub StatoBtnSeriale_Click()

 

End

ti spiego quando clicco su accendi senza abilitare la seriale mi da il messaggio , ma dopo che abilito la seriale devo cliccare 2 volte su accendi per farlo accendere e non una sola volta come mai?

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.269
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: inviare dati alla seriale con serialport
« Risposta #7 il: 23 Ottobre 2014, 21:11:37 »
ma dopo che abilito la seriale devo cliccare 2 volte su accendi per farlo accendere e non una sola volta come mai?
Suppongo che sia un problema legato ad Arduino.
Io qui non posso aiutarti, perché non c'ho mai lavorato.   :-\
Speriamo che qualche altro amico del forum intervenga per darti la risposta al problema.
« 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 fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: inviare dati alla seriale con serialport
« Risposta #8 il: 24 Ottobre 2014, 20:56:38 »

io con arduino usavo:

Codice: [Seleziona]
Print #SerialPort1, "1"; Chr$(13); Chr$(10);


Offline allegfede

  • Gran Maestro dei Gamberi
  • *****
  • Post: 738
    • Mostra profilo
Re: inviare dati alla seriale con serialport
« Risposta #9 il: 24 Novembre 2014, 13:43:31 »
mah suppongo che il codice gambas sia residente su macchina linux che deve dialogare con arduino via collegamento seriale ....

per il problema delle "doppie" attivazioni io controllerei la successioni di seriale aperta/chiusa e lo stato "passo passo" della stessa, magari forzando la chiusura prima di fare una comunicazione.

hai infatti istruzioni SerialPort1.Open ma non vedo SerialPort1.close (non so neanchg se sia necessario, ma a naso ...)
« Ultima modifica: 24 Novembre 2014, 13:45:17 da allegfede »
se corri, morirai stanco (motto degli sniper)