программа доходит до строки
| Код | sysread(HANDLE, $Buffer, 2048);
|
и зависает в ожидании ответа. Симулятор устройства обратно пакет отправляет.
По TCP это выглядит так:
| Код | #/usr/bin/perl
use strict;
use Socket;
my $IPAddr = inet_aton('localhost'); socket SH, AF_INET, SOCK_STREAM, 0; connect SH, sockaddr_in(6000, $IPAddr) || die $!;
#код команды модбас = 1 #my $foo = pack("C12", 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x01, 0x01, 0x00, 0x63, 0x00, 0x04);
#код команды модбас = 3 my $foo = pack("C12", 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x63, 0x00, 0x03);
send(SH, $foo, 0) || die $!;
my $Buffer; recv(SH, $Buffer, 1024, 0) || die $!;
print "$Buffer\n";
print unpack("C15", $Buffer), "\n";
shutdown SH, 2;
|
и результат - | Код | >test.pl ☻ ☺♥♠ 020009136000000
|
Вот нужно еще и по ком-порту |