FAQ | Points | Add... | Recent posts | Search | Register | Log in


Sterowanie portem LPT VisualBasic6 i INNE


Post new topic  This topic is locked      Main Page -> Forum Index -> Programming Generally -> Sterowanie portem LPT VisualBasic6 i INNE
Author
Message
adi
Poziom 7
Poziom 7


Joined: 03 Aug 2006
Posts: 23
Location: wrocław

Post#61 10 Nov 2007 16:11   

Re: Sterowanie portem LPT VisualBasic6 i INNE


Witam!
Czy ktoś może mi napisać programik sterujący 7 wyjściem sterownika LPT tak aby mozna było załączać urzadzenie cyklicznie na kilka sekund po kilkunastu sakundach przewy. I żeby była regulacja czasu załączenia i czasu przewy.
Back to top
   
sivex
Poziom 19
Poziom 19


Joined: 17 Jul 2004
Posts: 702

Post#62 Post from the author of the topic 12 Nov 2007 18:23   

Re: Sterowanie portem LPT VisualBasic6 i INNE


Rozpoczynając ten wątek myślałem bardziej o tym by opisać sterowanie portem możliwie jak najdokładniej i prosto by właśnie można bylo samemu napisać programik taki jak ten o którym piszesz.
Miałem nadzieje, że każdy z forumowiczów doda coś do tego tematu i tak się też stało za co bardzo wszystkim dziękuje!
Ci którzy zadają pytania też przyczyniają sie do rozbudowy zagadnienia.

W przenośni mówiąc tu możesz otrzymać przepis na tort a nie gotowy wyrób bo takie są w cukierni za pieniążki.

Proponuje byś zabrał sie za pisanie programu we własnym zakresie a tu napewno znajdziesz odpowiedż na te problemy, z którymi nie będziesz sobie dawał rady. Oczywiście sprawdź najpierw czy odpowiedź już nie istnieje.

pozdrawiam i zachęcam do programowania!
Back to top
   
Google

Google Adsense


Post# Post from the author of the topic 12 Nov 2007 18:23   





Back to top
   
adi
Poziom 7
Poziom 7


Joined: 03 Aug 2006
Posts: 23
Location: wrocław

Post#63 13 Nov 2007 11:32   

Re: Sterowanie portem LPT VisualBasic6 i INNE


Witam ponownie!
Jakbym umiał to zrobić to by nie było mojej prośby.
W takim razie prosze o adres do tej cukierni dla takich gamoni jak ja.
Pozdrawiam tych przyczyniajacych sie do rozwoju mysli i nie tylko!!
Back to top
   
jarzyna_rulezz
Poziom 2
Poziom 2


Joined: 02 Dec 2007
Posts: 3
Location: krakow

Post#64 04 Dec 2007 00:21   

Re: Sterowanie portem LPT VisualBasic6 i INNE


Czy mógłby ktoś wrzucic jakis prosty przykład programowania portu LPT w Visual Basic 2005 łacznie ze schematem do ktorego podłączam LPT

Jestem poczatkujacym programista i nie wiem jak sie zabrac za to.
Back to top
   
riodoro1
Poziom 18
Poziom 18


Joined: 30 Mar 2007
Posts: 561
Location: Dzierżoniów

Post#65 18 Dec 2007 14:40   

Re: Sterowanie portem LPT VisualBasic6 i INNE


a jest metoda na Autoit jak ktoś wie to bardzo proszę
Back to top
   
sivex
Poziom 19
Poziom 19


Joined: 17 Jul 2004
Posts: 702

Post#66 Post from the author of the topic 18 Dec 2007 16:51   

Re: Sterowanie portem LPT VisualBasic6 i INNE


AutoIt jest świetny :) POLECAM!

A oto kod do wysłania danych na port

Code:
$a = 255 ;(0 to255)
DllCall( "inpout32.dll", "int", "Out32", "int", 0x378, "int", $a )


... i odczytania


Code:
$r = DllCall("inpout32.dll", "int", "Inp32", "int", 0x379)
msgbox(0,"LPT",$r)


...zasady te same co wcześniej opisane dla VB6.

powodzenia.
Back to top
   
Mariojas
Poziom 15
Poziom 15


Joined: 28 Nov 2006
Posts: 201
Location: Jastrzębie Zdrój

Post#67 28 Aug 2008 18:23   

Re: Sterowanie portem LPT VisualBasic6 i INNE


Ja mam problem tego rodzaju, że napięcie przy logicznej "1" na LPT wynosi tylko 3,34V. Potrzeba mi pełnych 5V. Tryb pracy to ECP. Co z tym fantem zrobić?
Back to top
   
Dżyszla
Poziom 24
Poziom 24


Joined: 15 May 2005
Posts: 4528
Location: Żory (kiedyś Opole)

Post#68 28 Aug 2008 19:14   

Re: Sterowanie portem LPT VisualBasic6 i INNE


Zastosować tranzystor i zasilanie.
Back to top
   
Mariojas
Poziom 15
Poziom 15


Joined: 28 Nov 2006
Posts: 201
Location: Jastrzębie Zdrój

Post#69 28 Aug 2008 19:17   

Re: Sterowanie portem LPT VisualBasic6 i INNE


ale ja chce pod port podłączyć bramki logiczne... więc chyba z tranzystorem nie wypali, co?

[dodano]
Jednak nie potrzeba mi 5V na LPT. Źle zasiliłem bramki i przez to zrzuciłem winę na napięcie na LPT ;)
Back to top
   
Dżyszla
Poziom 24
Poziom 24


Joined: 15 May 2005
Posts: 4528
Location: Żory (kiedyś Opole)

Post#70 28 Aug 2008 19:50   

Re: Sterowanie portem LPT VisualBasic6 i INNE


1. A myślisz, że jak się dokonuje "konwersji" napięć?
2. Skoro tak unikasz przejść, to czemu nie zastosujesz CMOSowskich?
Back to top
   
Akane
Poziom 18
Poziom 18


Joined: 02 Jun 2003
Posts: 544
Location: JO90, JN49

Post#71 07 Nov 2008 11:28helpful post - solution   

Re: Sterowanie portem LPT VisualBasic6 i INNE


Ten przykład jest dla użytkowników XP, testowany na SP3. Są tu dwie funkcje:

_tmain - odpowiednik main() lub WinMain() - jej zadaniem jest przeskoczenie na konto systemowe za pomocą zaplanowanego zadania. Można wszystko stąd pominąć gdy program jest uruchomiony jako usługa na koncie LocalSystem.

SystemMain - właściwy punkt wejścia, gdzie za pomocą funkcji ZwSetInformationProcess process otrzymuje uprawnienia do portów I/O. Funkcja zadziała pomyślnie gdy process będzie miał uprawnienie SeTcbPrivilege, które jest dostępne dla kont systemowych.

Uwaga! Funkcja ZwSetInformationProcess wywołana w XP-ku zainstalowanym w Virtual PC nie zwraca błędu, ani nie przyznaje dostępu do portów.



iopl.zip
 Description:
 n/a

Download
 Filename:  iopl.zip
 Contents:  
 Filesize:  8.46 KB
 Punkty:  0.00

Back to top
   
miciek79
Poziom 9
Poziom 9


Joined: 14 Mar 2005
Posts: 35
Location: wola

Post#72 11 Nov 2008 21:43helpful post - solution   

Re: Sterowanie portem LPT VisualBasic6 i INNE


Witam czy jest ktoś w stanie mi pomóc w poprawieniu jednej procedury?

Pisze program w Vb, który za pomocą suwaków reguluje jasność świecenia Diód RGB podłączonych do portu lpt. Problem polega na tym, że w VB kontrolka Timer nie daje wystarczającej dokładności - nie jest w stanie generować czasu z interwałem 1 ms a około 15 ms, co powoduje ze modulowanie szerokośći impulsu jest niemożliwe. Czy jest jakas dokladniejsza procedura??? jak inaczej to wykonać
Back to top
   
