Thread [Win32::SerialPort] Kann nicht lesen (1 answers)
Opened by Kean at 2025-07-01 08:40

Kean
 2025-07-01 08:40
#197092 #197092
User since
2004-08-18
464 Artikel
BenutzerIn

user image
Hallo zusammen,

ich habe einen HDMI Matrix Switch mit einem seriellen Anschluss und habe dafür mit Hilfe des Moduls Win32::SerialPort ein kleines Tool geschrieben mit welchem ich die angeschlossenen Bildschirme umschalten kann.

Das ganze funktioniert mit dem write Befehl auch schon zuverlässig. Jetzt würde ich aber auch gerne den aktuellen Status auslesen und das gelingt mir leider nicht.

Vielleicht hat jemand eine Idee wo mein Logikfehler liegt:

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
use strict;
use warnings;
use Win32::SerialPort;

$|=1;

my $appfolder;
my $resfolder;

my $port;
my $serDev;

if ($ARGV[0])
{
$serDev = readini("Connection", "COM", $appfolder."config.ini");
}
else
{
$serDev = 'COM1';
}

my $serSpeed = 9600;
my $serDB = 8;
my $serPA = 'none';
my $serSB = 1;

print "Start Connection\n";

$port = new Win32::SerialPort($serDev);
$port->databits($serDB);
$port->baudrate($serSpeed);
$port->parity($serPA);
$port->stopbits($serSB);
$port->write_settings || undef $port;

print "Send Request\n";

$port->write("LINK:O1I1;END");
#$port->write("MT00RD0000NT");


print "Waiting for reply ";

while (1) {
print ".";
my $char = $port->lookfor();
if ($char) {
print "->".$char."<-";
}
$port->lookclear; # needed to prevent blocking
sleep (1);
}

print "\nSend close\n";

$port->close();

print "Finished, please press Enter for exit";

<STDIN>;

exit;

View full thread [Win32::SerialPort] Kann nicht lesen