| Author |
Message
|
adi Poziom 7

Joined: 03 Aug 2006 Posts: 23 Location: wrocław
|
#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

Joined: 17 Jul 2004 Posts: 702
|
#62
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

|
#
12 Nov 2007 18:23 |
|
|
|
|
|
| Back to top |
|
 |
adi Poziom 7

Joined: 03 Aug 2006 Posts: 23 Location: wrocław
|
#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

Joined: 02 Dec 2007 Posts: 3 Location: krakow
|
#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

Joined: 30 Mar 2007 Posts: 561 Location: Dzierżoniów
|
#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

Joined: 17 Jul 2004 Posts: 702
|
#66
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

Joined: 28 Nov 2006 Posts: 201 Location: Jastrzębie Zdrój
|
#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

Joined: 15 May 2005 Posts: 4528 Location: Żory (kiedyś Opole)
|
#68
28 Aug 2008 19:14 Re: Sterowanie portem LPT VisualBasic6 i INNE |
|
|
|
Zastosować tranzystor i zasilanie.
|
|
| Back to top |
|
 |
Mariojas Poziom 15

Joined: 28 Nov 2006 Posts: 201 Location: Jastrzębie Zdrój
|
#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

Joined: 15 May 2005 Posts: 4528 Location: Żory (kiedyś Opole)
|
#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

Joined: 02 Jun 2003 Posts: 544 Location: JO90, JN49
|
#71
07 Nov 2008 11:28 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.
| Description: |
|
 Download |
| Filename: |
iopl.zip |
| Contents: |
|
| Filesize: |
8.46 KB |
| Punkty: |
0.00 |
|
|
| Back to top |
|
 |
miciek79 Poziom 9

Joined: 14 Mar 2005 Posts: 35 Location: wola
|
#72
11 Nov 2008 21:43 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

Joined: 17 Jul 2004 Posts: 702
|
#73
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

|
#
12 Nov 2008 20:49 |
|
|
|
|
|
| Back to top |
|
 |
shadoweyes Poziom 16

Joined: 10 May 2003 Posts: 335 Location: POLKOWICE
|
#74
15 Nov 2008 21:54 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

Joined: 10 May 2003 Posts: 335 Location: POLKOWICE
|
|
| Back to top |
|
 |
czesiu Poziom 20

Joined: 07 May 2003 Posts: 1043 Location: Bełchatów
|
#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

Joined: 16 May 2008 Posts: 1808 Location: Wrocław
|
#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

Joined: 18 Jan 2007 Posts: 51
|
#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

Joined: 10 May 2003 Posts: 335 Location: POLKOWICE
|
|
| Back to top |
|
 |
kubusek32 Poziom 9

Joined: 29 Aug 2007 Posts: 34 Location: Wrocław
|
#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

Joined: 15 May 2005 Posts: 4528 Location: Żory (kiedyś Opole)
|
#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

Joined: 29 Aug 2007 Posts: 34 Location: Wrocław
|
#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

Joined: 15 May 2005 Posts: 4528 Location: Żory (kiedyś Opole)
|
#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

Joined: 29 Aug 2007 Posts: 34 Location: Wrocław
|
#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

Joined: 15 May 2005 Posts: 4528 Location: Żory (kiedyś Opole)
|
#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

Joined: 10 May 2003 Posts: 335 Location: POLKOWICE
|
#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

Joined: 17 Jul 2004 Posts: 702
|
#87
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

Joined: 28 Nov 2006 Posts: 201 Location: Jastrzębie Zdrój
|
#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

Joined: 28 Nov 2006 Posts: 201 Location: Jastrzębie Zdrój
|
#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:
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:
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

|
#
02 Jun 2009 09:11 |
|
|
|
|
|
| Back to top |
|
 |
Akane Poziom 18

Joined: 02 Jun 2003 Posts: 544 Location: JO90, JN49
|
#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 |
|
 |