bug serial monitor ?

Con la versione 1.0.1 aprendo il serial monitor esso funge, ma se si prova a cambiare la velocita' della seriale appare questo errore nella consolle dell'IDE, ed in piu' non cambia la velocita'.
Ora sono fisso a 19200 e non posso modificare.

Win7-64
Java7 upd7 32bit

Exception in thread "AWT-EventQueue-0" java.lang.StringIndexOutOfBoundsException: String index out of range: -1
	at java.lang.String.substring(String.java:1937)
	at processing.app.SerialMonitor$6.actionPerformed(SerialMonitor.java:137)
	at javax.swing.JComboBox.fireActionEvent(JComboBox.java:1240)
	at javax.swing.JComboBox.setSelectedItem(JComboBox.java:567)
	at javax.swing.JComboBox.setSelectedIndex(JComboBox.java:603)
	at javax.swing.plaf.basic.BasicComboPopup$Handler.mouseReleased(BasicComboPopup.java:816)
	at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:273)
	at java.awt.Component.processMouseEvent(Component.java:6263)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
	at javax.swing.plaf.basic.BasicComboPopup$1.processMouseEvent(BasicComboPopup.java:480)
	at java.awt.Component.processEvent(Component.java:6028)
	at java.awt.Container.processEvent(Container.java:2041)
	at java.awt.Component.dispatchEventImpl(Component.java:4630)
	at java.awt.Container.dispatchEventImpl(Container.java:2099)
	at java.awt.Component.dispatchEvent(Component.java:4460)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
	at java.awt.Container.dispatchEventImpl(Container.java:2085)
	at java.awt.Window.dispatchEventImpl(Window.java:2475)
	at java.awt.Component.dispatchEvent(Component.java:4460)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

anche a me da quei problemi, basta che cambi velocità, chiudi il serial monitor e lo riapri :grin:

e stupido non lo pensare :grin: ma è un errore già noto :sweat_smile:

Per evitarlo, prima che venga corretto nella 1.0.2, devi impostare la lingua inglese.

grazie Paolo, in inglese tutto OK

Era il problema che segnalai un paio di mesi fa e che è stato corretto nella versione di sviluppo dell'IDE.
Se cerchi il thread che aprii a suo tempo trovi in fondo anche le istruzioni per compilare da sorgenti ed avere il bug fix.

un'altra cosa: perchè non avviene il reset quando si apre il serial monitor? nelle versioni <1.0.1 avveniva.
ovviamente risolvo mettendo un delay(200) prima del serial.begin ma è uno cosa che comunque non mi è chiara.

A questa cosa non ci ho fatto caso.

igor97:
un'altra cosa: perchè non avviene il reset quando si apre il serial monitor? nelle versioni <1.0.1 a.

Con la 1.0.1 c'è sempre il reset quando apri il serial monitor.

Igor lo so io il perche' :slight_smile:

hai installato la "mia" .dll per la seriale

quella seriale e' una manna dal cielo, l'autore nemmeno sa i vantaggi che porta, uno dei quali e' la rimozione di questo fastidioso bug, perche' io bug lo definisco, del reset all'apertura del serial monitor

Testato:
Igor lo so io il perche' :slight_smile:

hai installato la "mia" .dll per la seriale

quella seriale e' una manna dal cielo, l'autore nemmeno sa i vantaggi che porta, uno dei quali e' la rimozione di questo fastidioso bug, perche' io bug lo definisco, del reset all'apertura del serial monitor

Io lo trovo abbastanza comodo l'autoreset :grin:

io lo chiamo bug perche' la decisione del se resettare o meno la deve fare il progettista, la cosa deve poter essere gestita manualmente.

Madwriter:
Io lo trovo abbastanza comodo l'autoreset :grin:

Dipende dai casi, in alcuni è comodo in altri è deleterio, esempio pratico il tuo Arduino ha collezionato dei dati e ti colleghi alla USB, o apri un qualunque programma di comunicazione, e ti trovi con un bel resettone con la conseguente perdita di dati.

astrobeed:

Madwriter:
Io lo trovo abbastanza comodo l'autoreset :grin:

