Go Down

Topic: Arduino + Seriale (rxtx) (Read 4 times) previous topic - next topic

supergiox

non so più dove sbattere la testa :(
Adesso neanche arduino IDE mi vede più /dev/ACM0
l'output di lsusb è questo:
Code: [Select]

Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 003: ID 046d:c316 Logitech, Inc. HID-Compliant Keyboard
Bus 006 Device 002: ID 046d:c018 Logitech, Inc. Optical Wheel Mouse
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 003: ID 093a:2468 Pixart Imaging, Inc. SoC PC-Camera
Bus 004 Device 002: ID 2341:0001 
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub


e quello di dmesg è questo:
Code: [Select]

[   29.998434] vboxdrv: Successfully done.
[   29.998435] vboxdrv: Found 4 processor cores.
[   29.998514] VBoxDrv: dbg - g_abExecMemory=ffffffffa0decd60
[   29.998556] vboxdrv: fAsync=0 offMin=0x53a offMax=0x20b8
[   29.998605] vboxdrv: TSC mode is 'synchronous', kernel timer mode is 'normal'.
[   29.998606] vboxdrv: Successfully loaded version 3.2.8_OSE (interface 0x00140001).
[  121.993023] lo: Disabled Privacy Extensions
[  322.625042] usb 4-1: USB disconnect, address 2
[  325.960076] usb 4-1: new full speed USB device using ohci_hcd and address 4
[  326.155040] cdc_acm 4-1:1.0: ttyACM0: USB ACM device


Probabilmente tra i mille tentativi avrò toccato qualcosa che non dovevo... il problema è ricordarsi cosa! :(

supergiox

#16
Mar 09, 2011, 08:37 pm Last Edit: Mar 09, 2011, 09:03 pm by supergiox Reason: 1
Almeno il problema dell'IDE l'ho risolto (installando i pacchetti deb di Ubuntu Natty) :)

Adesso vorrei fare quello che mi hai suggerito tu, però lsusb non mi da quelle informazioni
(Arduino è quello senza nome)

lesto

uhmm starno, dmesg dice che è collegato... dovrebbe comparire sia nell'ide che in lsusb, e da lì prendi le info.
magari prova con sudo lsusb ma non credo caverai molto..
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

supergiox

#18
Mar 09, 2011, 09:11 pm Last Edit: Mar 09, 2011, 09:27 pm by supergiox Reason: 1
Si avevo pensato la stessa cosa, ma non è cambiato niente..
So che è Arduino perchè se lo scollego non compare più quella voce senza nome

La cosa che mi insospettisce è che prima utilizzavo l'IDE scaricato dal sito Arduino e funzionava, adesso non funziona e riesco ad usare solo quella dei repository di Natty (stessa versione 2.2)

Ho appena provato ad avviare Ubuntu in modalità live, ed lsusb mi da lo stesso risultato di prima...
Ho provato anche su un altro pc con Ubuntu, però Lucid 32bit, e su lsusb c'è sempre quella riga vuota!
è colpa di arduino?

lesto

allora è lui, semplicemente a quanto pare non si identifica con in nome!
semplicemente non metti ATTRS{product}=="nome trovato" nel file che crei, lasci solo i due ID:
vendor:2341
product: 0001
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

leo72

Ma /dev/ttyACMx viene assegnato dal kernel perché l'Uno funziona così.
Non è che forzandogli questa cosa poi sballa tutto?

supergiox

Qualche novità! :)
Adesso dentro /dev ho ttyUSB0 e ttyUSB2

Con processing e con java riesco a vedere la periferica ttyUSB0, ma:
-processing continua ad andare in crash
-con eclipse ho questo output
Code: [Select]
Stable Library
=========================================
Native lib Version = RXTX-2.1-7
Java lib Version   = RXTX-2.1-7
Started
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007f73bf94e462, pid=9411, tid=140135112144640
#
# JRE version: 6.0_24-b07
# Java VM: Java HotSpot(TM) 64-Bit Server VM (19.1-b02 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# C  [librxtxSerial.so+0x6462]  read_byte_array+0x52
#
# An error report file with more information is saved as:
# /home/giorgio/workspace/SerialTest/hs_err_pid9411.log
#
# If you would like to submit a bug report, please visit:
#   http://java.sun.com/webapps/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#
Experimental:  JNI_OnLoad called.

