Forum: Mikrocontroller und Digitale Elektronik USB hat meinen Mauszeiger gesteuert!


von Yaolan Z. (zhu)


Lesenswert?

Hallo,

ich habe wieder Frage über mein µC-Steuergerät.
Sensor->ADC->µC->FT232RL->PC. Mein Rechner hat schon den USB-eingang
von dem Steuergerät erkannt: COM3, FTDI... Nachdem ich das Gerät
gestart habe, bewegt der Mauszeiger automatisch. Egal was ich mit der
Maus mache, auch Maus weg von PC, passiert es immer.

So heißt es "USB hat meinen Mauszeiger gesteuert." Ich verstehe
nicht, wieso hat mein USB-Anschluss mit dem Mauszeiger zu tun?
Hat jd so was erlebt?

MfG
Yaolan

von Jojo S. (Gast)


Lesenswert?

Wenn dein OS Windows ist: es kann sein das Windows den FT Chip als HID
(human interface device) erkennt und den als Joystick oder Maus
einordnet. Das müsste dann im Gerätemanager so zu sehen sein. Abhilfe
dürfte sein den Treiber von FTDI zu installieren um eine universelle
serielle Schnittstelle zu bekommen.

von Benedikt (Gast)


Lesenswert?

Windows ist schlicht und einfach Müll:

Ich hatte mal einen 433MHz Empfänger am COM Port.
Als ich Windows neu gestartet hatte, hat Windows den als Microsoft Maus
erkannt...

Vermutlich sendet dein uC während du Windows gestartet hast, dann
passiert sowas.

von Wolfram (Gast)


Lesenswert?

Wobei man sich fragen kann wie sauber es ist, dass ein Gerät sendet ohne

das es einen Befehl dazu bekommen hat.

von Tobias S. (tobias)


Lesenswert?

Machte jeder GPS-Empfaenger so ...

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Hat nichts mit HID zu tun (FTDI-Chips sind keine HIDs), sondern mit der
archaischen Unterstützung von seriellen Mäusen.
Kann mit /noserialmice in der Boot.ini abgeklemmt werden.

von Axel R. (Gast)


Lesenswert?

ist als Microsoft Seriell Trackball erkannt worden. Das Theater kennen
viele!
1. keine vom uC an den FTDI Daten schicken
2. im Gerätemanager Gerät deaktivieren (nicht entfernen, sondern rotes
Kreuz drann machen)
3. Rechner neu starten

von Yaolan Z. (zhu)


Lesenswert?

vielen Dank für eure antworten.

@ Rufus: "Kann mit /noserialmice in der Boot.ini abgeklemmt werden."
Was beseutet das?

ich habe etwas im Gerätemanager ausgefunden, dass "Mäuse und
ander..." besitzt "Serieller Microsoft Ballpoint"(COM3). Ich kann es
versuchen, dass dieses Gerät zu deaktivieren.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Boot.ini ist eine Datei, die im Rootverzeichnis der Bootpartition zu
finden ist.

Sieht zum Beispiel so aus:

  [boot loader]
  timeout=5
  default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
  [operating systems]
  multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP
Professional" /noexecute=optin /fastdetect

(das letzte gehört in eine Zeile)

Alternativ kann es helfen, bei den Eigenschaften der seriellen
Schnittstelle die Plug&Play-Unterstützung zu deaktivieren.

von Yaolan Z. (zhu)


Lesenswert?

hi,

Danke Rufus!

ich habe "Serieller Microsoft Ballpoint(COM3)" deaktiviert. Es hat
geklappt! Aber ich kann auf keinen Fall in Matlab die Daten erfassen.
Weiß nicht, ob Matlab nicht eignet oder Problem von meiner Platine.

von Yaolan Z. (zhu)


Lesenswert?

ich erkläre noch etwas, was ich vorher schon in Forum gefragt habe.

Matlab:
s=serial('COM3')

   Serial Port Object : Serial-COM3

   Communication Settings
      Port:               COM3
      BaudRate:           9600
      Terminator:         'LF'

   Communication State
      Status:             closed
      RecordStatus:       off

   Read/Write State
      TransferStatus:     idle
      BytesAvailable:     0
      ValuesReceived:     0
      ValuesSent:         0
...
Wie kann ich die Daten von USB in Matlab aufnehmen? Ist so richtig?

von Wolfram (Gast)


Lesenswert?

du bist schon auf dem richtigen Weg
an COM3 (virtueller COMPort) ist dein Gerät?
in Matlab clickst du auf s im Workspace
dann hast du auch die restlichen Eigenschaften für den seriellen Port
die du an die Parameter deines Gerätes anpassen musst
(Stopbits, Parität, Datenbitanzahl, etc)

von Yaolan Z. (zhu)


Lesenswert?

Ja, COM3 ist mein Gerät, und es wird schon von Windows erkannt. Es steht
in Gerätemanager.

Aber bei Matlab ist es so, egal welcher Port kommt immer gleiche Daten
wie oben geschrieben wird. egal COM1 oder COM3, auch egal ob den USB
von meinem Gerät schon angeschlossen oder nicht.

Habe ich falschen Befehl von Matlab benutzt oder gibt es Fehler bei
meiner Platine?

von Wolfram (Gast)


Lesenswert?

nein du hast nicht den falschen Befehl benutzt
Wenn du mal kurz testest COM30 bekommst du mit dem Befehl auch auf AUCH
wenn er nicht vorhanden ist..
Als Konfiguration wird wahrscheinlich die Standardkonfiguration von
Windows für den Port genommen.
Warum liest du dir nicht einfach einmal die Beschreibung deines Gerätes
durch und konfigurierst anschliessend den Comport mit diesen
Parametern?
Anschliessend würde ich dir die Hilfe von Matlab empfehlen (help
serial)
damit du weisst wie du diese Parameter auch von der Kommandozeile von
Matlab setzen kannst und es nicht immer über den Workspace machen
musst.

>oder gibt es Fehler bei meiner Platine
Was siehst du den im Terminalprogramm wen du dort den Comport öffnest?
Ich würde davon ausgehen das irgendetwas ankommt (Windows hat ja
gedacht es wäre eine Maus)

Ich vermute es wird noch ein Problem auf dich zukommen:
Da die Platine anscheinend ständig sendet wird der inputbuffer für die
serielle Schnittstelle in Matlab sehr schnell überlaufen, wenn du nicht
ständig pollst.

von Yaolan Z. (zhu)


Lesenswert?

Wolfram hat Recht. Ich habe schon die Daten gekriegt. Ich kann es
einstellen, wie groß die InputBufferSize ist.

Aber ich habe noch ein Problem. Ich habe im Programm eine Reihe von
0,1,2,3... bis 1024 unendlich gesendet. Was ich in Matlab gekriegt ist
z.B. 15, 24, 48, 96, 15, 152...

Ich weiss nicht ob mein Programm einfach falsch ist, oder soll ich noch
in PC (z.B Matlab) gemäß Protokoll decoden.

von Wolfram (Gast)


Lesenswert?

>z.B. 15, 24, 48, 96, 15, 152...
wenn die zweite 15     ^ eine 150 ist
würde ich sagen du pollst zu langsam
Sollte das Gerät von dir entwickelt worden sein, stelle das Protokoll
vom reinen Sendeprotokoll auf ein Master Slaveprotokoll um das umgeht
einiges an Problemen.
Sonst ,schneller pollen Inputbuffer vergrößern.
oder eleanter Abfrage in ein ActiveX Modul verlagern und bei Matlab mit
dem ActiveX-Modul kommunizieren.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.