Fórum témák

» Több friss téma
Fórum » LPT portos vezérlés
 
Témaindító: creative, idő: Nov 11, 2005
Lapozás: OK   24 / 29
(#) Pepebá válasza ZOL94 hozzászólására (») Jan 28, 2012 /
 
Hali!
Ilyen távolságokra, meg egyébként is ajánlatos optocsatolós leválasztással megoldani a kommunikációt. (Könnyen 'elszállhat' a port, sőt a PC egyébb áramkörei is) Igény szerint 4 bitet bemenetként is lehet használni, a 8 kimenet mellett. Egy kis ügyességgel akár 1024/2048 be-kimenetet lehet megvalósítani. Ilyen megoldással évek óta használok LPT portot 50-60 méter távolságra.
Üdv.
(#) ZOL94 hozzászólása Jan 28, 2012 /
 
köszönöm a válaszokat!
(#) Pere hozzászólása Jan 31, 2012 /
 
Sziasztok,

Egy 9V-os elemről üzemeltetett eszközt szeretnék kapcsolgatni LPT porton keresztül. LED-et tudtam villogtatni, ezért gondoltam tovább lépek. Olvastam, hogy egy tranzisztor segítségével megoldható a dolog. Ezért vettem egy C547C jelűt, és bekötöttem az alábbi módon:
Emitter: ide rákötöttem az LPT GND-jét illetve az vezérlendő eszköz GND-jét
Bázis: ide jön az LPT D0 vonala, egy 470Ohm-os előtét ellenállással
Kollektor: ide kötöttem a vezérelni kívánt kütyüt
A dolog teljesen jól működik, ha adatot vezérlek a D0-ra akkor az eszköz bekapcsol. A gond ott van, hogy míg az eszköz be van kapcsolva, az USB-s egerem meghal. Nem vagyok nagy elektronikai zseni, ezért nem tudom, hogy hol szúrtam a dolgot, de ez így tuti, hogy nem normális.
Szerintetek miért hal meg az egerem, mit rontottam el?

Köszi
G
(#) Hp41C válasza Pere hozzászólására (») Feb 1, 2012 /
 
Szia!
- A 470 ohm egy kicsit kevés bázisellenállásnak, nyugodtan lehet 4k7.. 10k is.
- A vezérelt kütyű a led. Kell egy előtét ellenállás oda is, ez lehet 470 ohm .. 1k a 9V -hoz.
- A negyfényerejű led optikai úton is zavarhatja az egeredet, irányítsd más felé...

A C547C valójának BC547C...
(#) Pepebá válasza Pere hozzászólására (») Feb 1, 2012 /
 
Hali!
Szerintem a nem megfelelő bázis és hiányzó LED előtét ellenállás miatt megterhelted az LPT portot és e-miatt az USB feszültséget, amit úgy reagált le az USB HID hogy egyszerűen nem működött.
Ilyen és ehhez hasonló gondok megelőzésére ajánlatos az LPT port galvanikus leválasztása optocsatolóval.
Üdv.
(#) Pere válasza Pepebá hozzászólására (») Feb 1, 2012 /
 
Sziasztok,

Kicsit zavarosan írtam, nem LED-et akarok kapcsolgatni, azon már túl vagyok. Most egy 9V elemmel működő elemlámpáról van szó.
Kicseréltem a 470? ellenállást 10k?-ra de ugyan úgy megfagy az egerem.
Én is arra gondoltam, hogy túlterheli a portot, a kapcsolás. Még nagyobb ellenállással kivédhető a dolog?

Hosszútávon tervezek optocsatolót is, 4 lámpát kellene kapcsolnom, ezt a csatolót néztem, szerintetek jó lesz?

Köszi
G
(#) zenetom válasza Pere hozzászólására (») Feb 1, 2012 /
 
Van valami áramkör az elemlámpában?
(#) Pere válasza zenetom hozzászólására (») Feb 1, 2012 /
 
Semmi sincs benne. Elem, kapcsoló, izzó.
(#) Szabi1 hozzászólása Feb 3, 2012 /
 
Hello valaki tudna segíteni? LPT portot akarok vezérelni, akartam csinálni egy c++ os programot amivel az adat bitteket tudnám kapcsolgatni. De valamit elrontottam a compiler szerint és nemtudom hogy mit, a dos.h fejfáljról innen hallottam.
A gond ott van, hogy az outportb-t változónak nézi.
Egyébként engem még nem tanitottak programozásra, pseudokódnál tartunk a suliba, de a c++ ból a nehezebb dolgokat nem értem.
  1. #include <DOS.H>
  2. #include <iostream>
  3. #include <stdlib.h>
  4. using namespace std;
  5. int  adat;
  6.  
  7. int main()
  8. {
  9.     cout << ("Please enter the data:\n");
  10.     cin >>adat;
  11.     outportb(378,adat);
  12.     system("PAUSE");
  13.     return 0;
  14. }

A BIOS-ban Normal üzemmódba van a port.
(#) danca válasza Szabi1 hozzászólására (») Feb 5, 2012 /
 
Szerintem az oldalon nem a c++-ról, hanem a sima c-ről beszél, én a programjaimat c#-ban írtam az inpout32.dll-lel, az sokkal egyszerűbb.
(#) danca hozzászólása Feb 5, 2012 /
 
Sziasztok!
Fényerőszabályzót szeretnék építeni LPT portra (8 bit), a program meg van, de nem tudom, hogy hogyan építsek hozzá áramkört. Tulajdonképpen a DAC részével van gondom, van ötletetek, hogy hogyan csináljam?
(#) Stefan válasza danca hozzászólására (») Feb 5, 2012 /
 
Mihez lesz? Kicsit bővebben fejtsd ki mit is akarsz.
(#) danca válasza Stefan hozzászólására (») Feb 5, 2012 /
 
Egy trafós asztali halogén lámpához, DC12V-ra.
Pár perce találtam meg az R/2R létrát és most ezt próbálgatom. A fényerőszabályzó áramkört nem tudom, hogy hogyan csináljam, mostmár inkább abban kellene segítség. Esetleg triakkal lehetne szabályozni a trafót.
(#) Action2K válasza danca hozzászólására (») Feb 5, 2012 /
 
A halogén lámpa nem szereti a szabályozást, hamar kiég.
(#) Hp41C válasza Szabi1 hozzászólására (») Feb 5, 2012 /
 
Szia!
Egy dos -os C, C++ fordítónak még volt ilyen állománya. A Windows 95 után már nem lehet ilyen egyszerűen elérni.
(#) danca válasza Action2K hozzászólására (») Feb 5, 2012 /
 
Akkor mindegy, nem a halogén lesz, de kb 50-60W-ra (esetleg 230-ra is) milyen áramkör lenne jó? Néztem a fényerőszabályzós topikokban, de mindenfélét írnak és nem tudom melyik lenne a legjobb.
(#) Action2K válasza danca hozzászólására (») Feb 6, 2012 /
 
Idézet:
„de mindenfélét írnak”

Ez így van, mert nem mindegy, hogy egyen, vagy váltóáramra kell, nagy teljesítményű izzóra, vagy kis LED-ekre, vagy netán fénycsőre.
Tehát, először tudni kell mit szeretnél, s aztán meglesz rá a megoldás, de az adott topikjában keresd.
(#) szkrep hozzászólása Feb 14, 2012 /
 
Az LPT porthoz optocsatolón keresztül kapcsolódik egy áramköröm. A ledekhez 10mA-re méreteztem ellenállásokat, de így is megterheli a portot, és kb 1V-ot (a LED nyitófeszültségét sem) ér csak el a kimenet.
A port lábain terheletlenül 4,9V és 3,3V feszültségeket mérek -hogy lehet egyes lábakon eltérő? Keresgéltem, de úgy látom, nem szabványos a port terhelhetősége, nem tudom mire kéne vigyáznom.
Meg kéne hajtani az opto ledjét is valamilyen DC/DC konverterrel táplált CMOS bemenetű logikai IC-vel?
Vagy próbáljam addig növelni a ledek előtét ellenállását, míg ráhibázok arra pontra mikor még kinyit, de már elég kis áramot vesz fel?....
(#) Pepebá válasza szkrep hozzászólására (») Feb 15, 2012 /
 
Hali!
Az optocsatoló nem terhelheti a kimenetet. Van a port és az opto.között ellenállás (270-470ohm) ?
Kapcsolási rajzot jó lenne látni.
Üdv.
(#) Stefan válasza szkrep hozzászólására (») Feb 15, 2012 /
 
Mit akarsz kapcsolni vele? Kellene valami buffer azért oda, vagy pl: ULN2803A.
Valószínű a port kimenetén is van ellenállás, és ezért nem megy.
(#) Szabi1 válasza Szabi1 hozzászólására (») Feb 23, 2012 /
 
És valaki tudna segíteni befejezni ezt?
  1. #include <iostream>
  2. #include <stdlib.h>
  3. #include <io.h>
  4.  
  5.  
  6. using namespace std;
  7. int s,i,e;
  8. char data;
  9.  
  10. int main()
  11. {
  12.     system ("color 1F");
  13.     system ("Title D.Sz controller program");
  14.     cout << "\t\t\t\tCopyright(c) 2012\n";
  15.     system ("Date /t");
  16.     system ("Time /t");
  17.     i=0;
  18.  
  19.     do{
  20.         cout <<("Parancsra varakozas:\n");
  21.         cin >>s;
  22.         switch(s)
  23.         {
  24.             case 1: data='\FF'; break;
  25.             case 2: data='\00'; break;
  26.  
  27.             default :{ cout <<("Nem megfelelo billenyut nyomtal le\n");
  28.                        cout <<("Ha ki akarsz lepni nyomj x-et\n");
  29.                        cin >>e;
  30.                        if (e == '\170') return 0;
  31.                      }
  32.         }
  33.         outportb(0x378,data);
  34.       }
  35.       while(i < 2);
  36.     system ("PAUSE");
  37.     return 0;
  38. }

az outportb nem jó ezért valami dll-es megoldás kell amihez még nem értek
Úgy szeretném vezérelni, hogy minden adatbit-et kulon tudjak kapcsolni és ha D2-t kapcsolom akkor mondjuk D0 ne kapcsoljon be. Lehetséges?
Egyébként az az elvem, hogy állandóan kérjen adatot be és a switchnél lesz 6 eset. A D7,D6, D5 biteket akarom kapcsolni. Azért lenne 6 eset, hogy ki is kapcsoljam őket, azt én megoldom, csak tudjak a portra irni.
(#) Stefan válasza Szabi1 hozzászólására (») Feb 24, 2012 / 1
 
io.dll
Ezzel lehet kezelni XP alatt tuti jó, próbáltam.
Egyedi bit állítás:

  1. unsigned char data = 0;
  2.  
  3. PortOut(0x378; data); // 0
  4.  
  5. data |= 0b00001000;
  6. PortOut(0x378; data); // D3 be
  7.  
  8. data &= ~0b00001000;
  9. PortOut(0x378; data); // D3 ki
(#) Szabi1 válasza Stefan hozzászólására (») Feb 24, 2012 /
 
Nekem windows 7 X64 van.
Eddig 2 programmal sikerult mukodesre birni:
LPT Port Test Utility x64;
wndlpt (winamp plugin);
Nemnagyon értek a dll-ekhez, hogy kell meghívni?
Gondolom a header-ek kötzelében kell.
0x378 as a portcim.
(#) Szabi1 válasza Szabi1 hozzászólására (») Feb 24, 2012 /
 
Hiba: nincs meghíva az io.dll
  1. #include <iostream>
  2. #include <stdlib.h>
  3. #include <stdio.h>
  4.  
  5. int s,e,f;
  6. unsigned char data = 0;
  7.  
  8. int main()
  9. {
  10.     using namespace std;
  11.     system ("color 1F");
  12.     system ("Title D.Sz Disco controller program");
  13.     cout << "\t\t\t\tCopyright(c) 2012\n";
  14.     system ("echo.");
  15.     system ("echo **********************************");
  16.     system ("Date /t");
  17.     system ("Time /t");
  18.     f=0;
  19.     system ("echo **********************************");
  20.     system("echo 1.es Stroboszkop be\n");
  21.     system("echo 2.es Stroboszkop ki\n");
  22.     system("echo 3.mas Fustgep futoszal be\n");
  23.     system("echo 4.es Fustgep futoszal ki\n");
  24.     system("echo 5.os Fustkep szivattyu be\n");
  25.     system("echo 6.os Fustgep szivattyu ki\n");
  26.     system ("echo **********************************");
  27.     system("echo.");
  28.     //adatok kiirasa dos parancsok hasznalata
  29.     do{
  30.         cout <<("Parancsra varakozas:\n");
  31.         cin >>s;
  32.         switch(s)
  33.         {
  34.             case 1:{data &= ~0b00001000;
  35.                     PortOut(0x378, data); /* D3 ki*/}; break;
  36.             case 2: PortOut(0x378, data); /* 0 */ break;
  37.             case 3: cout <<("3-mast nyomtal\n"); break;
  38.             case 4: PortOut(0x378, data); /* 0 */ break;
  39.             case 5: cout <<("5-ost nyomtal\n"); break;
  40.             case 6: PortOut(0x378, data); /* 0 */ break;
  41.             default:{  cout <<("Nem megfelelo billenyut nyomtal le:\n");
  42.                        system ("echo **********************************");
  43.                        cout <<("1.es Stroboszkop be\n");
  44.                        cout <<("2.es Stroboszkop ki\n");
  45.                        cout <<("3.mas Fustgep futoszal be\n");
  46.                        cout <<("4.es Fustgep futoszal ki\n");
  47.                        cout <<("5.os Fustkep szivattyu be\n");
  48.                        cout <<("6.os Fustgep szivattyu ki\n");
  49.                        system ("echo **********************************");
  50.                        cout <<("\tMost kilepek\n");
  51.                        system ("echo **********************************");
  52.                        system ("PAUSE");
  53.                        return 0;
  54.  
  55.                      }
  56.         }
  57.       }
  58.       while(f > 5); /* A vegtelenszer kerje be az s-t*/
  59.       system ("PAUSE");
  60.     return 0;
  61. }
(#) Szabi1 válasza Stefan hozzászólására (») Feb 24, 2012 /
 
Mikor ide irtam az előző HSZ-t siettem és azt hittem a kommentekből kifolyólag, hogy a D3 ki az nemmás mint D3 mason adat kiküldés, de suliba menet eszembej jutott, hogy milyen hülye voltam
Most leegyszerűsítettem, pl: a portout-ot a switchen kivül helyeztem el.
Csak anyit segítsen még valaki, hogy az io.dll-t meg tudjam hívni, mert másképp a PortOut nem használható, eddig dll-ekkel nem foglalkoztam, de tudom hogy mi az.
(#) Stefan válasza Szabi1 hozzászólására (») Feb 24, 2012 /
 
Az oldalon fenn az egész egy zip ben.
van c file is benne amiben ott van hogyan kell betölteni a dllt.
(#) Szabi1 válasza Stefan hozzászólására (») Feb 24, 2012 /
 
Köszi a segítséget de én azért írok ide mert meg akarom tudni mi miért van.
  1. #include <iostream>
  2. #include <stdlib.h>
  3. #include <stdio.h>
  4. #include <windows.h>
  5. //Dll function signature
  6. typedef void (WINAPI *PORTOUT) (short int Port, char Data);
  7.  
  8. int main(int argc, char *argv[])
  9. {
  10.     PORTOUT PortOut;
  11.  
  12.     // Load DLL file
  13.     HINSTANCE hinstLib = LoadLibrary(TEXT("io.dll"));
  14.     if (hinstLib == NULL) {
  15.             printf("ERROR: unable to load DLL\n");
  16.             return 1;
  17.     }
  18.  
  19.     // Get function pointer
  20.     PortOut = (PORTOUT)GetProcAddress(hinstLib, "PortOut");
  21.     if (PortOut == NULL) {
  22.             printf("ERROR: unable to find DLL function\n");
  23.             FreeLibrary(hinstLib);
  24.             return 1;
  25.     }
  26.     int s,e,f;
  27.     unsigned char data = 0;
  28.     using namespace std;
  29.     system ("color 1F");
  30.     system ("Title D.Sz Disco controller program");
  31.     cout << "\t\t\t\tCopyright(c) 2012\n";
  32.     system ("echo.");
  33.     system ("echo **********************************");
  34.     system ("Date /t");
  35.     system ("Time /t");
  36.     f=0;
  37.     system ("echo **********************************");
  38.     system("echo 1.es Stroboszkop be\n");
  39.     system("echo 2.es Stroboszkop ki\n");
  40.     system("echo 3.mas Fustgep futoszal be\n");
  41.     system("echo 4.es Fustgep futoszal ki\n");
  42.     system("echo 5.os Fustkep szivattyu be\n");
  43.     system("echo 6.os Fustgep szivattyu ki\n");
  44.     system ("echo **********************************");
  45.     system("echo.");
  46.     //adatok kiirasa dos parancsok hasznalata
  47.     do{
  48.         cout <<("Parancsra varakozas:\n");
  49.         cin >>s;
  50.         switch(s)
  51.         {
  52.             case 1:data |= 0b00001000; break;
  53.             case 2:data &= ~0b00001000; break;
  54.             default:{  cout <<("Nem megfelelo billenyut nyomtal le:\n");
  55.                        system ("echo **********************************");
  56.                        cout <<("1.es Stroboszkop be\n");
  57.                        cout <<("2.es Stroboszkop ki\n");
  58.                        cout <<("3.mas Fustgep futoszal be\n");
  59.                        cout <<("4.es Fustgep futoszal ki\n");
  60.                        cout <<("5.os Fustkep szivattyu be\n");
  61.                        cout <<("6.os Fustgep szivattyu ki\n");
  62.                        system ("echo **********************************");
  63.                        cout <<("\tMost kilepek\n");
  64.                        system ("echo **********************************");
  65.                        system ("PAUSE");
  66.                        return 0;
  67.                      }
  68.         }
  69.          // Call function.
  70.         PortOut(0x378, data); // a data valtozo alapjan kiirja a portra a biteket.
  71.       }
  72.       while(f > 5);
  73.         //We free the dll
  74.         FreeLibrary(hinstLib);
  75.       system ("PAUSE");
  76.     return 0;
  77. }

Erre a kódra lefut a compiler meg is lesz belőle az .exe és csakis Administrator engedélyel fut, ami nem gond, de amikor lenyomom az 1-est akkor lefagy az ablak. De nemhiszem hogy a Dll hívásal van gond.
(#) Stefan válasza Szabi1 hozzászólására (») Feb 25, 2012 /
 
Szerintem az oprendszerrel van baja.
Meg kéne próbálni olyan dll-t ami jó WIN7 x64 re is.
Bővebben: Link
Esetleg megpróbálhatod ezt is, bár a neve alapján ez is 32 bites rendszerre van, de ott az az egész pack, próbáld ki az exét, ha megy akkor ez alapján el lehet indulni.
Igaz ez C#, .NET framework, de ha ismered a C-t nemhiszem h gondot okoz átírni a mintaprogramot.
(#) Szabi1 válasza Stefan hozzászólására (») Feb 25, 2012 /
 
Köszi de jelenleg van egy ilyen inpout x64.dll es file-om azt akarom betölteni, remélem hogy sikerul. De hova kell másolni a dll-eket? az exe könyvtárába?
(#) Stefan válasza Szabi1 hozzászólására (») Feb 25, 2012 /
 
Igen, az exe mellé kell.
Megpróbáltad debuggolni a kódot? Kiderült, hogy hol fagy le?
Amúgy pont azt az inpoutx64.dll-t linkeltem be én is
Következő: »»   24 / 29
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem