Go Down

Topic: USB Verbindung wird unterbrochen (Read 846 times) previous topic - next topic

Tesch

Hi!
Bin ziemlich neu hier und was Mikrocontroller im Allgemeinen angeht auch noch in meiner Anfangsphase,
kann also gut sein, dass mein Problem von sehr simpler Natur ist aber sofern mir wer helfen kann solls mir recht sein ;)
Nun ja erst mal zu meinem Projekt:
Momentan sitz ich dran einen alten Fernschreiber mittels Arduino dazu zu bringen Zeichen auszugeben.
Das hatte ich schon per Parallelport wunderbar geschafft, wollte das ganze jedoch etwas schöner per Arduino lösen.
Jetzt funktioniert mittlerweile auch alles(auch das ansteuern über den Seriellen Port meines Taschenrechners(Casio FX-880P:))) jedoch hab ich das Problem,
dass ich wenn ich den Arduino per USB an den Rechner hänge die Verbindung nach ein paar Zeichen irgendwann einfach abbricht.
Es sind auch nicht immer gleich viele Zeichen, also manchmal gingen 20 am Stück, manchmal 2, d.h. es liegt meiner Meinung nach nicht an der Arduino Seite.
Sehe das Problem eher darin, dass mein Kubuntu(64Bit) irgendwas im Hintergrund macht was darauf zugreift und mir den Port quasi kurz "wegnimmt".
Jetzt bin ich da aber auch nicht so tief in der Materie drinn, dass ich wüsste wo ich sowas nachkucken kann bzw. woran das liegen könnte.
Jetzt wollt ich wissen ob hier schon mal jemand ähnliches erlebt hat, bzw. weiß woran das liegen kann.

Hier die Fehlermeldung die ich von der Arduino Software bekomme:
(mit dem screen befehl krieg ich auch nach ner gewissen Anzahl "[screen is terminating]")
Code: [Select]

java.io.IOException: Input/output error in writeArray
     at gnu.io.RXTXPort.writeArray(Native Method)
     at gnu.io.RXTXPort$SerialOutputStream.write(RXTXPort.java:1124)
     at processing.app.Serial.write(Serial.java:469)
     at processing.app.Serial.write(Serial.java:492)
     at processing.app.SerialMonitor.send(SerialMonitor.java:128)
     at processing.app.SerialMonitor.access$100(SerialMonitor.java:29)
     at processing.app.SerialMonitor$3.actionPerformed(SerialMonitor.java:75)
     at javax.swing.JTextField.fireActionPerformed(JTextField.java:509)
     at javax.swing.JTextField.postActionEvent(JTextField.java:722)
     at javax.swing.JTextField$NotifyAction.actionPerformed(JTextField.java:837)
     at javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1664)
     at javax.swing.JComponent.processKeyBinding(JComponent.java:2851)
     at javax.swing.JComponent.processKeyBindings(JComponent.java:2886)
     at javax.swing.JComponent.processKeyEvent(JComponent.java:2814)
     at java.awt.Component.processEvent(Component.java:5885)
     at java.awt.Container.processEvent(Container.java:2105)
     at java.awt.Component.dispatchEventImpl(Component.java:4469)
     at java.awt.Container.dispatchEventImpl(Container.java:2163)
     at java.awt.Component.dispatchEvent(Component.java:4295)
     at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1881)
     at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:749)
     at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1025)
     at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:892)
     at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:713)
     at java.awt.Component.dispatchEventImpl(Component.java:4339)
     at java.awt.Container.dispatchEventImpl(Container.java:2163)
     at java.awt.Window.dispatchEventImpl(Window.java:2478)
     at java.awt.Component.dispatchEvent(Component.java:4295)
     at java.awt.EventQueue.dispatchEvent(EventQueue.java:604)
     at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:275)
     at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:200)
     at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:185)
     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:177)
     at java.awt.EventDispatchThread.run(EventDispatchThread.java:138)


Quelltext passt nich rein, kann aber bei Bedarf irrelevante Sachen rausschmeißen und ihn dann gekürzt einfügen.


Schonmal Danke,
Tesch

uwefed

Zuerst zur Hardware.
Du hast einen Arduino 2009?
Wie hast Du den Taschenrechner und den Fernschreiber angeschlossen?
Grüße Uwe

Tesch

Jap is ein 2009er.
Der Taschenrechner hat nen Seriellen Port, d.h. TX vom Taschenrechner an RX vom Arduino, Ground an Ground, Baudrate auf beiden Seiten richtig einstellen(was nicht so schön ist, da auf der Taschenrechnerseite der Befehl ist: COM0"SAVE:Baudratenindex(wobei das eine Zahl zwischen 1 und 6 ist mit 1=150,2=300,...,6=4800 und eben nicht wie ich lange dachte direkt die Baudrate)).
Damit gehts auch wirklich ohne Probleme, bisher ist alles angekommen.
Der Fernschreiber hängt mit nem Relais drann, d.h. ein Arduinoport stueret hier ein Relais, was dann auf die Spule der Empfangseinheit 12V gibt.
Dann hab ich noch ein Solid-State Relais zum kompletten ein- und ausschalten, was aber für die Funktionalität eher zweitrangig ist.
Ich probiers heut nachmittag auch mal an nen Windows-Rechner zu hängen, dann wweiß ich auch sicher obs an meinem Linux liegt.

uwefed

#3
Aug 12, 2010, 05:06 pm Last Edit: Aug 12, 2010, 05:10 pm by uwefed Reason: 1
Ein Relais ist zu langsam um sicher mit der notwendigen Frequenz zu öffnen und zu schließen; kannst Du es nicht mit einem Transistor oder gegenenfalls mit einem Optokoppler plus Transistor machen?
Du kannst auch nicht Auf dem RX pin den Taschenrechner und paralell dazu den FT232 der die USB-schnittstelle bereitstellt.

Du könntest die Bibliothek SoftwareSerial für den Taschenrechner benutzen. http://arduino.cc/en/Reference/SoftwareSerial
ICh weiß aber nicht ob es dann Timingprobleme mit dem ausgang zum Fernschreiber gibt. Mußt Du ausprobieren.

Grüße Uwe

Tesch

Quote
Ein Relais ist zu langsam um sicher mit der notwendigen Frequenz zu öffnen und zu schließen; kannst Du es nicht mit einem Transistor oder gegenenfalls mit einem Optokoppler plus Transistor machen?

Kanns sein, dass du mich falsch verstanden hast?
Ein Relais ist nicht zu langsam, es funktioniert wunderbar damit, mein Problem liegt eindeutig wo anders.

Quote
Du kannst auch nicht Auf dem RX pin den Taschenrechner und paralell dazu den FT232 der die USB-schnittstelle bereitstellt.

Auch das ist mir sehr wohl bewusst.
Wie gesagt, nur Taschenrechner geht, nur USB nicht.



uwefed

"Auch das ist mir sehr wohl bewusst.
Wie gesagt, nur Taschenrechner geht, nur USB nicht."

Ja ich weiß; wenn Du den Schaltplan des Arduijno 2009 anschaust dann siehst Du, daß auf dem RX und TX Leitungen zwischen dem FT232 und dem Arduino 2 Widerstände zu 1 kOhm sind. Wenn Du den Taschenrechner direkt auf pin 0 gibst kann der FT232 den Logikpegel nicht ändern.

Grüße Uwe

Go Up