Forum: Mikrocontroller und Digitale Elektronik tastendruck zeitpunkt mitloggen am pc


von Günther G. (grundy)


Lesenswert?

hi leute!

ich bin auf der suche nach einer ganz primitiven lösung für folgende 
aufgabe:
vorhanden ist ein windows-pc mit serieller und paralleler schnittstelle.
weiters gibt es 2 tasten (noch nirgends angeschlossen)
gebraucht wird nun software die eine liste anzeigt zu welcher uhrzeit 
(sekundengenau reicht) welcher knopf gedrückt wurde (ideal wäre auch 
wenn in ein text oder html file erstellt, aber das ist nicht so wichtig)
nun meine fragen:
womit programmiere ich sowas am besten? oder hat jemand sowas schonmal 
zufällig auch gebraucht? bin nicht sehr fit im programmieren zur zeit, 
hab auch nix installiert. mit welcher sprache erzeuge ich ein 
textfenster in windows in das werte eingetragen werden? habe früher 
immer nur dos-programme getippt. notfalls kann ich das ganze auch im 
dosfenster machen aber dort lässt sich der inhalt schwer rauskopiern.
hardwaremässig ists sicher kein problem 2 taster an die serielle oder 
parallele schnittstelle anzuschließen, das bekomm ich hin.
alternative wär auch noch ein kleiner µC der immer seriell eine zeile 
mit der zeit an den pc schickt (sowas hab ich schon hinbekommen :-) 
jedoch ohne zeit da ich nicht weiß wie ich dem pic die aktuelle zeit 
sage.
bin für jeden möglichst schnell realisierbaren tipp dankbar, kann auch 
eine total unseriöse lösung sein oder etwas schlimm gebasteltes, wichtig 
ist nur es wird in 2 tagen gebraucht, hab also nicht viel zeit mich 
irgendwo intensiv reinzulesen.

mfg grundy

von Skeptiker (Gast)


Lesenswert?

Hallo,

du hast 2 Tage Zeit und kaum Ahnung.. das wird schwierig würde ich 
sagen:
Hast du 2 Tage Zeit eine Lösung vorzustellen, oder 2 Tage für ein 
Konzept?

Also die Taster DIREKT an die serielle Schnittstelle anzuschliessen ist 
Murks.

Du brauchst einen kleinen Controller:
- Der reagiert darauf, ob eine taste gedrückt wurde (Entprellung nicht 
vergessen)
- Der Controller hat eine serielle schnittstelle und überträgt einen 
kleinen Datenframe mit der Info an den PC.

Das wars soweit auf controller seite!

Am PC hast du ein Log-Tool (Windows / Linux Applikation) die mit dem 
entsprechenden COM Port verbunden ist und lauscht. Kommt eine Nachricht 
an:
- Logfile öffnen
- String mit Datum + Controller Info erzeugen z.B.:
"12:00:00 19.01.2009 Taste 1 gedrückt"
- und String in Text Datei schreiben
- Logfile schliessen


Controllerschaltung sollte sehr einfach sein mit etwas Erfahrung.
PC Applikation ist auch nichts besonders, wenn Erfahrung mit irgendeiner 
Windows Entwicklungsumgebung vorhanden ist (Qt, Visual C++, .NET, 
Delphi...)

Viel Spass!

von Blackbird (Gast)


Lesenswert?

@Skeptiker, was soll das?

"du hast 2 Tage Zeit und kaum Ahnung.. das wird schwierig würde ich
sagen: ..."

und dann das hier als Dein toller Vorschlag:

"Controllerschaltung sollte sehr einfach sein mit etwas Erfahrung.
PC Applikation ist auch nichts besonders, wenn Erfahrung mit irgendeiner
Windows Entwicklungsumgebung vorhanden ist (Qt, Visual C++, .NET,
Delphi...)"


Die "Murks"-Lösung geht übrigens ganz gut. Sie hat das in der 
Vergangenheit, als COM-Schnittstellen weit verbreitet waren, 
hervorragend getan.

Blackbird

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Günther Grundböck wrote:
> vorhanden ist ein windows-pc mit serieller und paralleler schnittstelle.

Nimm die parralele Schnittstelle, fals Win2000 oder höher mußt du ne DLL 
nutzen um das ganze anszusprechen (such mal nach in_out32.dll da gibts 
auch programmbeispiele).
Das Programm läuft einfach in einer Endlosschleife und wenn ein 
Pegelwechsel erkannt wird gibst du die Aktuelle Uhrzeit aus + 
Tastennummer
dann kannst du das ganze starten mit
meintollesprogram.exe > ausgabe.txt und schon erhälst du eine 
"logdatei".

Wenn du dann noch Zeit hast kannst du natürlich auch noch ne HTML 
generieren lassen ;)

von Walter T. (nicolas)


Lesenswert?

Hallo Günther,

vielleicht ist arduino (http://www.arduino.cc) genau das Richtige für 
Dich, für so einfache Aufgaben gibt es schon fertige Hardware und 
vorgefertigte Lösungen zu Softwareschnittstellen. Anschluß über USB oder 
RS232.

Grüße
Nicolas

von Blackbird (Gast)


Lesenswert?

Die Software HTerm (nicht HyperTerminal von Microsoft) kann die Pegel 
des CTS- und des DSR-Einganges anzeigen. Wie man die Schalter an die 
serielle Schnittstelle bekommt, damit sie ohne Kurzschluß den Pegel von 
+10V auf -10V umschalten, das weißt Du?

Zum Selberprogrammieren (in C/C++) gibt es unter WinNT, W2k, WinXP und 
Vista die API-Funktionen WaitCommEvent() und Co.
Für den Zeitpunkt gibt es z.B. QueryPerformanceFrequency() und Co.

Zum Setzen eines Pegels (für die +10V oder -10V) an RTS (da könnten die 
anderen Enden der Taster dran hängen) gibt es EscapeCommFunction().

Blackbird

von Skeptiker (Gast)


Lesenswert?

kleiner nachtrag:

wenn du die schalter signale direkt an den seriellen port anschliesst, 
darfst du natürlich nicht die entprellung vergessen: Tiefpaß mit R und C 
auf gewünschte Zeitkonstante ("tau = R * C") definieren.

Ok, dann kannst du es natürlich mit der Windows API machen. Dann würde 
sogar ein kleines "DOS Programm" - sprich eine kleine Konsolenanwendung 
reichen. Vielleicht als Startparameter die LogDatei angeben.

Aufruf: "C:\SerialSwitchLog LogFile.txt"

im Hintergrund kannst du dann auf die 2 Pins "lauschen" und mittels File 
Input / Output Functions die Strins schreiben.

dann kann dein Programm ja mittles "cin >> ..." oder getchar (..) 
Parameter einlesen um beispielsweise das Programm zu ändern...

wenn du mehr Zeit hast kannst du ja mal über eine Controller Lösung 
nachdenken! Da wärst du halt evtl. für zunkünftige Erweiterungen 
flexibler :-) Ich wollte dich jetzt net demotivieren. Sorry :-) Sollte 
in 2 Tagen zu machen sein.

MFG

von Günther G. (grundy)


Lesenswert?

erstmal danke für die antworten!
ich nehme auch eine murks lösung, das zeug muss in 2 tagen laufen, darf 
aber in 3 tagen schon wieder kaputt sein ;-)
hab gesucht aber nichts zu einer in_out32.dll gefunden.
in der schule gibts angelich visual c++ auf den pcs, werd mal versuchen 
etwas zu basteln das die zeit in eine datei schreibt wenn etwas auf den 
ports reinkommt.
arduino geht auch, ist aber in 2 tagen nicht zu bekommen.
keine angst, hardwaremässig bin ich einigermaßen fit, nur programmieren 
und µC ist (noch) nicht so meines. zum entprellen nehm ich immer gern 
4093er.
mal sehn was sich morgen ausgeht

von micha (Gast)


Lesenswert?

Nimm zwei Taster und nutze die Stauts-Pins des Anschlusses wie in
Beitrag "Ein/Aus-Schalter über Serielle Schnittstelle"

Hast Du eventuell einen (alten) GAME-Port, dann wirds einfach und geht 
sogar in GWBasic :-)

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.