Párhuzamos port írás problémák

Ez a téma lezárásra került a moderátor által. A lezárás oka: 1 t�ma - 1 k�rd�s
Párhuzamos port írás problémák
2011-05-19T11:08:44+02:00
2011-05-19T18:00:33+02:00
2022-11-21T22:41:53+01:00
takikaa
Olyan segítségre lenne szükségem , hogy interneten körül néztem hogy lehet c++ ban párhuzamos portot kezelni és írtam rá egy programot nagyon sok helyen találtam hasonló sőt azonosakat is azonban az írja a fordító hogy a outportb() nincs deklarálva valamint találtam más utasítást az írásra is outp() erre is ugyan azt kapom. Nem értem hogy mér csinálja ezt valaki esetleg tud valamit mondani rá. Valamit talán le kellene még töltenem hozzá ?
Segítséget előre is köszönöm. Be másoltam a kis programomat.


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

int main ()
{
//clrscr();
outportb(0x378,0xff);
getch();
return 0;
}
Mutasd a teljes hozzászólást!
Innen lehet letölteni az io.dll-t
A kód c-s változata(mondjuk ebbe az io.h is bent van:
#include <iostream> //io.h kezdete #include <windows.h> typedef void (WINAPI *PORTOUT) (short int Port, char Data); typedef void (WINAPI *PORTWORDOUT)(short int Port, short int Data); typedef void (WINAPI *PORTDWORDOUT)(short int Port, int Data); typedef char (WINAPI *PORTIN) (short int Port); typedef short int (WINAPI *PORTWORDIN)(short int Port); typedef int (WINAPI *PORTDWORDIN)(short int Port); typedef void (WINAPI *SETPORTBIT)(short int Port, char Bit); typedef void (WINAPI *CLRPORTBIT)(short int Port, char Bit); typedef void (WINAPI *NOTPORTBIT)(short int Port, char Bit); typedef short int (WINAPI *GETPORTBIT)(short int Port, char Bit); typedef short int (WINAPI *RIGHTPORTSHIFT)(short int Port, short int Val); typedef short int (WINAPI *LEFTPORTSHIFT)(short int Port, short int Val); typedef short int (WINAPI *ISDRIVERINSTALLED)(); extern PORTOUT PortOut; extern PORTWORDOUT PortWordOut; extern PORTDWORDOUT PortDWordOut; extern PORTIN PortIn; extern PORTWORDIN PortWordIn; extern PORTDWORDIN PortDWordIn; extern SETPORTBIT SetPortBit; extern CLRPORTBIT ClrPortBit; extern NOTPORTBIT NotPortBit; extern GETPORTBIT GetPortBit; extern RIGHTPORTSHIFT RightPortShift; extern LEFTPORTSHIFT LeftPortShift; extern ISDRIVERINSTALLED IsDriverInstalled; extern int LoadIODLL(); //io.h vége PORTOUT PortOut; PORTWORDOUT PortWordOut; PORTDWORDOUT PortDWordOut; PORTIN PortIn; PORTWORDIN PortWordIn; PORTDWORDIN PortDWordIn; SETPORTBIT SetPortBit; CLRPORTBIT ClrPortBit; NOTPORTBIT NotPortBit; GETPORTBIT GetPortBit; RIGHTPORTSHIFT RightPortShift; LEFTPORTSHIFT LeftPortShift; ISDRIVERINSTALLED IsDriverInstalled; HMODULE hio; using namespace std; void UnloadIODLL() { FreeLibrary(hio); } int LoadIODLL() { hio = LoadLibrary("io"); if (hio == NULL) return 1; PortOut = (PORTOUT)GetProcAddress(hio, "PortOut"); PortWordOut = (PORTWORDOUT)GetProcAddress(hio, "PortWordOut"); PortDWordOut = (PORTDWORDOUT)GetProcAddress(hio, "PortDWordOut"); PortIn = (PORTIN)GetProcAddress(hio, "PortIn"); PortWordIn = (PORTWORDIN)GetProcAddress(hio, "PortWordIn"); PortDWordIn = (PORTDWORDIN)GetProcAddress(hio, "PortDWordIn"); SetPortBit = (SETPORTBIT)GetProcAddress(hio, "SetPortBit"); ClrPortBit = (CLRPORTBIT)GetProcAddress(hio, "ClrPortBit"); NotPortBit = (NOTPORTBIT)GetProcAddress(hio, "NotPortBit"); GetPortBit = (GETPORTBIT)GetProcAddress(hio, "GetPortBit"); RightPortShift = (RIGHTPORTSHIFT)GetProcAddress(hio, "RightPortShift"); LeftPortShift = (LEFTPORTSHIFT)GetProcAddress(hio, "LeftPortShift"); IsDriverInstalled = (ISDRIVERINSTALLED)GetProcAddress(hio, "IsDriverInstalled"); atexit(UnloadIODLL); return 0; } int figyelo(){ LoadIODLL(); PortOut(0x378,'0'); char kar=PortIn(0x378); UnloadIODLL(); printf("%c",kar); }//figyelo int main(int argc, char *argv[]) { figyelo(); }
Mutasd a teljes hozzászólást!

  • Rendelkezel a szükséges include file-lal? Az tényleg tartalmazza is a outportb() deklarációját?
    Mutasd a teljes hozzászólást!
  • Neten szedtem össze ezeket az infókat és mindenhol csak ennyi emeltek be includdal azért lenne segítségre szükségem hogy esetleg kell e még nekem letölteni ehhez valamit hogy tudjam használni.De gondolom a dos.h nak kellene tartalmaznia mert találtam egy cikk sorozatot és ott is azt írják hogy a dos.h és az outportb vel lehet írni rá.itt a link Vezérlés az LPT-porton Alfától Omegáig. II.
    Mutasd a teljes hozzászólást!
  • Innen lehet letölteni az io.dll-t
    A kód c-s változata(mondjuk ebbe az io.h is bent van:
    #include <iostream> //io.h kezdete #include <windows.h> typedef void (WINAPI *PORTOUT) (short int Port, char Data); typedef void (WINAPI *PORTWORDOUT)(short int Port, short int Data); typedef void (WINAPI *PORTDWORDOUT)(short int Port, int Data); typedef char (WINAPI *PORTIN) (short int Port); typedef short int (WINAPI *PORTWORDIN)(short int Port); typedef int (WINAPI *PORTDWORDIN)(short int Port); typedef void (WINAPI *SETPORTBIT)(short int Port, char Bit); typedef void (WINAPI *CLRPORTBIT)(short int Port, char Bit); typedef void (WINAPI *NOTPORTBIT)(short int Port, char Bit); typedef short int (WINAPI *GETPORTBIT)(short int Port, char Bit); typedef short int (WINAPI *RIGHTPORTSHIFT)(short int Port, short int Val); typedef short int (WINAPI *LEFTPORTSHIFT)(short int Port, short int Val); typedef short int (WINAPI *ISDRIVERINSTALLED)(); extern PORTOUT PortOut; extern PORTWORDOUT PortWordOut; extern PORTDWORDOUT PortDWordOut; extern PORTIN PortIn; extern PORTWORDIN PortWordIn; extern PORTDWORDIN PortDWordIn; extern SETPORTBIT SetPortBit; extern CLRPORTBIT ClrPortBit; extern NOTPORTBIT NotPortBit; extern GETPORTBIT GetPortBit; extern RIGHTPORTSHIFT RightPortShift; extern LEFTPORTSHIFT LeftPortShift; extern ISDRIVERINSTALLED IsDriverInstalled; extern int LoadIODLL(); //io.h vége PORTOUT PortOut; PORTWORDOUT PortWordOut; PORTDWORDOUT PortDWordOut; PORTIN PortIn; PORTWORDIN PortWordIn; PORTDWORDIN PortDWordIn; SETPORTBIT SetPortBit; CLRPORTBIT ClrPortBit; NOTPORTBIT NotPortBit; GETPORTBIT GetPortBit; RIGHTPORTSHIFT RightPortShift; LEFTPORTSHIFT LeftPortShift; ISDRIVERINSTALLED IsDriverInstalled; HMODULE hio; using namespace std; void UnloadIODLL() { FreeLibrary(hio); } int LoadIODLL() { hio = LoadLibrary("io"); if (hio == NULL) return 1; PortOut = (PORTOUT)GetProcAddress(hio, "PortOut"); PortWordOut = (PORTWORDOUT)GetProcAddress(hio, "PortWordOut"); PortDWordOut = (PORTDWORDOUT)GetProcAddress(hio, "PortDWordOut"); PortIn = (PORTIN)GetProcAddress(hio, "PortIn"); PortWordIn = (PORTWORDIN)GetProcAddress(hio, "PortWordIn"); PortDWordIn = (PORTDWORDIN)GetProcAddress(hio, "PortDWordIn"); SetPortBit = (SETPORTBIT)GetProcAddress(hio, "SetPortBit"); ClrPortBit = (CLRPORTBIT)GetProcAddress(hio, "ClrPortBit"); NotPortBit = (NOTPORTBIT)GetProcAddress(hio, "NotPortBit"); GetPortBit = (GETPORTBIT)GetProcAddress(hio, "GetPortBit"); RightPortShift = (RIGHTPORTSHIFT)GetProcAddress(hio, "RightPortShift"); LeftPortShift = (LEFTPORTSHIFT)GetProcAddress(hio, "LeftPortShift"); IsDriverInstalled = (ISDRIVERINSTALLED)GetProcAddress(hio, "IsDriverInstalled"); atexit(UnloadIODLL); return 0; } int figyelo(){ LoadIODLL(); PortOut(0x378,'0'); char kar=PortIn(0x378); UnloadIODLL(); printf("%c",kar); }//figyelo int main(int argc, char *argv[]) { figyelo(); }
    Mutasd a teljes hozzászólást!
  • Most látom csak, hogy Dos.h-val próbálkoztál. Ez windows alatt nem csoda, hogy nem működik(felejtsd el).

    Az io.dll-t letöltése után még regisztrálni kell:

    start - Futtatás - Regsvr32.exe C:\útvonal\io.dll

    Ezután használható. Itt még egy két hasznos kiegészítő/ellenőrző program linkjét is megtalálod.
    Mutasd a teljes hozzászólást!
  • Azt csináltam amit írtál és ezt a hibát kaptam rá : mellékeltem a képet.
    Mutasd a teljes hozzászólást!
    Csatolt állomány
  • Ezzel nem kell foglalkozni, ettől még tökéletesen használható
    Mutasd a teljes hozzászólást!
  • Nagyon szépen köszi a segítséget sikerült megoldani. Működik a program bár az iostream ért duzzogott de kivettem és anélkül is tökéletesen megy a program .
    Mutasd a teljes hozzászólást!
  • Esetleg még annyi segítséget kérnék hogy ha veszek egy usb lpt átalakítót és kinyerem a címét az eszközkezelővel (kitudom egyáltalán nézni vele ? ) akkor ezzel a programmal tudom majd azt is kezelni ? Mert egy netbookom van és nem akarok folyton futkozni a kinti közös asztali géphez.
    Mutasd a teljes hozzászólást!
  • USB-LPT átalakítóval közvetlenül nem működik a dolog.

    Lásd itt.
    Mutasd a teljes hozzászólást!
  • Végig olvasgattam találtam ott olyat, hogy ha van hozzá driver akkor működő képes lehet. Amit én kinéztem ahhoz adnak cd-t vajon működtetni tudom direktben vagy azzal sem működne?
    Mutasd a teljes hozzászólást!
  • Lenne még kérdésem csináltam code blocks ben egy wx widgets projectet annyit akarok csinálni hogy egy gombot megnyomok és kiküld egy adatot az lpt portra na most beemeltem az egész proramot amit küldtél az elejére a main-t meg az meg a figyelo rutint és kapok egy ilyen hibát : mellékletme a képet összevágtam mert nem tudtam feltölteni a hibát tettem fel meg azt ahova mutatja

    itt a program

    :/***************************************************************
    * Name: robot_progMain.cpp
    * Purpose: Code for Application Frame
    * Author: asd ()
    * Created: 2011-05-19
    * Copyright: asd ()
    * License:
    **************************************************************/
    //#include <iostream>

    //io.h kezdete
    #include <windows.h>
    typedef void (WINAPI *PORTOUT) (short int Port, char Data);
    typedef void (WINAPI *PORTWORDOUT)(short int Port, short int Data);
    typedef void (WINAPI *PORTDWORDOUT)(short int Port, int Data);
    typedef char (WINAPI *PORTIN) (short int Port);
    typedef short int (WINAPI *PORTWORDIN)(short int Port);
    typedef int (WINAPI *PORTDWORDIN)(short int Port);
    typedef void (WINAPI *SETPORTBIT)(short int Port, char Bit);
    typedef void (WINAPI *CLRPORTBIT)(short int Port, char Bit);
    typedef void (WINAPI *NOTPORTBIT)(short int Port, char Bit);
    typedef short int (WINAPI *GETPORTBIT)(short int Port, char Bit);
    typedef short int (WINAPI *RIGHTPORTSHIFT)(short int Port, short int Val);
    typedef short int (WINAPI *LEFTPORTSHIFT)(short int Port, short int Val);
    typedef short int (WINAPI *ISDRIVERINSTALLED)();

    extern PORTOUT PortOut;
    extern PORTWORDOUT PortWordOut;
    extern PORTDWORDOUT PortDWordOut;
    extern PORTIN PortIn;
    extern PORTWORDIN PortWordIn;
    extern PORTDWORDIN PortDWordIn;
    extern SETPORTBIT SetPortBit;
    extern CLRPORTBIT ClrPortBit;
    extern NOTPORTBIT NotPortBit;
    extern GETPORTBIT GetPortBit;
    extern RIGHTPORTSHIFT RightPortShift;
    extern LEFTPORTSHIFT LeftPortShift;
    extern ISDRIVERINSTALLED IsDriverInstalled;

    extern int LoadIODLL();
    //io.h vége

    PORTOUT PortOut;
    PORTWORDOUT PortWordOut;
    PORTDWORDOUT PortDWordOut;
    PORTIN PortIn;
    PORTWORDIN PortWordIn;
    PORTDWORDIN PortDWordIn;
    SETPORTBIT SetPortBit;
    CLRPORTBIT ClrPortBit;
    NOTPORTBIT NotPortBit;
    GETPORTBIT GetPortBit;
    RIGHTPORTSHIFT RightPortShift;
    LEFTPORTSHIFT LeftPortShift;
    ISDRIVERINSTALLED IsDriverInstalled;

    HMODULE hio;

    //using namespace std;

    void UnloadIODLL() {
    FreeLibrary(hio);
    }

    int LoadIODLL() {
    hio=LoadLibrary("io");
    if (hio == NULL) return 1;

    PortOut = (PORTOUT)GetProcAddress(hio, "PortOut");
    PortWordOut = (PORTWORDOUT)GetProcAddress(hio, "PortWordOut");
    PortDWordOut = (PORTDWORDOUT)GetProcAddress(hio, "PortDWordOut");
    PortIn = (PORTIN)GetProcAddress(hio, "PortIn");
    PortWordIn = (PORTWORDIN)GetProcAddress(hio, "PortWordIn");
    PortDWordIn = (PORTDWORDIN)GetProcAddress(hio, "PortDWordIn");
    SetPortBit = (SETPORTBIT)GetProcAddress(hio, "SetPortBit");
    ClrPortBit = (CLRPORTBIT)GetProcAddress(hio, "ClrPortBit");
    NotPortBit = (NOTPORTBIT)GetProcAddress(hio, "NotPortBit");
    GetPortBit = (GETPORTBIT)GetProcAddress(hio, "GetPortBit");
    RightPortShift = (RIGHTPORTSHIFT)GetProcAddress(hio, "RightPortShift");
    LeftPortShift = (LEFTPORTSHIFT)GetProcAddress(hio, "LeftPortShift");
    IsDriverInstalled = (ISDRIVERINSTALLED)GetProcAddress(hio, "IsDriverInstalled");

    atexit(UnloadIODLL);

    return 0;
    }



    #include "wx_pch.h"
    #include "robot_progMain.h"
    #include <wx/msgdlg.h>

    //(*InternalHeaders(robot_progFrame)
    #include <wx/intl.h>
    #include <wx/string.h>
    //*)

    //helper functions
    enum wxbuildinfoformat {
    short_f, long_f };

    wxString wxbuildinfo(wxbuildinfoformat format)
    {
    wxString wxbuild(wxVERSION_STRING);

    if (format == long_f )
    {
    #if defined(__WXMSW__)
    wxbuild << _T("-Windows");
    #elif defined(__UNIX__)
    wxbuild << _T("-Linux");
    #endif

    #if wxUSE_UNICODE
    wxbuild << _T("-Unicode build");
    #else
    wxbuild << _T("-ANSI build");
    #endif // wxUSE_UNICODE
    }

    return wxbuild;
    }

    //(*IdInit(robot_progFrame)
    const long robot_progFrame::ID_BUTTON1 = wxNewId();
    const long robot_progFrame::ID_BUTTON2 = wxNewId();
    const long robot_progFrame::idMenuQuit = wxNewId();
    const long robot_progFrame::idMenuAbout = wxNewId();
    const long robot_progFrame::ID_STATUSBAR1 = wxNewId();
    //*)

    BEGIN_EVENT_TABLE(robot_progFrame,wxFrame)
    //(*EventTable(robot_progFrame)
    //*)
    END_EVENT_TABLE()

    robot_progFrame::robot_progFrame(wxWindow* parent,wxWindowID id)
    {
    //(*Initialize(robot_progFrame)
    wxMenuItem* MenuItem2;
    wxMenuItem* MenuItem1;
    wxMenu* Menu1;
    wxMenuBar* MenuBar1;
    wxMenu* Menu2;

    Create(parent, id, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_STYLE, _T("id"));
    Button1 = new wxButton(this, ID_BUTTON1, _("Label"), wxPoint(128,112), wxDefaultSize, 0, wxDefaultValidator, _T("ID_BUTTON1"));
    Button2 = new wxButton(this, ID_BUTTON2, _("Label"), wxPoint(120,160), wxDefaultSize, 0, wxDefaultValidator, _T("ID_BUTTON2"));
    MenuBar1 = new wxMenuBar();
    Menu1 = new wxMenu();
    MenuItem1 = new wxMenuItem(Menu1, idMenuQuit, _("Quit\tAlt-F4"), _("Quit the application"), wxITEM_NORMAL);
    Menu1->Append(MenuItem1);
    MenuBar1->Append(Menu1, _("&File"));
    Menu2 = new wxMenu();
    MenuItem2 = new wxMenuItem(Menu2, idMenuAbout, _("About\tF1"), _("Show info about this application"), wxITEM_NORMAL);
    Menu2->Append(MenuItem2);
    MenuBar1->Append(Menu2, _("Help"));
    SetMenuBar(MenuBar1);
    StatusBar1 = new wxStatusBar(this, ID_STATUSBAR1, 0, _T("ID_STATUSBAR1"));
    int __wxStatusBarWidths_1[1] = { -1 };
    int __wxStatusBarStyles_1[1] = { wxSB_NORMAL };
    StatusBar1->SetFieldsCount(1,__wxStatusBarWidths_1);
    StatusBar1->SetStatusStyles(1,__wxStatusBarStyles_1);
    SetStatusBar(StatusBar1);

    Connect(ID_BUTTON1,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&robot_progFrame::OnButton1Click);
    Connect(ID_BUTTON2,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&robot_progFrame::OnButton2Click);
    Connect(idMenuQuit,wxEVT_COMMAND_MENU_SELECTED,(wxObjectEventFunction)&robot_progFrame::OnQuit);
    Connect(idMenuAbout,wxEVT_COMMAND_MENU_SELECTED,(wxObjectEventFunction)&robot_progFrame::OnAbout);
    //Connect(wxID_ANY,wxEVT_CLOSE_WINDOW,(wxObjectEventFunction)&robot_progFrame::OnClose);
    //*)
    }

    robot_progFrame::~robot_progFrame()
    {
    //(*Destroy(robot_progFrame)
    //*)
    }

    void robot_progFrame::OnQuit(wxCommandEvent& event)
    {
    Close();
    }

    void robot_progFrame::OnAbout(wxCommandEvent& event)
    {
    wxString msg = wxbuildinfo(long_f);
    wxMessageBox(msg, _("Welcome to..."));
    }

    void robot_progFrame::OnClose(wxCloseEvent& event)
    {

    }

    void robot_progFrame::OnButton2Click(wxCommandEvent& event)
    {

    }

    void robot_progFrame::OnButton1Click(wxCommandEvent& event)
    {

    LoadIODLL();
    PortOut(0x378,1);
    }
    Mutasd a teljes hozzászólást!
  • Itt a kép!
    Mutasd a teljes hozzászólást!
    Csatolt állomány
Ez a téma lezárásra került a moderátor által. A lezárás oka: 1 t�ma - 1 k�rd�s
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd