- 12V Akku mit 280 Ah bauen         
Seite 3 von 5 ErsteErste 12345 LetzteLetzte
Ergebnis 21 bis 30 von 41

Thema: COM-Abfrage

  1. #21
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    06.07.2004
    Beiträge
    122
    Anzeige

    Powerstation Test
    ich möchte das am COM-Port empfangene char im hauptprogramm weiterverarbeiten. Z.B. an einem Memo anzeigen lassen...

  2. #22
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    31.01.2004
    Ort
    36399
    Alter
    50
    Beiträge
    1.562
    wenn es nur ein char ist mach es mit postmessage ist besser

    PostMessage(<festerhandle>,WM_USER+X,NULL,CHAR);

    im Form dann muß du die Funktion des Message handler über schreiben


    Code:
    procedure AppMessages(var Msg: Tmsg; var Handled: Boolean);
    ....
    procedure TMainForm.AppMessages(var Msg: Tmsg; var Handled: Boolean);
    // Eigener Messages Handler
    begin
      if not Handled then
      begin
        if Msg.message = WM_USER+X then
        begin
          HandleBuffer(Msg.lParam);
          Handled := true;
        end;
      end;
    end;
    Gruß
    P: Meine Tochter (06.11.07) und https://www.carnine.de
    M: Träumen hat nix mit Dummheit zu tun es ist die Möglichkeit neues zu erdenken

  3. #23
    Neuer Benutzer Öfters hier
    Registriert seit
    06.09.2005
    Alter
    40
    Beiträge
    20
    Hast du es schon mal mit einem Trminel Programm versucht?
    Schau mal auf www.emtec.com lade das Terminel Program zoc herunter.

    gruß tobias

  4. #24
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    31.01.2004
    Ort
    36399
    Alter
    50
    Beiträge
    1.562
    was nutzt mir ein Terminal programm wenn ich die Daten weiter verarbeiten will ?

    Gruß
    P: Meine Tochter (06.11.07) und https://www.carnine.de
    M: Träumen hat nix mit Dummheit zu tun es ist die Möglichkeit neues zu erdenken

  5. #25
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    07.07.2004
    Ort
    um Berlin
    Beiträge
    346
    Und wenn das Hauptprogramm ein Windows-Fenster ist und Du sehr viele Bytes zu senden hast, kannst Du ein Editfeld (sichtbar oder auch nicht) erstellen und mit:
    Code:
    	// Text an die Editbox anhängen:
    	// 1. an das Ende springen
    	SendMessage (hwndEdit, EM_SETSEL, (WPARAM)-2, (LPARAM)-2); 
    	// 2. Text anhängen
    	SendMessage (hwndEdit, EM_REPLACESEL, (WPARAM)0 , (int)szText);
    das Editfeld mit szText beschreiben, weil diese Messages in eine Queue gehen.
    Geht natürlich nur bei ASCII-Zeichen.

    Bei Binär-Daten kannst Du Dir einen eigene Linked List anlegen, in der jede Message eine neues Element ist (und nach dem Lesen wieder freigegeben wird) oder Du erstellst einen Socket und tauschst die Daten per UDP zwischen dem COM-Empfangs-Thread und dem Hauptprogramm aus.

    Blackbird

  6. #26
    Neuer Benutzer Öfters hier
    Registriert seit
    06.09.2005
    Alter
    40
    Beiträge
    20
    Du kannst die die Daten die du über das Terminal program einlist sehr wohl weiterverarbeiten.
    tobias

  7. #27
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    31.01.2004
    Ort
    36399
    Alter
    50
    Beiträge
    1.562
    @Blackbird warum so kompliziert ?

    kann doch einfach auch einer Pointer macher auf ein array of byte
    und den per nachricht verschicken. Geht wunderbar mach ich den ganzen tag.

    Also im thread:

    buffer = new byte[3];
    buffer[1] = 1;
    buffer[2] = 2;
    buffer[3] = 3;

    PostMessage(<fensterhandle>,WM_USER,NULL,(long)buf fer);

    im Fenster

    if Msg = WM_USER then
    byte* buffer = (byte*) LPARAM;
    // daten ver arbeiten
    delete buffer
    end if

    gruß
    P: Meine Tochter (06.11.07) und https://www.carnine.de
    M: Träumen hat nix mit Dummheit zu tun es ist die Möglichkeit neues zu erdenken

  8. #28
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    06.07.2004
    Beiträge
    122
    Danke für die Antworten, jedoch müsst ihr wissen, dass ich bis jetzt immer am "Messagen" versuchen war, jedoch total nicht durchblicke...
    Ich habe Blackbirds Code übernommen, jedoch reklamiert der Builder wegen dem hwindEdit1 (Bei mir heisst das Editfeld Edit1... darum habe ichs geändert... weiss nicht ob man das darf...)
    Ich weisss eben lustigerweise auch nicht was ein Handler ist...

    Hoffentlich könnt ihr mir trotzdem helfen...

  9. #29
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    07.07.2004
    Ort
    um Berlin
    Beiträge
    346
    @surfer,
    hwndEdit ist das Handle des Editfeldes, das beim Erstellen des Editfeldes mit
    HANDLE hwndEdit = CreateWindows(...);
    zurückgeliefert wird.

    @NumberFive,
    machen kann man das, aber ich code um's Verrecken nicht mehr getrennte new-delete-Paare.

    Blackbird

  10. #30
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    06.07.2004
    Beiträge
    122
    Bei mir gibt es aber wegen dem hwndEdit1 ein Fehler...???

Seite 3 von 5 ErsteErste 12345 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress