- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 5 von 7 ErsteErste ... 34567 LetzteLetzte
Ergebnis 41 bis 50 von 64

Thema: LPT mit C++ ?

  1. #41
    Benutzer Stammmitglied
    Registriert seit
    03.07.2005
    Ort
    Ruhrgebiet
    Alter
    42
    Beiträge
    41
    Anzeige

    Praxistest und DIY Projekte
    spitze viellen dank auf das mit dem Dualen system wehre ich jetzt nicht gekommen aber ist ja logisch einbißchen nachdenken werde ich jetzt wohl selber müssen bei der erstellung meines programms ich will versuchen wenigstens das selber machen zu können .

    Ich habe vielleicht meine vorherige frage schlecht gestellt wollte eigentlich wissen wie ich signale z.B Schalter stellungen einlesen kann ob inp funktinieren würde?wenn Drucker signale eingelesen werden können wie dein beispiel mit dem leeren Papier müsste sowas doch auch gehen?

  2. #42
    Benutzer Stammmitglied
    Registriert seit
    03.07.2005
    Ort
    Ruhrgebiet
    Alter
    42
    Beiträge
    41
    Hi es klappt alles super leider komm ich nicht weiter mit Signalen lesen ich weiss nicht genau was ich da für den Status Register(die dazugehörigen Pins) definiren muss ion der Kopfzeile. define LPT1 0x379 wehre richtig oder?dann weiss ich aber nicht was noch alles dazu geschrieben werden muss.
    Ich will halt nur Schalter Stellungen lesen können.

  3. #43
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    23.05.2004
    Beiträge
    122
    hallo

    0x379 müsste bei dir richtig sein, wenn das ausgeben funktioniert hat.

    mit den einlesen muss ich mal sehen mein rechner ist abgeschmiert und ich komme nicht mehr ins windows

  4. #44
    Benutzer Stammmitglied
    Registriert seit
    03.07.2005
    Ort
    Ruhrgebiet
    Alter
    42
    Beiträge
    41
    Hi ich hab das heute ausprobiert mit dem Beispiel was du mir vorher mit den Ausgängen ansteuern geschrieben hast.hab das etwas umgeändert leider hatte ich nur ein haufen fehlermeldungen.
    Ich hoffe dein rechner läuft bald wieder .

    Soweit habe ich meine Motoren wie gewünscht zum laufen gebracht dank deiner Hilfe.

  5. #45
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    23.05.2004
    Beiträge
    122
    hallo

    zeig dein quelltext mal und sag uns bitte mal was du plans

  6. #46
    Benutzer Stammmitglied
    Registriert seit
    03.07.2005
    Ort
    Ruhrgebiet
    Alter
    42
    Beiträge
    41
    Hi das ist mein Probe Quelltext:"Über einen Schalter wollte ich den Pegel mit 5 V auf High setzen".

    //---------------------------------------------------------------------------
    #include <vcl.h>
    #pragma hdrstop
    #include <conio.h>
    #define Par_Sst 0x378
    #define Par_Sst 0x379
    #define LPT1 0x378
    #define LPT1 0x379
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"

    TForm1 *Form1;

    bool StatusWert=inp(Par_Sst,1);
    //==============================================
    void outp (unsigned int portadr, unsigned char value)
    {
    _asm mov edx,portadr
    _asm mov al, value
    _asm out dx,al
    }
    void inp (unsigned int portadr,unsigned char value)
    {
    _asm mov edx,portadr
    _asm mov al,value
    _asm in dx,al
    }
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
    {

    }

    //Falls Eingang in Status Register gesetzt -> Button Farbe "rot"

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    if(StatusWert==true)
    {
    Button1->Color=clRed;
    }
    }

    Im Großen und ganzen möchte ich Später die Position meines Motors feststellen können um evtl. eine referezfahrt bzw. Nullstellung meines Motors über einen Button Klick zu steuern.
    Elektronik dafür habe ich schon im Kopf .

  7. #47
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    23.05.2004
    Beiträge
    122
    hallo

    also, auf den erten blick sind da einige fehler drin

    also du musst erstmal alles einmal definieren
    und die inp zeilen müssten so aussehen:

    usigned char inp (unsigned int portadr)
    {
    _asm mov edx,portadr
    _asm in al,dx
    _asm mov value, al
    return (value);
    }

    so

    wenn du jetzt das den "status wert" abfragen willst
    muss du die gesammte reihe abfragen: //ich hatte auch erst den gedanken den du hattest , wenn es dich tröstet (bool StatusWert=inp(Par_Sst,1)


    int status;
    status=inp(0x37;

    so nun haben wir alle pins eingelesen (D0 bis D
    und nun fragen wir ob d0 = "true" ist

    if (status == 1)
    {
    edt_status->Text="online"; //editfeld
    }
    else
    {
    edt_status->Text="offline"; //editfeld
    }

    ich habe dir ein program geschrieben was dir entweder online oder offline in ein edit feld schreibt, bezug auf den ersten pin

    Code:
    #include <vcl.h>
    #pragma hdstop
    #include <conio.h>
    #define LPT 0x378
    #include "Unit1.h"
    //------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    
    unsigned char inp(unsigned int portadr)
    {
     unsigned char value;
     _asm mov edx, portadr
     _asm in al,dx
     _asm mov value al
    return (value);
    }
    
    //-------------------------------------------------------
    __fascall TForm1::TForm(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //-------------------------------------------------------
    void__fascall TForm1::btn_StatusfrageClick(TObject *Sender)
    {
     int status;
     status = inp(0x378);
     
     if(status == 1)
      {
        edt_status->Text="online";
      }
       else
        {
          edt_status->Text="offline";
        }
    }
    //----------------------------------------------------------
    so ich habe in wieder abgetippt und hoffe das es funktioniert, bitte um bestätigung.
    ich über nehmme keinerlei gewehr )

    nochwas das mit dem papier hast du glaube ich nicht ganz verstanden:
    die papier "anzeige" ist nich programmierbar (aufjedenfall meine ich das)
    dir stehen nur die D0-D8 zur verfügung die anderen pins sind feste nicht "verstellbare" pins. ich hoffe du hast mein kauderwälsch verstanden

    mein rechner läuft wieder habe ihn einfach mal ohne festplatten gestartet und dann wieder mit, seitdem läuft er und der komische update fehler ist verschwunden, keine ahnung woran das lag

  8. #48
    Benutzer Stammmitglied
    Registriert seit
    03.07.2005
    Ort
    Ruhrgebiet
    Alter
    42
    Beiträge
    41
    Hi werde gleich versuchen zu Programmieren .

    du hast im text geschrieben 0x378 das ist doch für die Ausgänge nicht wahr?
    kann ich das ganze auch im bezug auf die eingang pins 0x379 oder 0x37A?
    und kann ich auch einzelne Pins von 0x379 oder 0x37A einlesen?
    Wenn ich z.B einen Taster betätige.

    oder meintest du sogar 0x379 im Quelltext?

    ich hab hier so einen Link da hab ich diese bezeichnungen vom Stecker her
    http://www.feilner.de/dateien/refera...rallelport.pdf


    mein rechner macht manchmal auch was der will aber oft mals reicht es aus vor das gehäuse zu treten "ohne gewährleistung das es bei jedem so funktioniert"

  9. #49
    Benutzer Stammmitglied
    Registriert seit
    03.07.2005
    Ort
    Ruhrgebiet
    Alter
    42
    Beiträge
    41
    hi habe das Programm abgetippt und bekam eine mir nicht bekannte fehlermeldung.als erstes hat sich ein zweites fenster geöffnet mit dem namen Unit1.asm in diesem fenster ist das Programm stehen geblieben beim Compilieren.
    Fehlermeldung:[TasmFehler]Unit1.asm(51):Too few operands to instruction

    der Fehler wahr auch dem der Hilfe unbekannt ?.

    Zu der Frage oben:und zwar steht in dem Link das das Data Register entweder als Ausgang oder Eingang verarbeitet werden kann beides zusammen geht nicht.
    Gibt es keine möglichkeit den Status oder Control Register als Eingang Register zu benutzen um Schalterstellungen einzulesen?

    [-o<

    Ich habe das zwar mit achtung verstanden was du meintest mit dem Papier Beispiel aber im Link steht das es sich bei den registern um Eingänge bzw. Ausgänge Handel.Oder hat das nur mit dem Drucker zu tun?

  10. #50
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    23.05.2004
    Beiträge
    122
    hallo

    habe jezt mal geschaft bites zu empfangen, aber ich verstehe die "pin belegung" nicht

    also

    ich habe mir ein programm geschrieben mit 3 edit feldern
    und mit inp(0x37; inp (0x379); inp(0x37a);
    die durch ein timer alle paar msec eingelesen werden, mit einen button setze ich mit out(0x378,0); out(0x379,0); out(0x37a,0); alle pins auf 0.
    mein plan war der das ich mit einen draht an den pins rumbore und dann sehe ob was geschied so am anfang habe ich noch ein netzteil mit 5v und einen vorwiederstand von 500ohm benutst, aber dann habe ich gesehen das man nur pins verbinden muss so ergibt zum beispiel von inp(0x37a); 1 bite wenn man pin 1 und einen der masse pins verbindet
    man erhält 2 bite wenn man pin 14 und einen der masse pins verbindet
    wenn man pin 1 und 14 mit masse verbindet bekommt man 3 bite
    8 bite gibt es auch aber keinen "4 bite pin"

    mit inp(0x379); merkwürdiger weise kann man den ausgansgswert nicht mit outp(0x379,0); auf 0 setzen, also ist das ausgangsignal immer 120, wenn man dann einige pins mit masse verbindet geht der wert entweder runter oder hoch

    inp(0x37; sagt nix aber das sind ja auch die daten leitungen die anscheinend nur als eingang nutsbar sind


    Code:
    //-----------------------------------------------------------------------------------
    #include <vcl.h>
    #pragma hdrstop
    #include <conio.h>
    #define LPT 0x378
    #include "Unit1.h"
    //-----------------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1*Form1;
    
    //==============================================
    void outp (unsigned int portadr, unsigned char value)
    {
     _asm mov edx,portadr
     _asm mov al, value
     _asm out dx,al
    }
    //==============================================
    unsigned char inp(unsigned int portadr)
    {
     unsigned char value;
     _asm mov edx,portadr
     _asm in al,dx
     _asm mov value,al
     return(value);
    }
    //-----------------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
                ::TForm(Owner)
    {
    }
    //-----------------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObjekt *Sender)
    {
     outp(0x378,0);
     outp(0x379,0);
     outp(0x37a,0);
    }
    //-----------------------------------------------------------------------------------
    void __fastcall TForm1::Timer1Timer(TObject *Sender)
    {
     int status, status1, status2;
     
     status=inp(0x37a);
     Edit1->Text=IntToStr(Status); 
     
     status1=inp(0x378);
     Edit2->Text=IntToStr(Status1);
    
     status2=inp(0x379);
     Edit3->Text=IntToStr(Status2);
    }
    //-----------------------------------------------------------------------------------
    ich übernehme keine haftung für den quelltext, wenn hardware oder sonstigen schäden entstehen

    kann mir jemand erklären wieso es sokomische "pin brücken" gibt und wo der "4 bite pin" von der controll-register steckt?

    wenn du nicht ca 15 taster einbauen willst, können wir damit was anfangen

    Edit:
    so sorry habe die beiträge und den link noch nicht gelesen, also der "4 bit pin" (ich sollte mir diesen begriff patentieren lassen) ist anscheinend der nicht invertierte
    und die 120 in der status anzeige von dem status register könnte auch von dem invertierten pin kommen, aber es müssten doch dann eigendlich 128 stehen oder?
    ahm zu den fehler, der wird woll an den asm befehlen liegen, hast du conio.h include, auch wenn er nichts mit den asm befehlen zu tun hat?

Seite 5 von 7 ErsteErste ... 34567 LetzteLetzte

Benutzer, die dieses Thema gelesen haben: 0

Derzeit gibt es keine Benutzer zum Anzeigen.

Berechtigungen

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

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad