Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge

C++ 5.0 win98 Schnittstelle ansprechen

maddl1 / 3 Antworten / Baumansicht Nickles

Hallo,


Hab seit einiger Zeit das Problem das ích den LTP1 ansprechen will hab auch ein Program geschrieben, es lässt sich auch kompelieren, allerdings scheint es abzustützen, da es nich über den Befehl WriteFile() hinaus kommt:


#include <window.h>


#include <conio.h>


void main ()


{ HANDLE hPort;


 unsigned char h=3;


 unsigned long bzs=sizeof(h)+1,bgs=0;


 hPort = (CreateFile("LPT1",0,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);


 if (hPort)


    { Sleep(1000);


      WriteFile(hPort,&h,bzs,&bgs,0);


      CloseHandle(hPort);


      getch();


    }; }


 


Kann mir jemand helfen? Danke imvoraus.


Pfite


   Martin 

bei Antwort benachrichtigen
d-oli maddl1 „C++ 5.0 win98 Schnittstelle ansprechen“
Optionen

Hi,

Dieses Zeichen unsigned char h=3; bedeutet
- DEZ: 3
- HEX: 0x03
- CODE: EXT
- FUNCTION: end of text
- FUNKTION: Text-Ende

(Zeichenangabe gilt für MS-DOS).

Und hier hier ist die Funktion WriteFile() so implementiert:

WriteFile( hCom, "\n", 1, &BytesWrite, NULL);

Müsste es bei dir nicht so aussehen (?):

WriteFile( hPort, h, bzs, &bgs, 0 ); // Beachte zweiten Parameter


Gruss, d-oli

Tipp: Programm debuggen

Konstruktive Kritik zeichnet sich dadurch aus, dass sie höflich, nützlich und sachlich ist.
bei Antwort benachrichtigen
d-oli maddl1 „C++ 5.0 win98 Schnittstelle ansprechen“
Optionen

Wollte heute sowieso mal wieder ne alte Visual C++ Autoren Edition auf dem alten Win2k Rechner installieren.Da habe ich mal deinen Source kompiliert. Hat das bei dir wirklich funktioniert. Bei mir sieht das so aus:

d:\cpp\lpt_1\main.cpp(1) : fatal error C1083: Include-Datei kann nicht geoeffnet werden: 'window.h': No such file or directory

Lösung C1083: windows.h

d:\cpp\lpt_1\main.cpp(13) : error C2660: 'CreateFileA' : Funktion akzeptiert keine 6 Parameter
d:\cpp\lpt_1\main.cpp(13) : error C2143: Syntaxfehler : Fehlendes ')' vor ';'

Lösung C2660: Siebten Parameter NULL hinzugefügt.
Lösung C2143: Unnötige Klammer vor Aufruf der CreateFile Funktion entfernt.

D:\CPP\LPT_1\main.cpp(13) : error C2664: 'CreateFileA' : Konvertierung des Parameters 4 von 'const int' in 'struct _SECURITY_ATTRIBUTES *' nicht moeglich
Die Konvertierung eines ganzzahligen Typs in einen Zeigertyp erfordert ein reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat

Lösung C2664: CreateFile("LPT1",FILE_ATTRIBUTE_NORMAL,0,0,OPEN_EXISTING,0, NULL)

Weitere Änderungen:

Denn Source für meine Augen lesbarer gemacht, include iostream.h und ein paar cout' s.

Unnötiges Strichpunkt nach der zweitletzten abschliessenden geschweiften Klammer entfernt.

Kompilieren, Erzeugen und Ausführen und ... nichts ... ??? ... haaaaaaaloooooooo ... Tastendruck ... alle Ausgaben auf einmal (ohne sleep und getch) ... ???

Hmm ... Stream - Probleme?

include stdio.h anstelle von include iostream.h und printf anstelle von cout.
Kompilieren, Erzeugen und Ausführen und ...

[ 1 ] Go to sleep.
- 1 Sekunde warten
[ 2 ] Sleep done.
[ 3 ] WriteFile done.
[ 4 ] CloseHandle done.
- Tastendruck
[ 5 ] Got char.
[ 6 ] End.
Press any key to continue



#include <windows.h>
#include <conio.h>
#include <stdio.h>

int main()
{
  HANDLE hPort;

  unsigned char h = 3;

  unsigned long bzs = sizeof( h ) + 1, bgs = 0;

  hPort = CreateFile( "LPT1", FILE_ATTRIBUTE_NORMAL, 0, 0, OPEN_EXISTING, 0, NULL );

  if( hPort )
  {
    printf( "[ 1 ] Go to sleep.\n" );
    Sleep( 1000 );
    printf( "[ 2 ] Sleep done.\n" );

    WriteFile( hPort, &h, bzs, &bgs, 0 );
    printf( "[ 3 ] WriteFile done.\n" );

    CloseHandle( hPort );
    printf( "[ 4 ] CloseHandle done.\n" );

    getch();
    printf( "[ 5 ] Got char.\n" );
  }
  printf( "[ 6 ] End.\n" );

  return 0;
}


Konstruktive Kritik zeichnet sich dadurch aus, dass sie höflich, nützlich und sachlich ist.
bei Antwort benachrichtigen
maddl1 Nachtrag zu: „C++ 5.0 win98 Schnittstelle ansprechen“
Optionen

Danke jetzt funktionierts.
Hast recht die Klammer vor CreateFile gehört nich da hin, hab ich falsch abgeschrieben.

Pfite
Martin

bei Antwort benachrichtigen