sivex
Poziom 19
Poziom 19


Joined: 17 Jul 2004
Posts: 702

Post#73 Post from the author of the topic 12 Nov 2008 20:49   

Re: Sterowanie portem LPT VisualBasic6 i INNE


Proponuje wykonywanie Twojego programu w pętli (z oddaniem sterowania do systemu - DoEvents) tworząc własną funkcję zliczającą odstępy czasowe.
Pamiętać należy, że OS wykonjue inne operacje i nawet ustawienie aplikacji jako real nie daje gwarancji zatrzymania pracy za sprawą HDD itp.

pozdr.
Back to top
   
Google

Google Adsense


Post# Post from the author of the topic 12 Nov 2008 20:49   





Back to top
   
shadoweyes
Poziom 16
Poziom 16


Joined: 10 May 2003
Posts: 335
Location: POLKOWICE

Post#74 15 Nov 2008 21:54helpful post - solution   

Re: Sterowanie portem LPT VisualBasic6 i INNE


Polecam ściągnąć książkę z netu o porcie LPT, niestety w języku angielskim. Jest bardzo dobra mi się w każdym razie bardzo przydała - Parallel Port Complete by Jan Axelson.
Back to top
   
shadoweyes
Poziom 16
Poziom 16


Joined: 10 May 2003
Posts: 335
Location: POLKOWICE

Post#75 19 Nov 2008 13:26   

Re: Sterowanie portem LPT VisualBasic6 i INNE


Strony dotyczące m.in. portu LPT:
Sterownik urządzeń elektrycznych przez port LPT komputera:
http://www.elektroda.pl/rtvforum/topic29620-0-asc-60.html
Schematy i opisy portów (LPT, COM, Gameport):
http://www.rafal.waw.pl/wynalazki/porty/
Parallel Port:
http://logix4u.net/Legacy_Ports/Parallel_Port.html
Port I/O Driver:
http://www.driverlinx.com/DownLoad/DlPortIO.htm
WinIO:
http://www.digitalmars.com/rtl/winio.html
Programowanie w WinAPI:
http://www.winapi.org/
NTPort Library
http://www.zealsoftstudio.com/ntport/
Back to top
   
czesiu
Poziom 20
Poziom 20


Joined: 07 May 2003
Posts: 1043
Location: Bełchatów

Post#76 21 Feb 2009 10:36   

Re: Sterowanie portem LPT VisualBasic6 i INNE


Dodam jeszcze od siebie, że nie trzeba mieć zainstalowanego VB żeby cieszyć się sterowaniem portów. Makro napisane w Excelu też śmiga. :)
Back to top
   
Dr.Vee
Poziom 22
Poziom 22


Joined: 16 May 2008
Posts: 1808
Location: Wrocław

Post#77 19 Mar 2009 21:16   

Re: Sterowanie portem LPT VisualBasic6 i INNE


Link do postu LPT FAQ na elektrodzie.

Pozdrawiam,
Dr.Vee
Back to top
   
jacek880
Poziom 10
Poziom 10


Joined: 18 Jan 2007
Posts: 51

Post#78 04 May 2009 18:39   

Re: Sterowanie portem LPT VisualBasic6 i INNE


A jak zrobić w AutoIT tak aby przy wciśnięciu klawisza zapaliła się dioda a po puszczeniu przycisku dioda zgasła. Takie chwilowe włączanie diody???
Back to top
   
shadoweyes
Poziom 16
Poziom 16


Joined: 10 May 2003
Posts: 335
Location: POLKOWICE

Post#79 07 May 2009 12:45   

Re: Sterowanie portem LPT VisualBasic6 i INNE


Zobacz tu jest wiele linków może coś znajdziesz co się przyda ->
Interfejs (konwerter) LPT -> ISA. Port LPT magazyn wiedzy:
http://www.elektroda.pl/rtvforum/viewtopic.php?t=1149321&highlight=
Back to top
   
kubusek32
Poziom 9
Poziom 9


