Schrift
[thread]8408[/thread]

Zugriff auf Com Port Schnittstelle

Leser: 1


<< >> 6 Einträge, 1 Seite
Gast Gast
 2006-10-12 13:13
#70702 #70702
Hallo,

ich muss auf eine Com Port Schnittstelle RS-232 zugreifen.
Ich habe da ein kleines Script geschrieben aber ich weiß nicht wo der fehler ist. Könnt ihr mir vielleicht helfen.

Hier das Code:
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
 #!/usr/bin/perl -w

use strict;
require 5.003;
use Win32API::CommPort;
use Win32::SerialPort qw( :STAT0.19);
use Win32;

my $PortName = 'COM1';
my $pass;
my $return;
my $quiet = 1;
my $configFile= 'ER400TRS.cfg';


my $PortObj = new Win32::SerialPort($PortName,$quiet) || die "Can't open $PortName: $^E\n";

$PortObj->user_msg('ON');
$PortObj->baudrate (9600) || die "fail setting baudrate";
$PortObj->parity ("none") || die "fail setting parity";
$PortObj->databits (8) || die "fail setting databits";
$PortObj->stopbits (1) || die "fail setting stopbits";
$PortObj->handshake ("none") || die "fail setting handshake";
$PortObj>dtr_active (1) || die "fail setting dtr_active";

my @ar=$PortObj->buffers(128,128);

$PortObj->write_settings || die "no settings\n";
$PortObj->save($configFile) || die "no settings\n";

$PortObj->Close ||die "failed to close";
undef $PortObj;

$PortObj = tie( *COMFH,'Win32::SerialPort',$configFile)
|| die "can tie using";

my $BlockingFlags;
my ( $InBytes, $OutBytes, $LatchErrorFlags );
( $BlockingFlags, $InBytes, $OutBytes, $LatchErrorFlags ) = $PortObj->status
|| warn "could not get port status\n";

if ( $BlockingFlags ) { warn "Port is blocked"; }
if ( $BlockingFlags & BM_fCtsHold ) { warn "Waiting for CTS (clear to send)"; }
if ( $LatchErrorFlags & CE_FRAME ) { warn "Framing Error"; }

my ( $count_out, $output_string );
$output_string = "Hallo ";

while(1){
$ca++;
($BlockingFlags,$InBytes,$OutBytes,$ErrorFlags) = $PortObj->status;
die "lost port\n" unless defined $ErrorFlags;
unless($InBytes){
last if($ca > 25);
select(undef,undef,undef,0.01);
next;
}
if($string_in = $PortObj->read($InBytes)){
last;
}
}

$PortObj->close or die "failed to close";
undef $PortObj;


Und Hier die Feher-Meldung (Mit der Fehler-Meldung konnte ich nichts anfangen)
Quote
Can't locate Win32API/CommPort.pm in @INC (@INC contains: /usr/lib/perl5/5.8.6/i586-linux-thread-multi /usr/lib/perl5/5.8.6 /usr/lib/perl5/site_perl/5.8.6/i586-linux-thread-multi /usr/lib/perl5/site_perl/5.8.6 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.6/i586-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.6 /usr/lib/perl5/vendor_perl .) at tcom1.pl line 6.
BEGIN failed--compilation aborted at tcom1.pl line 6.


Danke schon mal im Voraus
renee
 2006-10-12 13:17
#70703 #70703
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
@pq: Bitte, bitte, schicke einen Patch an die Perl-Maintainer...

@Gast86:

Du musst das Modul CPAN:Win32API::CommPort Wiki:installieren
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/
sid burn
 2006-10-12 13:35
#70704 #70704
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
Wenn ich mir dein @INC anschaue, dann sieht es eher so aus als das du unter Linux Programmierst, und nicht unter Windows.

Unter Linux sollte Win32::CommPort wohl gar nciht erst Funktionieren. Sicher das du Windows benutzt? ;)
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
renee
 2006-10-12 13:37
#70705 #70705
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Für Linux gibt es CPAN:Device::SerialPort
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/
pq
 2006-10-12 13:42
#70706 #70706
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=renee,12.10.2006, 11:17]@pq: Bitte, bitte, schicke einen Patch an die Perl-Maintainer...[/quote]
einen patch? wär schön, wenn ich den hätte =)

edit: hier ist jedenfalls der bugreport:
http://rt.perl.org/rt3/Ticket/Display.html?id=40516\n\n

<!--EDIT|pq|1160653460-->
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Ispartali86
 2006-10-12 17:01
#70707 #70707
User since
2006-10-12
27 Artikel
BenutzerIn
[default_avatar]
Danke für eure Hilfe

die fortsetzung -> ist hier
<< >> 6 Einträge, 1 Seite



View all threads created 2006-10-12 13:13.