Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]700[/thread]

Serielle/Parallele Schnittstelle unter Windows XP (Seite 2)

Leser: 2


<< |< 1 2 3 >| >> 27 Einträge, 3 Seiten
renee
 2006-03-29 09:39
#7211 #7211
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Beim ersten Beispiel ist ja gar nicht klar, was $com1 und $ser1 ist. Das wäre Dir mit Wiki:use strict und use warnings aufgefallen.

Beim zweiten Beispiel ist mir nicht ganz klar, was lpt1.pl sein soll.

Kannst Du beim nächsten Mal bitte die [code]-Tags verwenden??
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/
renee
 2006-03-29 09:48
#7212 #7212
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Wulli
 2006-03-29 13:09
#7213 #7213
User since
2006-03-27
13 Artikel
BenutzerIn
[default_avatar]
Guten Morgen!

Danke für die Links, ich werde das, wenn ich wieder zuhause bin (abends) sofort versuchen.

Bis zu new(lpt1.pl) kam ich ja garnicht, denn ich bekam schon vorher die Fehlermeldung. Was gehört deiner Meinung nach in die Klammer? Die Bezeichnung für die Schnittstelle?
Ich hab' dann gestern auch schon um 23 Uhr Schluss gemacht, da ich heute früh rausmusste.

mfg

Wulli
renee
 2006-03-29 13:29
#7214 #7214
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Steht bei dem zweiten etwas L <Device::ParallelPort::drv::win32> in der ersten Zeile?? Wo kommt das her? Das ist kein gültiger Perl-Befehl. Da muss eher ein use Device::SerialPort hin.

Dem new muss man wohl den Namen der Schnittstelle übergeben, also ein 'COM1' oder ein 'LPT1'...
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/
Dubu
 2006-03-30 00:08
#7215 #7215
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Ein Darstellungsfehler im pod2html auf der CPAN-Seite (bzw. kaputter POD-Code). L<...> markiert in POD einen Link. Gemeint war an der Stelle, dass ein Devicetreiber geladen werden muss. Nicht, dass die Manpage da sonderlich klar wäre, aber wenn ich den Quellcode richtig interpretiere, müssste es statt
Code: (dl )
1
2
L <Device::ParallelPort::drv::win32>
my $port = Device::ParallelPort->new(lpt1.pl);

wohl eher so heißen:
Code: (dl )
1
2
use Device::ParallelPort;
my $port = Device::ParallelPort->new("win32:lpt1");

oder so ähnlich.

Der eigentliche Devicetreiber im Modul Device::ParallelPort::drv::win32 ist dabei nicht im Package Device-ParallelPort, sondern wohl in einem eigenen (das ich aber auf CPAN nicht finde, im Gegensatz zu den Linux-Treibern).
Wulli
 2006-03-30 03:32
#7216 #7216
User since
2006-03-27
13 Artikel
BenutzerIn
[default_avatar]
Hallo!

Ich hab' jetzt in meinem Script die Konfiguration von COM1 hinbekommen:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#com1 öffnen
use Win32::SerialPort;

my $ob = Win32::SerialPort->new ('COM1') || die;

$ob->baudrate(57600);
$ob->parity("none");
$ob->databits(8);
$ob->stopbits(1);

my $baud = $ob->baudrate;
my $parity = $ob->parity;
my $data = $ob->databits;
my $stop = $ob->stopbits;

$ob->write_settings;

undef $ob;

Das ersetzt mir die Eingabe mode com1: baud=..... usw. in der DOS-Eingabeaufforderung. Das wollte ich auch so haben. Soweit alles in Ordnung.
Jetzt bin ich gerade am experimentieren, wie ich dtr oder rts auf high setzen könnte. Bis jetzt hab' ich aber keine Erfolge erzielen können. Hat jemand einen Tip für mich, bitte?

ioctl($handle,$on ? $TIOCMBIS : $TIOCMBIC, $TIOCM_DTR);?

ich habe aber zuwenig Erfahrung , um das richtig umsetzen zu können...

mfg

Wulli\n\n

<!--EDIT|renee|1143706984-->
Wulli
 2006-03-30 19:18
#7217 #7217
User since
2006-03-27
13 Artikel
BenutzerIn
[default_avatar]
Hallo!

Würde mir bitte jemand die Datei "ioctl.ph" zukommen lassen?

Ich finde sie nirgends, auch nicht im Internet.

Danke!

Wulli

la9@utanet.at
Wulli
 2006-03-30 19:47
#7218 #7218
User since
2006-03-27
13 Artikel
BenutzerIn
[default_avatar]
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


Bit löschen:

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(0,0);

$port->set_bit(1,0);

mfg

Wulli


//Mod: Code-Tags benutzen bitte!\n\n

<!--EDIT|GwenDragon|1143735545-->
Wulli
 2006-03-30 21:43
#7219 #7219
User since
2006-03-27
13 Artikel
BenutzerIn
[default_avatar]
Code: (dl )
1
2
3
4
5
6
7
8
9
#! c:\perl\bin\perl
#com1 öffnen
use Win32::SerialPort;
$port="com2";
my $port = Win32::SerialPort->new ("COM2");
open("com2");
TIOCM_RTS;
TIOCM_DTR;
(com2, TIOCMBIS, NULL);


Run/Debug zeigt zwar keinen Fehler, aber funktionieren tut's auch nicht...
Dubu
 2006-03-31 00:51
#7220 #7220
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
[quote=Wulli,30.03.2006, 19:43]
Run/Debug zeigt zwar keinen Fehler, aber funktionieren tut's auch nicht...[/quote]
Entschuldige, aber das ist doch auch kein sinnvoller Perlcode. Wo hast du das her?

Code: (dl )
#! c:\perl\bin\perl

Hier fehlen
use strict;
use warnings;

Das hätte dir beim Debuggen geholfen.

Code: (dl )
1
2
3
#com1 öffnen
use Win32::SerialPort;
$port="com2";

Hier belegst du eine nicht deklarierte Variable $port mit dem Text "com2".

Code: (dl )
my $port = Win32::SerialPort->new ("COM2");

Hier deklarierst du die eben benutzte Variable neu und weist ihr ein neu erzeugtes Win32::SerialPort-Objekt zu.

Code: (dl )
open("com2");

Hier öffnest du eine Datei(!) namens "com2" auf einem Filehandle "com2". (Diese Variante, dass die Datei den gleichen Namen wie das Filehandle hat, ist recht ungewöhnlich, aber gültiges Perl.) Da du keine Fehler abfängst, fällt dir nicht auf, dass das wahrscheinlich fehlschlägt, weil es im aktuellen Verzeichnis keine Datei mit diesem Namen gibt.

Code: (dl )
1
2
TIOCM_RTS;
TIOCM_DTR;

Zwei Konstanten im void-Kontext?

Code: (dl )
(com2, TIOCMBIS, NULL);

Eine Liste mit drei Barewords im void-Kontext, wenn ich das richtig sehe. Bewirkt höchstwahrscheinlich gar nichts.

Sorry, aber da kann ich nicht mal entfernt draus erkennen, was gemeint ist.
<< |< 1 2 3 >| >> 27 Einträge, 3 Seiten



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