Zum einen muss man also das USB-Gerät zum lesen öffnen. Wenn man Glück hat
bietet es einen virtuellen COM-Port an, der sich wie eine normale serielle
Schnittstelle öffnen lässt, sonst muss man die USB-Schnittstelle direkt an-
sprechen (WINUSB ?) oder eine Bibliothek des Herstellers verwenden.
Dann muss man das Protokoll des GPS-Empfängers kennen. Es könnte einfacher Text
sein, oder eins der für GPS üblichen Protokolle verwenden.
Vielleich NMEA ?
http://nmea.sourceforge.net/
Vielleicht wäre es hilfreich zu wissen um welches Gerät es sich hier genau handelt!
C++Laie1 schrieb:
Ich habe neulich das Thema ASCII ( Hexadezimal ) im Internet gelesen ... gut ... habs auch gleich ( fast erfolgreich ) fertigbringen können ... nur ... bei mir werden ( mit meiner methode ) imer völlig andere Zeichen angezeigt ... ein Beispiel ...
wenn ich eingebe
cout << "\x048" << endl;
dann steht bei der Ausgabe
H
OBWOHL 048 eig. eine 0 sein sollte oder ?
genauso bei speziellen Zeichen ...
ein Doppelstrich Waagrecht ist laut netz mit dem Code
205
gemarkt ... wenn ich aber einebe
cout << "\x205" << endl;
sehe ich bei der Ausgabe nur ein Pik-Zeichen ...
Was mache ich da denn falsch ? is das schwerer als angenmmen ?
äöü kannst du unter linux einfach so mit puts/printf raushauen (war jedenfalls bei mir so vor ein paar jahren), da wird m.w.n intern utf8 kodiert naja und unter windows tuts bei mir ein
setlocale(LC_ALL, "German");
das klappt mit dem multibytezeichensatz sowie mit unicode(visual studio).
bei älteren windows versionen musst du glaub ich noch die funktion setconsolecodepage bemühen.
und locale.h einbinden nicht vergessen.
Das ist binär 1000000000000001.
Eine der beiden Einsen ist gesetzt, wenn der Key gerade gedrückt ist, die andere, wenn der Key nach dem letzten Aufruf von GetAsyncKeyState gedrückt wurde, nachzulesen hier:
http://msdn.microsoft.com/en-us/library/ms646293(v=vs.85).aspx
Bei dem Vergleich sollte man also wissen, welche Information genau man haben möchte. Außerdem ist meines Wissens nicht garantiert, dass alle anderen Bits auf 0 sind, deshalb wäre ein Maskieren der beiden Bits womöglich die sicherere Variante:
if((GetAsyncKeyState(41) & 0x8001) == 0x8001)
Sehr nett Bei mir hat es aber nicht sofort kompiliert. Ich habe in Zeile 345 einen Cast hinzufügen müssen:
ReadConsoleInput ( h_in, &inbuf, 1, (LPDWORD) &num_records_read );
merano schrieb:
Der Timer selbst kommt wohl auch ohne Thread und Nachrichtenschleife aus.
Nein, der Timer läuft nur, wenn es eine Nachrichtenschleife gibt, deshalb der Thread, der eine solche zur Verfügung stellt.
Danke für deine Antwort. Mittlerweile hat sich das Problem gelöst. Ich kann leider nicht sagen, woran das liegt, ich habe das komplette Programm nocheinmal neu geschrieben und aus irgendeinem grund funktioniert's jetzt. Ich vermute das irgendwo ein Index oder so vertauscht war. Naja jetzt funktionierts ja.
Der Quelltext DOSIDLE.ASM ist sehr interessant.
Hier zum Beispiel das warten auf eine Tastatureingabe
Proc int_21h_normalhlt
sti ; Enable IRQs for following HLT.
mov ah,0bh ; Int 21h FN: "Keypressed?".
test [mode_flags],MODE_APM ; APM usage requested?
jnz short @@apml ; Yes.
@@stdl: hlt ; Enter power saving mode.
pushf ;
call [dword old_int_21h] ; Simulate int 21h without reentrancy.
cmp al,0ffh ; Keystroke ready?
jne @@stdl ; No, continue HLTing.
jmp short @@done ; Finish.
Wie man sieht wird die CPU mit HLT so lange angehalten, bis ein Tastatur-Interrupt sie aufweckt.
VG
merano
das ist nicht all zu einfach: ich gehe mal davon aus, das es sich um einen Dialog handelt, der neben dem Edit auch ein Button hat, der schaltet, wenn die Eingabe Taste gedrückt wird (buttonstyle = BS_DEFPUSHBUTTON).
Du musst den Text des edit controls mittels WM_SETTEXT/GETTEXT (single line control vorausgesetzt) bearbeiten und anschließend dem Parent eine BN_CLICK-notification (als WM_COMMAND) schicken, wobei du dich als der default push button ausgeben must. Das Handel zu diesem Button kannst du finden, indem du alle child controls des entsprechenden Fensters durchgehst (EnumChildWindows()) und auf den entsprechenden style BS_DEFPUSHBUTTON prüfst.
Eine Garantie, dass es funktioniert, gibt es dabei nicht - einen Versuch ist es aber wert.
Hier noch mal etwas, wenn kein MS-Compiler am Start ist:
http://www.codeguru.com/forum/archive/index.php/t-501416.html
Hab keinen zum Testen, eventuell funktioniert beides auf MS-Compilern.
MfG f.-th.
Danke für die vielen Beiträge
ich versuche es gerade mit einer std::map umzusetzen, stehe aber auf dem Schlauch. Naja wenn ichs hinbekommen hab werde ich es posten.
Verstehe ich nicht ... erstens könntest Du die Farbe des darüberliegenden Zeichens ja erst mal auslesen und dann an der gewünschten Stelle setzen, zweitens könntest Du - wenn ich Dein oa Bild richtig verstehe - auch den ganzen Block auf einmal runterscrollen:
http://msdn.microsoft.com/en-us/library/ms685107(v=vs.85).aspx
Edit: Die printf - Anweisung brauchst Du gar nicht, wenn da sowieso schon das richtige Zeichen steht ...
Bashar schrieb:
elise schrieb:
Bitsy schrieb:
Herzlichen Glückwunsch zum 10.Jahrestag im Forum
*anstoss*
Oh, ich ja auch! *anstoß*
Ist zwar mittlerweile total offtopic, aber dass ich das noch erlebe, dass Du mal ein wenig aus der Reserve kommst - *prost* !