![]() |
Re: Parallelport abfragen
Zitat:
Zitat:
|
Re: Parallelport abfragen
Hi
MC ist die richtige Wahl und muß unter Umständen gar nicht so aufwändig sein. Ich arbeite mit einem preiswerten Pollin Board, einem Steckpanel für schnelle Tests und an Software nehme ich PonyProg und AVR-Studio. Ich weiß, es gibt auch komfortablere Lösungen, aber für einen Einstieg ist der Weg gar nicht so schlecht. Hast du erst mal den Anfang geschafft, gibt's immer wieder neue Aufgaben zu lösen und so ein MC gibt bei minimalem Aufwand schon ein riesiges Anwendungsgebiet. Alles was du brauchst ist unter 100 € zu bekommen.... Die Lösung über den Parallelport kann ich nur empfehlen, wenn du einen alten "86 hast und direkt mit Assembler unter DOS auf die Schnittstelle zugreifen kannst. Steinzeittechnik halt, aber hier bekommst du schon einiges an Tempo hin. Speziell die Interrupt-Technik kann für schnelle Routinen benutzt werden, ohne die restlichen Programme platt zu machen. Aber wer macht das noch ? Also, es bleibt für die moderne Zeit der MC. Gruß oldmax |
Re: Parallelport abfragen
Zitat:
|
Re: Parallelport abfragen
Interrupt-Handler:
![]() |
Re: Parallelport abfragen
Mittag,
habe doch noch eine andere Lösung gefunden. Ist zwar sehr Prozessorlasstig, daher die Freuqenz aber nur kurz gemesen werden muss, ist das akzeptabel (zumindest für mich :wink:). Hier mal der gesamte Quelltext, benötigt wird die ![]()
Delphi-Quellcode:
Einzigster Haken ist, das die Freuqenz nur bis ca. 900 Hz. angezeigt wird, deswegen habe ich einen Freuqenzteiler (2:1) eingebaut. Die angezeigte Frequenz muss dann einfach nurnoch mal 2 genommen werden (ich weiß, ist zwar ungenau, aber meiner Meinung nach kommt es auf 1 Hertz meist sowieso nicht an).
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, mmsystem, AppEvnts, ShellApi, ExtCtrls, ComCtrls, StdCtrls; type TForm1 = class(TForm) ProgressBar1: TProgressBar; Timer1: TTimer; Label1: TLabel; procedure FormCreate(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure OnIdle(Sender: TObject; var Done: Boolean); procedure OnTimer; private { Private-Deklarationen } public { Public-Deklarationen } Zeit: int64; Counter: integer; //Variable zum Zählen der Timer durchläufe end; var Form1: TForm1; gelesen, schreiben: Integer; STyp: String[3] = 'LPT'; BasAdr: Integer = $378; ComHandle: THandle; before: boolean = true; implementation {$R *.dfm} procedure Out32(Addresse:Integer; Wert:byte);stdcall;export; external 'INPOUT32.DLL'; function Inp32(Addresse:Integer):Byte;stdcall;export; external 'INPOUT32.DLL'; procedure TForm1.OnIdle(Sender: TObject; var Done: Boolean); begin done:=false; OnTimer; end; procedure TForm1.FormCreate(Sender: TObject); begin Application.OnIdle := OnIdle; end; procedure TForm1.OnTimer; var adr: integer; begin adr:=Inp32(BasAdr+1);//Lesen if (adr = 254) and (before = true) then begin inc(counter);//Zähler um 1 erhöhen before := false; end; if adr = 126 then before := true; if timegettime-Zeit>1000 then //Jeweil nach einer Sekunde Frequenz ausgeben begin Label1.Caption := IntToStr(counter); //Freuqenz ausgeben zeit:= timegettime; //neue Start Zeit ermitteln Counter := 0; //und Zähler wieder auf 0 end; end; end. |
Re: Parallelport abfragen
Wäre eventuell eine Alternative?
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz