Witam
Chciałbym napisać program który odczytuje dane z portu równoległoego oraz następnie zapisuje te dane np. do pliku tekstowego. Jestem początkującym zapalniecem:) znam podstawy języka pascal oraz c++. Może ktoś mi pomóc?? Jak się za to zabrać, w jakim programie pisać?? lub napisać przykład??
Pozdrawiam dahra
Odczyt portu równoległego z możliwością zapisu
W systemie XP bezpośredni dostęp do portu jest utrudniony. Z pomocą przychodzą biblioteki jak np. DLportIO (ja tych używam). Są do ściągnięcia pod pierwszym wynikiem w google. Po zainstalowaniu są tam też przykłady użycia w basicu i w c. Nie wiem natomiast jak odczytywać dane z portu bo nigdy tego nie robiłem. Normalnie masz trzy adresy sprzętowe, jeden do zapisu 8 bitów danych na port, drugi do pisania na liniach sterujących i trzeci do odczytu linii kontrolnych. To działa bez problemu. Jeśli chcesz używać linii danych jako wejścia to musisz korzystać z jakiegoś innego trybu LPT, nie wiem jak bo nie robiłem tego.
- przemotronik
- Użytkownik
- Posty: 252
- Rejestracja: 18 paź 2006, 19:30
- Lokalizacja: Wrocław
Witam,
niedawno opisywałem w EdW kilka przykładów obsługi portu równoległego z poziomu DOSa (programy powstawały pod Windowsem 98). W artykule jest podany projekt prostej płytki testowej do obsługi LPT, a w materiałach na Elportalu znajduje się opis programów wraz z listingami i binarkami. Obsługa pod XP, jak już napisał Kol. c4r0, sprowadza się do użycia bibliotek. Dodam też jeszcze jedną nazwę bibliotek: giveio. Na Elportalu, w dziale nasze strony, jest artykuł Taszy, traktujący o "bojach" z obsługą tegoż portu pod XP-kiem. Polecam.
niedawno opisywałem w EdW kilka przykładów obsługi portu równoległego z poziomu DOSa (programy powstawały pod Windowsem 98). W artykule jest podany projekt prostej płytki testowej do obsługi LPT, a w materiałach na Elportalu znajduje się opis programów wraz z listingami i binarkami. Obsługa pod XP, jak już napisał Kol. c4r0, sprowadza się do użycia bibliotek. Dodam też jeszcze jedną nazwę bibliotek: giveio. Na Elportalu, w dziale nasze strony, jest artykuł Taszy, traktujący o "bojach" z obsługą tegoż portu pod XP-kiem. Polecam.
Dzięki za pomoc:)
Mam program napisany w dev c++ no i odczytuje mi wszystkie porty. Uruchamiam go przez wiersz poleceń. Podaje linka do zdjęcia z tym programem
http://img683.imageshack.us/img683/4063/lpt.png
Ale chciałbym wejść w dany port powiedzmy ten pierwszy <0378>= 00AA i odczytać z niego dane i zapisać je do pliku tekstowego. Czy coś takiego jest w ogóle możliwe??
Podaje jeszcze tekst źródłowy programu:
Pozdrawiam dahra
EDIT: Proszę używać znacznika CODE. RcTomek
Mam program napisany w dev c++ no i odczytuje mi wszystkie porty. Uruchamiam go przez wiersz poleceń. Podaje linka do zdjęcia z tym programem
http://img683.imageshack.us/img683/4063/lpt.png
Ale chciałbym wejść w dany port powiedzmy ten pierwszy <0378>= 00AA i odczytać z niego dane i zapisać je do pliku tekstowego. Czy coś takiego jest w ogóle możliwe??
Podaje jeszcze tekst źródłowy programu:
Kod: Zaznacz cały
#include <stdio.h>
#include <conio.h>
#include <windows.h>
typedef short (_stdcall *inpfuncPtr)(short portaddr);
typedef void (_stdcall *oupfuncPtr)(short portaddr, short datum);
int main(void)
{
HINSTANCE hLib;
inpfuncPtr inp32;
oupfuncPtr oup32;
short x;
int i;
hLib = LoadLibrary("inpout32.dll");
if (hLib == NULL) {
printf("Błąd przy wczytywaniu biblioteki.\n");
return -1;
}
inp32 = (inpfuncPtr) GetProcAddress(hLib, "Inp32");
if (inp32 == NULL) {
printf("GetProcAddress dla Inp32 Failed.\n");
return -1;
}
oup32 = (oupfuncPtr) GetProcAddress(hLib, "Out32");
if (oup32 == NULL) {
printf("GetProcAddress dla Oup32 Failed.\n");
return -1;
}
for (i=0x378; (i<0x380); i++) {
x = (inp32)(i);
printf("Odczyt portu (%04X)= %04X\n",i,x);
}
i=0x378;
x=0x77;
(oup32)(i,x);
printf("Write port 0x%X, datum=0x%2X\n" ,i ,x);
x = (inp32)(i);
printf("Odczyt portu (%04X)= %04X\n",i,x);
i=0x378;
x=0xAA;
(oup32)(i,x);
printf("Write port 0x%X, datum=0x%2X\n" ,i ,x);
x = (inp32)(i);
printf("Odczyt portu (%04X)= %04X\n",i,x);
FreeLibrary(hLib);
return 0;
}
i=0x378;
x=0x77;
(oup32)(i,x);
printf("Write port 0x%X, datum=0x%2X\n" ,i ,x);
x = (inp32)(i);
printf("Odczyt portu (%04X)= %04X\n",i,x);
i=0x378;
x=0xAA;
(oup32)(i,x);
printf("Write port 0x%X, datum=0x%2X\n" ,i ,x);
x = (inp32)(i);
printf("Odczyt portu (%04X)= %04X\n",i,x);
FreeLibrary(hLib);
return 0;
}
EDIT: Proszę używać znacznika CODE. RcTomek
Ostatnio zmieniony 16 gru 2009, 0:26 przez dahra, łącznie zmieniany 1 raz.