logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak odbierać sygnały z portu LPT w C++? Kod i wskazówki dla początkujących

cyfran 25 Cze 2006 17:46 1366 1
REKLAMA
  • #1 2762860
    cyfran
    Poziom 2  
    Posty: 2
    Witam.
    Jeżeli chodzi o elektronike to jestem całkowicie zielony, ale zamierzam sie troche doksztalcic w tym kierunku bo fajne to jest ;]

    To co mi się udało do tej pory dokonać to sterowanie diodą "wetkniętą" do portu LPT. Oto kod w C++:

    void WriteDataToPort ( unsigned short port_address, unsigned char port_data ) {
        __asm {
            mov dx, port_address
            mov al, port_data
            out dx, al
        }
    }
    
    unsigned char ReadDataFromPort ( unsigned short port_address ) {
        unsigned char port_data;
        __asm {
            mov dx, port_address
            in al, dx
            mov port_data, al
        }
        return ( port_data );
    }
    
    int main(int argc, char* argv[])
    {      
    WriteDataToPort ( 0x378, 0x10 );//zapala diode podloczona do pinow nr.6 (D4) oraz 19 (GND)
    WriteDataToPort ( 0x378, 0x0 );//wylacza wszystko
    
    while(true)
    {
    dane=ReadDataFromPort(0x378);//i w tym miejscu chce odczytac sygnal z zewnatrz
    
    printf("%x\n",dane);
    
    Sleep(100);
    }
    return 0;
    }


    To wykombinowalem za pomaca pewnego artykulu. No i zapalac umiem.. ale jak sie wysyla sygnaly na ten port? (teraz chyba idiotyczne pytanie) Wzialem sobie 3 baterie, polaczylem i probowalem jakos popodlaczac + oraz - w piny D0..D7, ale nic z tego .. printf wywala ciagle "0"... Głównie chodzi o to, żeby wysłać sygnał na ten port, program ma go odebrać i wykonac jakąś akcję.

    Dzięki za jakąkolwiek pomoc. Pozdr.
  • REKLAMA
  • #2 2763302
    mw158979
    Poziom 13  
    Posty: 57
    Pomógł: 4
    Zeby odczytac bit z linni danych (D0..D7) po pierwsze port powinien byc dwukierunkowy, po drugie ustawiony w biosie w tryb aktywujacy dwukierunkowosc, po trzecie programowo ustawiony w tryb czytania. Bodajze w czesci CTRL portu jest pin DIR, DATA_DIR albo jakos tak.

    Bez ktorejkolwiek z tych opcji podlaczanie wydajnego zrodla napiecia do portu moze go nawet spalic - port wystawia stan niski, a my dajemy wysoki i sie kloca.

    Moze sprobuj najpierw z pinami STATUS, one tylko podaja dane do komputera.

    hej
REKLAMA