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:
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;