lesto

Code: [Select]
Ma /dev/ttyACMx viene assegnato dal kernel perché l'Uno funziona così.
Non è che forzandogli questa cosa poi sballa tutto?


nono, stai creando un link, quindi un collegamento... ttyACMx rimane! quindi niente sballi

@supergiox: hai creto le regola udev? come mai 2 USB? dovrebbe essere solo una! l'errore avviene su tutte due ed è lo stesso?

l'errore proviene da "C  [librxtxSerial.so+0x6462]  read_byte_array+0x52" i file .so sono le librerie native, sicuro di aver linkato quella giusta? e che processing e eclipse siano per 64 bit? la JVM è già a posto (64bit)
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

supergiox

Eclipse  l'ho installato dai repository di Ubuntu, ma non ho mai letto da nessuna parte 64bit (neanche in about..)
processing l'ho scaricato dal sito ufficiale, e posso solo scegliere il sistema operativo
http://www.processing.org/download/

Le librerie su processing le installo come ho scritto in un post precedente:
copiando "rxtx-2.1-7-bins-r2/RXTXcomm.jar" e "rxtx-2.1-7-bins-r2/Linux/x86_64-unknown-linux-gnu/librxtxSerial.so" nella cartella "processing1.2.1/libraries/serial/library/"

Su eclipse invece faccio così:
tasto destro su proprietà del progetto -> java build path -> libraries -> add external JARs -> seleziono RXTXcomm.jar
apro il menù a tendina del JAR appena caricato -> Native library location -> seleziono dal mio hard disk la directory "rxtx-2.1-7-bins-r2/Linux/x86_64-unknown-linux-gnu/"

sbaglio qualcosa?

supergiox

#24
Mar 09, 2011, 10:57 pm Last Edit: Mar 09, 2011, 11:11 pm by supergiox Reason: 1
(Quasi) Ottime notizie!! :D
Visto che l'errore riguarda il file .so ho scaricato l'ultima versione (unstable) delle librerie e ho importato questa nel progetto (jar e .so) al posto della precedente!
Ho solo un warning:
Code: [Select]
RXTX Warning: Removing stale lock file. /var/lock/LCK..ttyUSB0

ma per il resto vengono visualizzato uno dopo l'altro i caratteri letti dalla seriale :)

Con processing, ho provato a fare lo stesso...
Anche lì mi da il warning, riesce ad elaborare per una frazione di secondo l'immagine (che dipende dall'input della seriale) e poi si blocca come prima!

EDIT:
Dimenticavo! Ho scoperto che il sistema non è totalmente bloccato, riesco ad entrare via SSH e il processo che consuma il 100% di cpu è Xorg!

lesto

processing possiede già al suo interno rxtx! cancella processing e riparti da una installazione pulita, e usa questi comandi:
http://www.processing.org/reference/libraries/serial/index.html

Code: [Select]
RXTX Warning: Removing stale lock file. /var/lock/LCK..ttyUSB0
questo è normale, compare anche a me

ma il codice che usi in processing qual'è?
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

supergiox

Intanto non so come ringraziarti per Eclipse :) Dopo due giorni finalmente funziona!! :)

Su processing, lo sketch che fa bloccare il pc l'ho scritto nel primo post... ma credo che sia un problema legato a librerie grafiche a questo punto..
In questo momento sto provando questo codice:
Code: [Select]

import processing.serial.*;
Serial port;

float val;
void setup() {
println(Serial.list());
String arduinoPort = Serial.list()[0];
port = new Serial(this, arduinoPort, 9600);
println("Sono collegato a " +arduinoPort);
}

void serialEvent(Serial port) {
   val = port.read();
    println( "Raw Input:" + val);
}


Una sola volta è riuscito a visualizzarmi il primo valore di val, tutte le altre volte si ferma quì:
Code: [Select]

WARNING:  RXTX Version mismatch
Jar version = RXTX-2.2pre1
native lib Version = RXTX-2.2pre2
[0] "/dev/ttyUSB0"
[1] "/dev/ttyS0"
Sono collegato a /dev/ttyUSB0


Mentre con l'installazione pulita non parte proprio:
Code: [Select]

[i]Error inside Serial.ports()[/i]
java.lang.UnsatisfiedLinkError: /home/giorgio/Scaricati/processing-1.2.1-new/libraries/serial/library/librxtxSerial.so: /home/giorgio/Scaricati/processing-1.2.1-new/libraries/serial/library/librxtxSerial.so: classe ELF errata: ELFCLASS32 (Possible cause: architecture word width mismatch) thrown while loading gnu.io.RXTXCommDriver
java.lang.UnsatisfiedLinkError: /home/giorgio/Scaricati/processing-1.2.1-new/libraries/serial/library/librxtxSerial.so: /home/giorgio/Scaricati/processing-1.2.1-new/libraries/serial/library/librxtxSerial.so: classe ELF errata: ELFCLASS32 (Possible cause: architecture word width mismatch)
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1803)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1728)
at java.lang.Runtime.loadLibrary0(Runtime.java:823)
at java.lang.System.loadLibrary(System.java:1028)
at gnu.io.CommPortIdentifier.<clinit>(CommPortIdentifier.java:83)
at processing.serial.Serial.list(Unknown Source)
at sketch_mar10a.setup(sketch_mar10a.java:27)
at processing.core.PApplet.handleDraw(Unknown Source)
at processing.core.PApplet.run(Unknown Source)
at java.lang.Thread.run(Thread.java:619)
processing.app.debug.RunnerException: RuntimeException: Error inside Serial.ports()
at processing.app.Sketch.placeException(Sketch.java:1543)
at processing.app.debug.Runner.findException(Runner.java:582)
at processing.app.debug.Runner.reportException(Runner.java:558)
at processing.app.debug.Runner.exception(Runner.java:498)
at processing.app.debug.EventThread.exceptionEvent(EventThread.java:367)
at processing.app.debug.EventThread.handleEvent(EventThread.java:255)
at processing.app.debug.EventThread.run(EventThread.java:89)
Exception in thread "Animation Thread" java.lang.RuntimeException: Error inside Serial.ports()
at processing.serial.Serial.errorMessage(Unknown Source)
at processing.serial.Serial.list(Unknown Source)
at sketch_mar10a.setup(sketch_mar10a.java:27)
at processing.core.PApplet.handleDraw(Unknown Source)
at processing.core.PApplet.run(Unknown Source)
at java.lang.Thread.run(Thread.java:619)


E poi, è normale che sia tutto così lento?
Con eclipse ci vogliono circa 10 secondi, con processing praticamente 10 secondi per ogni riga..
e il processore durante l'esecuzione è in media al 70%

lesto

ok, processing (non chiedermi perchè) a quanto pare usa rxtx a 32bit... ovvio che quì casca l'asino:
Code: [Select]
(Possible cause: architecture word width mismatch)

quindi è giusto che segui la tua procedura di sostituire rxtx, a quanto pare il fatto che hai il jar della versione pre2 e il .so della versione pre1 non è un problema (dal sito: http://rxtx.qbang.org/wiki/index.php/Download)
io scaricherei la 2.1 giusto per sicurezza. ma la nativa hai messo la ia64bit o x86_64bit? perchè la ia è solo per alcune cpu intel...
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

supergiox

#28
Mar 10, 2011, 01:42 am Last Edit: Mar 10, 2011, 02:23 am by supergiox Reason: 1
Finora ho sempre usato x86_64 (ho un AMD)
Le librerie RXTX che non mi funzionavano erano 2.1.7 (che se non sbaglio sono quelle che usa processing di default).
Le 2.2 funzionano su Eclipse, e su processing fanno qualcosa in più rispetto alle 2.1.7...

Secondo me si potrebbe provare a compilarle dai sorgenti.. In teoria così non ci dovrebbero essere problemi di architettura diversa
Ieri ho provato, ma al "make install" mi dava un errore e ho cercato altre strade più semplici

EDIT:
Ho impostato java e le variabili d'ambiente per funzionare da terminale ed è tutto ok!
Però se possibile vorrei che gli eseguibili java e javac fossero quelli che ho scaricato io (in una cartella che ho impostato in PATH), non quelli presenti in /usr/bin.
Li sostituisco brutalmente?
Perche se disinstallo sun-java6-bin dal gestore pacchetti, automaticamente mi installa open-jdk

Go Up