v cecku ovladanie portu lpt

C,C++,C#

Moderátori: psichac, Moderátori

werop
Stály člen
Stály člen
Príspevky: 115
Dátum registrácie: 01 Jún 2009, 00:00

v cecku ovladanie portu lpt

Príspevok od používateľa werop » 04 Mar 2011, 12:54

zdravim vas,uz som zufaly a nemozem spavat,chcem ovladat paralelny port a nedari sa mi,som spravil program v borlande c++ a pocas programu nic nevykonava ziadne zmeny iba ak ukoncim program:( poradte mi lebo zosaliem cely tyzden od rana do rana som len pri programoch a vyhladavani zdrojovych kodov :(
------------------------------------------------------------------------------------
V tomto programe mi nezhasne ledky pocas spustenia a ani nerozsvieti prvu ledku po 2 sekundach.ked ukoncim program tak zrazu vykona rozsvietenie prvej ledky ,je to divne a nvm co stym :(
chcem aby mi to fungovalo pocas behu programu...

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

main()
{
outportb(0x3BC,0x00);
sleep(2);

outportb(0x3BC,0x01);
sleep(2);

return 0;
}
----------------------------------------------------------------------------------
program v dev c++ : spusti mi program ale nevypne ledky a ani po 2 sekundach co malo vypat ledky nerozsvieti prvu ledku co stym?:(

#include <cstdlib>
#include <iostream>
#include <dos.h>
#include <conio.h>

using namespace std;

unsigned char inportb(unsigned int port) {
unsigned char ret;
asm volatile("inb %%dx,%%al":"=a" (ret):"d"(port));
return ret;
}

inline void outportb(unsigned int port, unsigned char value) {
asm volatile("outb %%al,%%dx": :"d"(port),"a" (value));
}
int main(int argc, char *argv[])
{

system("PAUSE");
outportb(0x3BC,0x00);
delay(2000);
outportb(0x3BC,0x01);
delay(2000);
return EXIT_SUCCESS;
}
------------------------------------------------------------------------------------
Staci poradit vcom je chyba alebo ak tu niekto ma zdrojak ktory je funkcny na borland, dev c++ ,moze byt aj na visual basic tak keby mi poslal na mail qwaderbn@azet.sk
Vopred moc dakujem ,s pozdravom cico.
0

stefanSK
Pokročilý člen
Pokročilý člen
Príspevky: 752
Dátum registrácie: 24 Jún 2010, 00:00
Bydlisko: Trnava
Vek: 68

Príspevok od používateľa stefanSK » 04 Mar 2011, 13:08

Zabudol si najdôležitejšiu vec: pod akým operačným systémom robíš !
(predpokladám že WINDOWS XP nie DOS.)
Už od doby Windows2000 je bežnému smrtelníkovy zakázaný priamy prístup na porty. Dá sa pristupovať cez kernel drivery. To znamená, že ak máš v programe in/out inštrukciu (a tvoj program nemá privilegované práva), OS generuje prerušenie a nevykoná ju.
Jediná šanca je teda ísť cez kernel driver. Pre Borland napr. dlportio.dll.
Určite je viacej možností.
0
S.K.

werop
Stály člen
Stály člen
Príspevky: 115
Dátum registrácie: 01 Jún 2009, 00:00

Príspevok od používateľa werop » 05 Mar 2011, 11:07

zdravim ,pozeral som na nete ako povolit paralelny port ale nic moc,som podla jedneho fora behol do systemu do karty hardware tam otvoril spravce zariadeni a tam lpt port a dal nastaveni portu,ponastavoval som po kazde nieco ine aj tak bez vysledkov(po kazde som restartoval pc) ,,, potom som sa docital ze biose mozem zmenit tak som sa rozhodol ist do toho biosu a na zaciatku co bol obrazok pri spusteni tak bolo napisane DEL= start bios ,tak som dal del a bios sa mi nepustil aj po viacerych pokusoch,,, potom som skusal ak si mi ty poradil ,stiahol som dlportio.dll a vlozil do zlozky system32 lenze tam uz ten subor bol tak som ho hodil medzi moj program do zlozky a aj tak nic , ako mam povolit ten port nvm ach jaj :(
0

stefanSK
Pokročilý člen
Pokročilý člen
Príspevky: 752
Dátum registrácie: 24 Jún 2010, 00:00
Bydlisko: Trnava
Vek: 68

Príspevok od používateľa stefanSK » 06 Mar 2011, 19:20

Musíš si upraviť svoj program tak, aby volal funkcie na vstup/výstup na lpt cez knižnicu dlportio.dll . K tomu potrebuješ prilinkovať "niečo.lib" (neviem presne ako sa tá knožnica volá - možno tiež dlportio.lib). V programe zabudni, že použiješ priamo output/input.
0
S.K.

Používateľov profilový obrázok
relays
Nový člen
Nový člen
Príspevky: 84
Dátum registrácie: 08 Feb 2009, 00:00
Bydlisko: Žiar nad Hronom
Vek: 46
Kontaktovať používateľa:

Príspevok od používateľa relays » 06 Mar 2011, 19:59

Páni.
Poraďte prosím ktorá kniha sa zaoberá touto problematikou,ale tak,že
podľa nej to aj pobeží.
Konkrétne chcem využívať sériový port pre moju aplikáciu.
Mám od Herouta programovanie v C a to mi naozaj veľa dalo.
Aj pre MCU a teraz to skúšam v dev C++.
Relays.
0

stefanSK
Pokročilý člen
Pokročilý člen
Príspevky: 752
Dátum registrácie: 24 Jún 2010, 00:00
Bydlisko: Trnava
Vek: 68

Príspevok od používateľa stefanSK » 07 Mar 2011, 08:55

Neviem ktorá kniha sa zaoberá použitím sériového kanála v Dev C++, ale stiahni si zdrojáky programu AvrOsp (programátor pre Atmel), je tam celkom dobré ovládanie sériového kanála. Projekt je pre Dev C++.
0
S.K.

kustom456
Okoloidúci
Okoloidúci
Príspevky: 9
Dátum registrácie: 03 Mar 2012, 18:58

Re: v cecku ovladanie portu lpt

Príspevok od používateľa kustom456 » 03 Mar 2012, 19:03

mohli by ste mi poradit, co robim zle.
ak to dam kompilovat do dev c++ tak to skompiluje ale ked to spusti tam mi vypise tu hlasku
LPT.exe has encountered a problem and needs to close. We are sorry for the inconvenience.
"neodosielat"
0

stefanSK
Pokročilý člen
Pokročilý člen
Príspevky: 752
Dátum registrácie: 24 Jún 2010, 00:00
Bydlisko: Trnava
Vek: 68

Re: v cecku ovladanie portu lpt

Príspevok od používateľa stefanSK » 03 Mar 2012, 22:04

Skús použiť DLPortIO. Stiahni si potrebné súbory .dll, .sys. .lib. Prime ovládanie z C++ nejde, musíš ísť cez dll.
0
S.K.

Používateľov profilový obrázok
raden
Pokročilý člen
Pokročilý člen
Príspevky: 628
Dátum registrácie: 27 Jún 2009, 00:00
Bydlisko: Žilinský kraj

Re: v cecku ovladanie portu lpt

Príspevok od používateľa raden » 04 Mar 2012, 19:12

A čo keby si skúsil spustiť ten program, kde použiješ priamo output/input, cez program DosBox. Zdá sa mi že tak to funguje.
0

Napísať odpoveď
  • Podobné témy
    Odpovedí
    Zobrazení
    Posledný príspevok