Pages: [1]   Go Down
Author Topic: USB Verbindung wird unterbrochen  (Read 795 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 5
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 smiley-wink
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:
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
Logged

BZ (I)
Online Online
Brattain Member
*****
Karma: 271
Posts: 21881
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

0
Offline Offline
Newbie
*
Karma: 0
Posts: 5
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

BZ (I)
Online Online
Brattain Member
*****
Karma: 271
Posts: 21881
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
« Last Edit: August 12, 2010, 10:10:48 am by uwefed » Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 5
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.


Logged

BZ (I)
Online Online
Brattain Member
*****
Karma: 271
Posts: 21881
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

"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
Logged

Pages: [1]   Go Up
Jump to: