Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst LPT mit C Programm ansteuern

Mitglied: achim13

achim13 (Level 1) - Jetzt verbinden

08.02.2010, aktualisiert 12.02.2010, 10184 Aufrufe, 3 Kommentare

Hallo,
ich habe ein c++ Programm geschrieben, leider zeigt es mir Fehler, kann mir jemand helfen. Ich bin ein neuling in diesem Thema!!!!!
Das Programm soll an LPT (0x378h) ein Clock senden und den Port 0x379h auslesen (da sollten Spannungswerte sein). Wie ich schon vorhier geschrieben habe das ist mein erstes c Programm. Ich weiss es nicht wie mann Input / Output in c schreibt welche dll oder... und bei der Definition von Funktionen zeigt der Compailer auch Fehler, bin sehr dankbar für jeder Hilfe. Unten die Quellcode:
#include <ctime>
#include <stdio.h>
#include <string.h>
#include <io.h>
#include <conio.h>
#include <dos.h>
#include <unistd.h>
#include <stdlib.h>
#include <windows.h>
#include <time.h>
#include <iostream>
---------------------------------------------------------------------------
#define LPT1 0x378
Data Register (Base + 0h) Ausgang
#define LPT2 0x379 //Status Register (Base + 1h) Eingang
#define oo 4
using namespace std;
int StatusPort1=0;
int StatusPort2=0;
int anzeige_spannung_array[100];
int anzeige_zeit_array[100];
int i=0;
int i1=0;
int i2=0;
float bit2;
int bit1;
int t1;
int main (int argc, const char *argv[])
{
StatusPort1=(LPT1);
StatusPort2=(LPT2);
cout<<"LPT1 - Ausgang = "<<StatusPort1;
cout<<endl;
cout<<"LPT2 - Eingang = "<<StatusPort2;
Sleep(10000);
function_SpannungLesen(void)
{
For(i1=0; i1<1000; i1++)
{
function_ClockSenden(void)
{
For(i2=0; i2<7; i2++)
{
bit2==1;
output(LPT1, bit1);
bit2==0;
output(LPT1, bit1);
}
}
}
input(LPT2, bit2);
t1 = (clock()/CLOCKS_PER_SEC);
anzeige_spannung_array[i]=bit2;
anzeige_zeit_array[i]=t1;
i=i+1;
if i=99 goto Ausgabe
}
Ausgabe:
function_Ausgabe(void)
{
For(i1=0; i1<25; i1++)
{i=0;
bit2=anzeige_spannung_array[i];
bit1=anzeige_zeit_array[i];
cout<<"Spannung = "<<bit2<<" um "bit1<<" ";
i=i+1
bit2=anzeige_spannung_array[i];
bit1=anzeige_zeit_array[i];
cout<<"Spannung = "<<bit2<<" um "bit1<<" ";
i=i+1
bit2=anzeige_spannung_array[i];
bit1=anzeige_zeit_array[i];
cout<<"Spannung = "<<bit2<<" um "bit1<<" ";
i=i+1
bit2=anzeige_spannung_array[i];
bit1=anzeige_zeit_array[i];
cout<<"Spannung = "<<bit2<<" um "bit1<<" ";
cout<<endl;
}
Return 0;
}

Gruß Achim
Mitglied: StefanKittel
08.02.2010 um 23:44 Uhr
Hallo,
der direkte Zugriff auf "Legacy" Hardware unter Windows ist tricky. Ich glaube Du must unter Win7 sogar einen Treiber dafür schreiben.
Warum machst Du es Dir nicht viel einfacher und verwendest einen GamePort? Den gibts als USB für 5 Euro und läßt sich über einen Joystick sehr einfach programmieren.
Stefan
Bitte warten ..
Mitglied: Arano
09.02.2010 um 00:44 Uhr
Hm... kann ich helfen oder kann ich es nicht !?

Muss schon sagen das mich die Fragestellung und die Antwort von StefanKittel etwas überfordern - ist halt nicht mein Bereich .-)
ABER ich habe mir mal eine C++ Progrämmchen zusammengeschrieben mit dem ich die Pins des LPT setzen und lesen konnte, vielleicht hilft dir das ja schon.
Wichtig dabei war eine zusätzliche inpout32.dll die vorher ins System kopiert wurde um über diese den Zugriff auf den LPT zu ermöglichen.

Die "inpout32.dll" wurde mit gelinkt.
Dann die Prototypen und Initialisierung:
01.
/** windows **/
02.
/* lade inpout32.dll fuer LPT port zugriff unter win xp */
03.

04.
/* prototype (function typedef) for DLL function Inp32: */
05.
typedef short _stdcall (*inpfuncPtr)(short portaddr);
06.
typedef void  _stdcall (*oupfuncPtr)(short portaddr, short datum);
07.

08.
HINSTANCE  hLib;
09.
inpfuncPtr inp32;
10.
oupfuncPtr oup32;
11.

12.
      // lade inpout.dll
13.
      hLib = LoadLibrary("inpout32.dll");
14.
      if(hLib==NULL)
15.
      {
16.
            cout<<"Load inpout32.dll failed !\n";
17.
      }
18.

19.
      /* get the address of the function Inp32 */
20.
      inp32 = (inpfuncPtr)GetProcAddress(hLib,"Inp32");
21.
      if(inp32==NULL)
22.
      {
23.
            cout<<"GetProcAddress for Inp32 Failed !\n";
24.
      }
25.

26.
      /* get the address of the function Outp32 */
27.
      oup32 = (oupfuncPtr)GetProcAddress(hLib,"Out32");
28.
      if(oup32==NULL)
29.
      {
30.
            cout<<"GetProcAddress for Oup32 Failed !\n";
31.
      }
Sowie das Blinken lassen einer LED:
01.
/** windows **/
02.
/* lasse die LED am LPT mehrfach blinken */
03.

04.
void lptFlash()
05.
{
06.
      // aktuellen status auslesen um ihn am ende wiederherstellen zu koennen
07.
      int status = (inp32)(LPT_PORT);
08.
      // blinken
09.
      for(int x=1; x<=10; x++)
10.
      {
11.
            (oup32)(LPT_PORT,LPT_ON);
12.
            Sleep(LED_FLASH_ON);
13.
            (oup32)(LPT_PORT,LPT_OFF);
14.
            Sleep(LED_FLASH_OFF);
15.
      }
16.
      // alten status wiederherstellen
17.
      (oup32)(LPT_PORT,status);
18.
}
Achja, und die verwendeten Konstanten:
01.
#define LPT_PORT      0x378         // adresse des LPT
02.
#define LPT_ON        0xFF          // wert der auf LPT beim "einschalten" geschrieben wird
03.
#define LPT_OFF       0x00          // wert der auf LPT beim "ausschalten" geschrieben wird
04.
#define LED_FLASH_ON  50            // zeit in ms die die LED brennen soll bevor sie wieder erlischt
05.
#define LED_FLASH_OFF 70            // zeit in ms zwischen zwei brennden bevor sie wieder brennt
So, jetzt nur noch hoffen das das überhaupt für dich nützlich ist *g*
Ggf. kann ich auch alles einmal Packen zur Verfügung stellen falls tatsächlich benötig...

Gute Nacht
~Arano
Bitte warten ..
Mitglied: StefanKittel
09.02.2010 um 00:52 Uhr
hier http://forums.highrez.co.uk/viewforum.php?f=7 gibts das Forum dazu. Man muss tricksen um es unter Vista und Windows zum laufen zu bekommen.
Bitte warten ..
Ähnliche Inhalte
C und C++
C Programm- Sprachumschaltung
Frage von SanastasiaC und C++6 Kommentare

Hallo, ich möchte ein programm schreiben welches einen Text in Abhängigkeit von der gesetzen locale ausgibt. also wenn ich ...

C und C++
GitHub c Programm kompilieren
gelöst Frage von chri.sC und C++3 Kommentare

Hallo, ich hänge gerade beim evaluieren einer Software und zwar würde ich gerne das Projekt testweise einsetzen. Allerdings sind ...

C und C++

Programm Ausführen bei C++ Editor Dev-C++

gelöst Frage von DomiITC und C++5 Kommentare

Liebes Forum, ich bin Anfänger in der Programmierwelt und habe beschlossen mit C zu beginnen. Mit Hilfe eines Youtube ...

Drucker und Scanner

USB-Drucker über virtuellen COM LPT- Port ansteuern

Frage von magicmanDrucker und Scanner27 Kommentare

Ausgangssituation: Ich habe einen Drucker Epson TM-H5000II mit einer USB-Schnittstelle ausgestattet, da der Rechner nur noch USB-Anschlüsse besitzt. Die ...

Neue Wissensbeiträge
Python

Sie meinen es ja nur gut - Microsoft hilft python-Entwicklern auf unnachahmliche Weise

Information von DerWoWusste vor 1 TagPython2 Kommentare

Stellt Euch vor, Ihr nutzt python unter Windows 10 und skriptet damit regelmäßig Dinge. Nach dem Update auf Windows ...

Sicherheits-Tools

TrendMicro Worry-Free Business Security 10.0 SP1 steht in Englisch bereit mit Unterstützung für Windows 10 1903 (May Update)

Information von VGem-e vor 1 TagSicherheits-Tools1 Kommentar

Moin Kollegen, Dann kommt wohl demnächst auch die deutschsprachige/europäische Version zur Auslieferung. Gruß VGem-e

Batch & Shell
PowerShell Konferenz - Videos online
Information von NetzwerkDude vor 1 TagBatch & Shell

Abend, die Tage werden Videos der Talks von der diesjährigen EU Powershell Konferenz hochgeladen, sind einige Interessante dabei: MFG ...

Windows Update

Windows 10 1903 Updates über Wsus erst nach Auswahl weiterer Produktkategorie

Information von Spirit-of-Eli vor 3 TagenWindows Update6 Kommentare

Moin, den Tipp habe ich hier noch nicht gesehen. Er adressiert all diejenigen, die Windows 10 1903 über einen ...

Heiß diskutierte Inhalte
Erkennung und -Abwehr
Unerklärlicher Gestank im EDV-Raum - "neues" Gebäude und keine offenkundige Ursache feststellbar!
Frage von VGem-eErkennung und -Abwehr29 Kommentare

Moin Kollegen, ich habe seit heute Morgen das Problem, dass in unserem EDV-Raum ein total unerklärbarer Gestank herrscht! Ich ...

Verschlüsselung & Zertifikate
Bitlocker oder Veracrypt unter Win10? Was ist hinsichtlich Performance, Sicherheit, Backup und Kompatibilität besser?
Frage von PluwimVerschlüsselung & Zertifikate23 Kommentare

Guten Morgen, bei mir wird demnächst eine neue Platte fällig, weil ich mein Win7-System auf Win10 umstellen will. D.h. ...

LAN, WAN, Wireless
Warum ist die Datenübertragung per WLAN zu bestimmten Servern sehr langsam?
Frage von PluwimLAN, WAN, Wireless18 Kommentare

Hallo Netzwerker, beim Einrichten des Notebooks für einen Bekannten fiel mir auf, dass Downloads per WLAN teilweise extrem lahm ...

Router & Routing
Microsoft Server: Kopierlast auf bestimmte NIC legen für Backup
gelöst Frage von LollipopRouter & Routing15 Kommentare

Guten Tag Mit zwei Servern machen wir eine einfache Datenspiegelung als Teil unseres Backup-Systems. Dazu wünsche ich mir einen ...