Joined: 29 Aug 2007
Posts: 34
Location: Wrocław

Post#80 17 May 2009 16:27   

Re: Sterowanie portem LPT VisualBasic6 i INNE


A ja mam problem bo chce sterować silnikiem krokowym. Mam sterownik który potrzebuje sygnał zegara i właśnie chciałbym prosić o pomoc, problem nie leży w tym jak to zrobić (może być najgłupsze ustawianie 0 i 1 na jakimś pinie) ale chodzi mi o to jak wycisnąć z tego portu konkretne częstotliwości (kHz). Próbowałem pisać w borlandzie i używać komponentu Timer z interwałem 1 ms co w teorii daje 1000 Hz ale w praktyce jest około 50. Teraz wyobraźcie sobie że jest 600 kroków na obrót, można szału dostać. Macie jakieś propozycje jak to zrobić to szybciej ??
Back to top
   
Dżyszla
Poziom 24
Poziom 24


Joined: 15 May 2005
Posts: 4528
Location: Żory (kiedyś Opole)

Post#81 17 May 2009 16:59   

Re: Sterowanie portem LPT VisualBasic6 i INNE


Tak. Wykonuj to w pętli, która sprawdza dokładniej czas (QueryPerformanceCounter). Jednak nie oczekuj, że w ten sposób osiągniesz jakieś zawrotne częstotliwości. Ciekawszym i chyba dokładniejszym może być wykorzystanie transmisji szeregowej z odpowiednio spreparowanym sygnałem.
Back to top
   
kubusek32
Poziom 9
Poziom 9


Joined: 29 Aug 2007
Posts: 34
Location: Wrocław

Post#82 17 May 2009 18:45   

Re: Sterowanie portem LPT VisualBasic6 i INNE


Dżyszla wiesz co, nie umiem oprogramować portu szeregowego ale przybliżę Ci dokładniej sytuacje. Program ma się wykonywać na dość starym laptopie który ma Windowsa 98. Do tego jest od podłączony do sieci Wi-Fi. Chciałbym zrobić aplikacja działającą na zasadzie klient-serwer. Mianowicie na komputerze stacjonarnym miałbym klienta który łączył by się z starym laptopem i sterował nim jako generatorem (ogólnie potrzebuje sterować silnikiem przez komputer na odległość). Mógłbyś mi jakoś pomóc ??
Back to top
   
Dżyszla
Poziom 24
Poziom 24


Joined: 15 May 2005
Posts: 4528
Location: Żory (kiedyś Opole)

Post#83 17 May 2009 18:59   

Re: Sterowanie portem LPT VisualBasic6 i INNE


Oprogramowanie portu szeregowego prawie niczym nie różni się od portu równoległego. Im starszy sprzęt, tym trudniej będzie o wysokie częstotliwości. Może pomyśl w takim razie o elektronice, która by sterowała silnikiem własnym rytmem? Zaś przez LPT łatwo byś przekazywał np ilość kroków.
Back to top
   
kubusek32
Poziom 9
Poziom 9


Joined: 29 Aug 2007
Posts: 34
Location: Wrocław

Post#84 17 May 2009 19:18   

Re: Sterowanie portem LPT VisualBasic6 i INNE


To sterowanie musi się odbywać w czasie rzeczywistym tzn silnik będzie napędem i nie da się przesłać ile ma się okręcić tylko wszystko jest zmieniane na bieżąco. Nie obracam się w generatorach sterowanymi kodem binarnym, znasz jakieś rozwiązanie ??
Back to top
   
Dżyszla
Poziom 24
Poziom 24


Joined: 15 May 2005
Posts: 4528
Location: Żory (kiedyś Opole)

Post#85 17 May 2009 20:11   

Re: Sterowanie portem LPT VisualBasic6 i INNE


patrz punkt 17 Maj 2009 17:59:11
Back to top
   
shadoweyes
Poziom 16
Poziom 16


Joined: 10 May 2003
Posts: 335
Location: POLKOWICE

Post#86 17 May 2009 22:46   

Re: Sterowanie portem LPT VisualBasic6 i INNE


Do dokładnego odmierzania czasu możesz użyć np. komponentów RDTSC i ZLRDTSC :->
http://www.vclcomponents.com/catalog/Zlportio
(With this unit you can measure time intervals with up to nanoseconds resolution&With this unit you can measure time intervals with up to microseconds resolution).
Back to top
   
sivex
Poziom 19
Poziom 19


Joined: 17 Jul 2004
Posts: 702

Post#87 Post from the author of the topic 19 May 2009 06:29   

Re: Sterowanie portem LPT VisualBasic6 i INNE


Jeżeli nie jest wymagana idealna precyzja w częstotliwości to proponuje dość proste rozwiązanie.

Wiadomo, że kontrolka typu timer nie jest wstanie "taktować" zbyt szybko.
Ja w wiele razy wykorzystywałem pętle, której prędkość regulowałem testowaniem milisekund liczonych systemowo (w VB zwraca je funkcja Timer, nie mylić z kontrolką).
Jestem przekonany, że efekt będzie dla twojego zastosowania wystarczający.
Dodatkowo wypadało by dodać programowi jak najwyższy możliwy priorytet, ponieważ w innym przypadku odpalanie czegokolwiek na kompie podczas działania twojej aplikacji może zakłócić jej stabilność.


Poniżej schemat (VB)

Code:
Dim BackUp As Single


Private Sub Form_Load()

Dim Nasz_Interval As Single

Nasz_Interval = 0.01 'Intervał

Do
If Timer >= BackUp Then
BackUp = Timer + Nasz_Interval
'### Tu wykonanie funkcji ###
End If

DoEvents ' oddanie sterowania dod systemu!
Loop

End Sub


(Uwaga timer odlicza od początku dnia, czyli po północy znowu od zera, należy obsłużyć to zdarzenie, co nie jest problemem)

pozdr.
Back to top
   
Mariojas
Poziom 15
Poziom 15


Joined: 28 Nov 2006
Posts: 201
Location: Jastrzębie Zdrój

Post#88 31 May 2009 15:47   

Re: Sterowanie portem LPT VisualBasic6 i INNE


Ja mam problem innego typu. Mam urządzenie wykonawcze, program w C i wszystko działało na XP. Dziś zainstalowałem Windows 7 RC x64 i klapa. To, że nie działa to akurat mnie nie zdziwiło, bo w końcu jest to wersja 64-bitowa, a pierwotna aplikacja była pisana pod 32-bity.
Program uruchamiam jako administrator i od razu wywala komunikat, że nie potrafi załadować biblioteki Inpoutx64.dll (to wersja x64 starego dobrego inpout32.dll znaleziona na stronie autora).
Brak dostępu do LPT to wina systemu, czy źle napisanego programu? Powtarzam, pod XP SP3 x86 działało to idealnie.

Dodam, że mój program to przeróbka dostępnego w sieci prostego programiku, w którym można było wpisać w pole wartość do wysłania do portu, a także odczytać stan portu. Autora nie znam.

Kod programu (Borland C++ Builder):

Code:

//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "trayicon"
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
  hDLL = LoadLibrary("inpoutx64.dll");
  if (hDLL)
  {
    InPort =  (InPortType)  GetProcAddress(hDLL, "Inp32");
    OutPort = (OutPortType) GetProcAddress(hDLL, "Out32");
  }
  else
  ShowMessage("Blad przy ladowaniu pliku 'inpoutx64.dll'.");
}
//---------------------------------------------------------------------------


void __fastcall TForm1::FormCreate(TObject *Sender)
{
  PortAddress = 0x378;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  Value = StrToInt(0);
  OutPort(PortAddress,  Value);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
  Value = StrToInt(1);
  OutPort(PortAddress,  Value);
  //Wyœwietlenie w obiekcie Label1 wartoœci ustawionej na porcie o adresie okreœlonym przez PortAddress.
  //Label1->Caption = IntToStr(InPort(PortAddress));
}
//---------------------------------------------------------------------------

void __fastcall TForm1::TrayIcon1Create(TObject *Sender)
{
      TrayIcon1->Minimize();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::elemedutki1Click(TObject *Sender)
{
  Value = StrToInt(0);
  OutPort(PortAddress,  Value);
}
//---------------------------------------------------------------------------


void __fastcall TForm1::Wyjd1Click(TObject *Sender)
{
  Form1->Close();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::wiato1Click(TObject *Sender)
{
  Value = StrToInt(1);
  OutPort(PortAddress,  Value);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Grzak1Click(TObject *Sender)
{
  Value = StrToInt(4);
  OutPort(PortAddress,  Value);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Wszystko1Click(TObject *Sender)
{
  Value = StrToInt(5);
  OutPort(PortAddress,  Value);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button3Click(TObject *Sender)
{
  Value = StrToInt(4);
  OutPort(PortAddress,  Value);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button4Click(TObject *Sender)
{
  Value = StrToInt(5);
  OutPort(PortAddress,  Value);
}
//---------------------------------------------------------------------------

Back to top
   
Mariojas
Poziom 15
Poziom 15


Joined: 28 Nov 2006
Posts: 201
Location: Jastrzębie Zdrój

Post#89 02 Jun 2009 09:11   

Re: Sterowanie portem LPT VisualBasic6 i INNE


Nikt nie zna rozwiązania?

Nowe dane:
Takie coś (znajomego) pokazuje się przy starcie:
Sterowanie portem LPT VisualBasic6 i INNE
Czyli można wywnioskować, że program nie załadował/nie uzyskał dostępu do biblioteki. Pytanie - dlaczego?

Przy przyciśnięciu któregoś z przycisków, które ustawiają wartość na porcie pokazuje się taki komunikat:
Sterowanie portem LPT VisualBasic6 i INNE
Ten już jest srogi i nie mam pojęcia o co chodzi. Tak jakby dostępu do portu nie uzyskał?
O ile dobrze pamiętam to we wcześniejszych build'ach program działał dobrze, ale to była wersja 32-bitowa z biblioteką inpout32.
Back to top
   
Google

Google Adsense


Post# 02 Jun 2009 09:11   





Back to top
   
Akane
Poziom 18
Poziom 18


Joined: 02 Jun 2003
Posts: 544
Location: JO90, JN49

Post#90 02 Jun 2009 10:50   

Re: Sterowanie portem LPT VisualBasic6 i INNE


Aplikacja 32-bitowa nie jest w stanie załadować 64-bitowej biblioteki w trybie "executable", podobnie jak nie da się załadować programu (exe). Owszem, można to zrobić funkcją LoadLibraryEx, ale wtedy załadowany moduł nie jest "uruchamialny".

Drugi błąd pojawia się w chwili wywołania funkcji InPort lub OutPort. Skoro LoabLibrary nawaliło, to obie te "funkcje" mają adres NULL, a skok pod ten adres powoduje właśnie taki błąd.
Access violation at address xx... kod pod adresem xx naruszył ochronę pamięci...
Back to top
   
Post new topic  This topic is locked      Main Page -> Forum Index -> Programming Generally -> Sterowanie portem LPT VisualBasic6 i INNE
Page 3 of 4 Go to page Previous  1, 2, 3, 4  Next
Similar topics
[C++] Sterowanie portem LPT pod Windows 98 (14)
[Visual Basic] Sterowanie portem LPT. (1)
[c++] sterowanie portem lpt w windows 7 (7)
[Delphi] Sterowanie portem LPT. (5)
[C++][Delphi] Sterowanie portem LPT. (22)
Dwustronne sterowanie portem LPT. (5)
[PHP] Sterowanie portem LPT. (5)
c++ sterowanie portem lpt (1)
[Free Pascal] Sterowanie portem LPT. (4)
[Visual Basic] Sterowanie portem LPT. (1)

Page generation time: 0.113 seconds


FAQ || Administrator || Moderators || Widgets and banners || Contact
elektroda.pl topic RSS feed