Dipende dai casi, in alcuni è comodo in altri è deleterio, esempio pratico il tuo Arduino ha collezionato dei dati e ti colleghi alla USB, o apri un qualunque programma di comunicazione, e ti trovi con un bel resettone con la conseguente perdita di dati.

Diciamo anche che non è molto "intelligente" memorizzare dati nella sram :disappointed_relieved:

a mio parere,sarebbe comodo avere 2 opzioni in tools
-Serial monitor
-New serial monitor

oppure
-Serial monitor
-Reboot arduino
(reset potrebbe essere inteso da alcuni come reset totale,anche dello sketch)

anzi,facessimo una votazione tra chi preferisce lasciare le cose come sono,e chi vorrebbe le due opzioni?

Madwriter:

astrobeed:

Madwriter:
Io lo trovo abbastanza comodo l'autoreset :grin:

Dipende dai casi, in alcuni è comodo in altri è deleterio, esempio pratico il tuo Arduino ha collezionato dei dati e ti colleghi alla USB, o apri un qualunque programma di comunicazione, e ti trovi con un bel resettone con la conseguente perdita di dati.

Diciamo anche che non è molto "intelligente" memorizzare dati nella sram :disappointed_relieved:

ci sono molti scenari in cui uno preferirebbe non resettare l'arduino,soprattutto se uno non ha un niente per la comunicazione jtag..

un caso è quello sopracitato,connettersi(magari per debug) per leggere dati che potrebbero essere memorizzati in sd o eeprom,però essa ha un limite di scritture/letture..
oppure immagina un arduino che sta facendo il suo lavoro controllando un macchinario..a un certo punto inizia a comportarsi come non dovrebbe..connettendosi direttamente senza il reset,uno può vedere subito il problema senza dover ricreare la situazione iniziale..
oppure semplicemente,mentre l'arduino sta lavorando,vuoi monitorarlo senza interrompere l'esecuzione e senza ripartire dal setup..
altro caso,uno usa l'orologio sotware nello sketch..è inutile doverlo resettare ogni volta,se non sto caricando uno sketch
oppure,durante l'esecuzione,gli mandi dei parametri di configurazione per il tuo programma(ed essendo in fase di test,non vai a memorizzare tutto in eeprom)..se poi riconnetti il pc,i parametri devono essere reimmessi..

è verissimo che ci sono diverse strade per impedire l'autoreset,ma diverse sono semidefinitive(ossia non riesci a fare il reset da software)..oppure devi scrivere un po' di codice..secondo me,sarebbe comodo potersi connettere anche senza resettare l'arduino..
si può fare sta votazione?

Con la Leonardo hanno risolto aprendo e chiudendo la seriale a 1200 baud, questo abilita il reset ,altrimenti non resetta.
Però ha anche un bootloader di 4K.
Da PC c'è la possibilità di realizzare un monitor seriale senza invio del segnale DTR di reset. Oppure ti colleghi ai pin 1 e 0 saltando l'interfaccia USB.

si,conosco queste strade..tranne quella della leonardo..
la mia domanda è: si potrebbe,nelle future versioni dell'IDE,prevedere la possibilità di collegarsi all'arduino senza resettarlo?ossia,senza mandare il segnale DRT..

testato: ecco, mi era venuto in mente ma non ci avevo pensato. In effetti quella lib è una manna dal cielo xò ci sono casi in cui l'autoreset è comodo.
Io penso che magari si potrebbe mettere tra le impostazioni dell'ide, se abilitare o meno l'autoreset

PaoloP:
Con la Leonardo hanno risolto aprendo e chiudendo la seriale a 1200 baud, questo abilita il reset ,altrimenti non resetta.
Però ha anche un bootloader di 4K.

Credo che il bootloader sia 4 kB perché contiene anche il codice per gestire la comunicazione USB dato che l'Atmega32U4 ha il convertitore integrato, a differenza delle schede UNO/MEGA che usano un chip separato. Forse, esaminando il bootloader, si potrebbe cercare di sfruttare lo stesso trucco anche sulle UNO....