Schrift
[thread]700[/thread]

Serielle/Parallele Schnittstelle unter Windows XP (Seite 3)

Leser: 2


<< |< 1 2 3 >| >> 27 Einträge, 3 Seiten
Dubu
 2006-03-31 01:02
#7221 #7221
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
[quote=Wulli,30.03.2006, 17:47]Hallo!

So funktioniert es:
Bit setzen:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
#! C:\Perl\bin\perl

use Device::ParallelPort::drv::win32;

$port="lpt1";

my $port = Device::ParallelPort::drv::win32->new("lpt1");

$port->set_bit(1,1); #TX ein

$port->set_bit(0,1); #Key

[...]
[/quote]
Hier hast du das auch schon gemacht.
Warum das $port="lpt1"? Es hat gar keinen Sinn, weil du ja direkt danach eine neue, lexikalische Variable $port anlegst und das globale $port nie mehr nutzt.*


* Die globale Variable [tt]$port müsste nach der Deklaration des lexikalischen [font=courier]$port[/tt] ohnehin mit $::port oder $main::port angesprochen werden.[/font]
Wulli
 2006-03-31 09:19
#7222 #7222
User since
2006-03-27
13 Artikel
BenutzerIn
[default_avatar]
@ Dubu:

Guten Morgen!

Vielen Dank für deine Antwort und die Erklärungen. Es ist gut möglich, dass in meinen Listings totaler Unsinn steht, ich bin zu Perl wie die sprichwörtliche Jungfrau zum Kind gekommen. Da ich auch zuvor nie etwas mit Programmiersprachen zu tun hatte, fehlt mir natürlich das Basiswissen.
Im Grunde ist meine geplante Anwendung ganz simpel:
Ich möchte über eine Internetseite zu Steuerungszwecken mit Buttons die Pins DTR und CTS setzen und wieder löschen. Das gleiche mit der par. Schnittstelle (D0-D7). Eine Rohfassung des von mir verwendeten Listing fand ich im Internet, allerding greift das nicht so direkt auf die Hardware zu, sondern sendet nur Daten über die ser. Schnittstelle.
Ich werde, wenn ich wieder zuhause bin, die betreffende Zeile wieder hinauslöschen.
Aber um die ioctl.ph-Lösung (für com1 u. 2) werde ich trotz allem vermutlich nicht hinwegkommen, oder?

Im Grunde bin ich soweit ganz zufrieden mit meinen Fortschritten, die ich vor allem durch die Hilfe in diesem Forum erzielt habe. Nochmals Dank an alle Beteiligten!

mfg

Wulli
Wulli
 2006-03-31 22:53
#7223 #7223
User since
2006-03-27
13 Artikel
BenutzerIn
[default_avatar]
Hallo!

Soooo, eine ioctl.ph hab' ich mittlerweile auch schon, erstellt mit h2ph. Aber das Problemchen mit RTS/DTR setzen hab' ich immer noch. Ich komme einfach nicht dahinter.
Habt ihr vielleicht einen Tip für mich?

mfg

Wulli
nepos
 2006-04-03 11:13
#7224 #7224
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
com1,com2,lpt und co sind glaub ich unter Windows sogar gueltige Dateinamen...
Zumindest wars zu DOS-Zeiten so.
Gast Gast
 2008-05-17 17:03
#109843 #109843
Hallo!
Hab jetzt auch bez mit Microcontrollern angefangen und wollte diese mit Perl kommunizieren lassen.
Hab mir dazu das Serialport 0.19 runtergeladen und versucht zu installieren.
Habs dann versucht so zu installieren:
perl Makefile.PL
perl test.pl
perl install.pl
Allerdings bekomm ich das Perlscript nicht zum laufen, weil der anscheinend ein Problem mit der Bibliothek hat.
Das test.pl Programm bricht schon mit "Failed 7/7, 0.00% okay, 1749 subtests fails" ab.
Hab da die ganze Zeit Compilation faild, can't locate Win32/API.pm,...
Was ist da schief gelaufen?
Die Dateien wurden ja schon richtig kopiert, sie sind im Perlordner vorhanden..
Liegt das Problem an Windows Vista oder was kann das sein?
renee
 2008-05-18 11:50
#109858 #109858
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Kopiert??? Wiki:So installiert man Module
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Gast Gast
 2008-05-18 14:28
#109867 #109867
Ja danke. CommPort und SerialPort waren i.O., der Fehler lag am Win32::API.
habs dann mit ppm nochmal installiert.
Nun scheint das Script soweit zu funktionieren. Allerdings bekomm ich keine Daten angezeigt?!
Hab hier mal das Testprogramm. Die Configurationen mit Baud,.. stimmen soweit, nur werd ich nich ganz schlau draus, wie die Daten da jetzt rausgelesen werden?
Wie gesagt, ist nur ein Testscript, also nich hauen

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#!/usr/bin/perl -w
use strict;
use Win32::SerialPort;

my $serial = Win32::SerialPort->new('COM4' || die "Fehler!");

my $baud = $serial->baudrate;
my $parity = $serial->parity;
my $data = $serial->databits;
my $stop = $serial->stopbits;
my $hshake = $serial->handshake;

print "B = $baud, D = $data, S = $stop, P = $parity, H = $hshake\n";

$serial->baudrate(9600);
$serial->parity('none');
$serial->databits(8);
$serial->stopbits(1);
$serial->handshake("none");

#$serial->read_interval(100); # Zeit Zwischen einzelnen Zeichen, bei Überschreitung Abbruch
#$serial->read_const_time(10000); # Maximale Gesamtzeit zum Einlesen von Zeichen, dann Abbruch

# Send request
#$serial->write("n");
# Wait one second
#select(undef, undef, undef, 1);

# Read response
my($count, $datas) = $serial->read(100); # Entweder 100 Zeichen einlesen, oder Zeitaus
print "-> $datas";
undef $serial;
<< |< 1 2 3 >| >> 27 Einträge, 3 Seiten



View all threads created 2006-03-26 23:53.