Hallo zusammen,
ich brauche bei einem aktuellen Projekt Hilfe.
Wir haben Produktionsmaschinen im Einsatz die über einen resistiven
Touch bedient werden.
Die Steuerung übernimmt eine SPS mit einem abgespeckten Windows CE 4.2.
Bei der rauen Umgebung in der Produktion wird der Touch ziemlich
beansprucht, wodurch sich die obere Schicht mit der Zeit so stark
abnutzt, dass keine Eingaben mehr möglich sind.
Bisher mussten wir das Touch overlay alle 2 Jahre austauschen.
Der Hersteller hat das Problem seit längerem erkannt und auf kapazitive
Touchscreens umgestellt. Leider sind diese nicht kompatibel.
Bis vor einiger Zeit gab es die Touch overlays als Ersatzteil, nun kann
nur noch die Komplette Einheit (Touch, LCD und SPS) erworben werden.
Da wir nicht alle 2 Jahre bei mehreren Maschinen die komplette Steuerung
ersetzen können/wollen muss eine alternative Lösung her.
Auf dem Windows ist nur ein Standard Maus und Standard Tastatur Treiber
installiert, über die im Notfall die Maschine mit Maus und Tastatur
bedient werden kann.
Meine Idee war das resistive Touch Overlay einfach durch einen
kapazitives Touch Overlay zu ersetzen und per USB anzuschließen.
Leider ist es nicht möglich auf dem abgespeckten Windows CE 4.2
zusätzliche Software/Treiber zu installieren.
Der Hersteller verweist nur auf die neue Steuerung da die alte nicht
mehr Supported wird.
Eine Umrüstung auf die aktuelle Steuerung würde allerdings enorme
Kosten, Aufwand und Produktionsstillstand verursachen.
Ohne Treiber läuft der Touch nicht. Einen Prototyp zu Testzwecken habe
ich bereits vor Ort.
Gibt es die Möglichkeit mit einem Zusätzlichen Hardwaremodule (Arduino,
Raspberry...) eine Standard USB Maus zu simulieren und die Eingaben des
Touches umzuwandeln und weiterzureichen?
Eine Arduino Micro beispielsweise kann ja ein Standard USB Eingabegerät
simulieren und Maus oder Tastatursignale senden, allerdings müsste ich
zuvor ja den Touch am Arduino anschließen und die Eingaben des Touch
irgendwie auswerten.
Oder hat jemand einen alternativen Lösungsvorschlag?
Hallo,
schau dir mal das USB-Maus-Beispiel von PJRC an.
https://www.pjrc.com/teensy/usb_mouse.html
Dieses Programm läuft auf einem Teensy2.0, aber auch (mit ganz kleinen
Änderungen) auf einem ProMicro mit Atmega32u4 für weniger als 5,-
Gruss
Michael schrieb:> Gibt es die Möglichkeit mit einem Zusätzlichen Hardwaremodule (Arduino,> Raspberry...) eine Standard USB Maus zu simulieren
Das ist der einfache Teil der Aufgabe, das geht mit Arduino, Raspbi,
eigenem Controller und hundert anderen Hardware-Lösungen. Darüber würde
ich mir vorläufig keine grossen Gedanken machen.
Das Problem sehe ich in Anschluss und Auswertung des (neuen)
Touchscreens, aber darüber finde ich nichts im Post, oder habe ich das
übersehen? Gibt es dafür überhaupt Unterlagen über
Hardware-Schnittstelle und Protokolle?
Georg
Danke euch für den Input.
>Das Problem sehe ich in Anschluss und Auswertung des (neuen)>Touchscreens, aber darüber finde ich nichts im Post, oder habe ich das>übersehen? Gibt es dafür überhaupt Unterlagen über>Hardware-Schnittstelle und Protokolle?
Das war der entscheidende Hinweis!
Meine Gedankengänge haben sich zu sehr auf die übermittlung der
Mausposition zum Endgerät fixiert.
Über das Abgreifen der Signale vom Touch hab ich mir zu wenig Gedanken
gemacht. Ich wollte den Touch per USB mit einem System für das es einen
Treiber gibt verbinden und dann die Mausposition der GUI weiterleiten.
Natürlich geht das viel einfacher und Störunanfälliger mit dem direkten
Auswerden der Rohdaten vom Controller.
Hab mir jetzt die Dokumentation des Controllers vom Hersteller geholt
und werd das mal durcharbeiten.
Wenn ich nicht weiter komme melde ich mich erneut, ansonsten stelle ich
das fertige Projekt hier ein.
Ich sehe hier einen Denkfehler:
Es gibt keine "Mausposition", sondern nur Maus-Bewegungen (mit Richtung
und Geschwindigkeit).
Positionen gibt es bei Eingabe-Tablets. Da kannst du auf einen Punkt
tippen und der Cursor springt dann dort hin.
Michael schrieb:> Auf dem Windows ist nur ein Standard Maus und Standard Tastatur Treiber> installiert, über die im Notfall die Maschine mit Maus und Tastatur> bedient werden kann.
Dann hast du schon fast gewonnen.
Was du brauchst, ist ein popliger µC-Modul, der USB-device kann. Leg dir
dazu einfach so ein BluePill-Dingens zu, alternativ das Projekt
(STM32F103C8T6.ZIP), was ich vor geraumer Zeit hie rmal gepostet habe.
Dann guckst du, was für ein Touch-Controller auf deinem kapazitiven
Touch drauf ist. Die Dinger haben fast immer nen I2C als Anschluß.
Code für den GOODIX GT911 kannst du von mir kriegen, allerdings ist es
auch kein Thema, sich den selbst zu schreiben. Ich hab auch Code für den
Focaltech FT5336.
Der GT911 ist etwas tricky, zum Auslesen muß man das 1. Byte im
Resultblock ab 0x814E mit ner Null beschreiben und dann den ganzen Block
auslesen. Obendrein hat der GT911 kein Touch-Up Ereignis, weswegen man
bei ihm mit nem Timeout arbeiten muß: wenn länger als etwa 100 ms kein
Interrupt vom Touch gekommen ist, dann sollte man µC-intern daraus das
Mouse-Up Ereignis generieren.
Der FT5336 ist fast gleich, aber er kennt Touch-Up, weswegen der obige
Workaround nicht nötig ist.
Was du dann noch machen mußt, ist ein USB-Maus-Device im µC zu
implementieren und aus den Koordinaten die passenden Mausereignisse zu
generieren.
That's it.
W.S.
Die Multitouch-Screens von 3M funktionieren mit standard HID Treiber und
könnten mit Glück auch an so alten Betriebsystemen funktionieren.
Grundsätzlich bringt Windows CE 4.2 HID Treiber und auch Touchscreen
Unterstützung mit. Es wäre also einen versuch wert.
Abgesehen von 3M pCap Sensoren habe ich bisher mit allen anderen
Herstellern nur Schwierigkeiten gehabt. Dort braucht man immer
irgendwelche proprietäre Software zum Kalibrieren. Die Koordinaten der
3M Screens sind ab Werk schon gut.
https://www.3mdeutschland.de/3M/de_DE/unternehmen-de/3m-touchscreen-loesungen/
Die Windows HID Treiber unterstützen absolute Pointer ohne weitere
Treiber. Ich habe einen Adapter von einem alten seriellen Tablet auf USB
mit einem Tiny85 und V-USB gebaut, der vom Mac, von Linux und von
Windows (zumindest ab XP) richtig erkannt wird.
Man muss also nicht Bewegungen simulieren, sondern lediglich den USB
Deskriptor auf absolut anpassen - und natürlich sinnvolle Daten senden.
Eine eigene Frage?
Dieser Thread ist über 8 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.