Salve, chiedo umilmente un vs aiuto e tanta pazienza per risolvere un problema che mi affligge da circa 1 mese.. Purtroppo il linguaggio PERL non lo conosco.
Sono un radioamatore in possesso di un codice che un'altro radioamatore australiano mi ha fornito.Quest'ultimo, con questo codice, ha creato uno script con linguaggio PERL sotto il suo Linux. Dopo avermi fornito il codice, mi ha consigliato di installare, per il mio Windows, ACTIVE PERL per far girare lo script. Il problema è proprio questo, gli spiegai, come faccio a creare uno script con questo linguaggio? Non mi ha più risposto, forse chiedevo troppo, forse sarà deceduto! Ho installato ACTIVE PERL, ho copiato il codice su un file.txt e rinominato script.pl Lo stesso lo messo all'interno della cartella C:\Perl\bin\script.pl
Avviato il prompt, eseguo cmd e ottengo la finestra di errore come in foto. Sino ad ora ho operato bene? devo creare altri file per la creazione dello script?
Adesso vi spiego cosa deve fare questo script: Qualora ci riuscissi, devo far ricevere su una sola mappa geografica i dati che un'altro programma riceve sulla sua mappa. Esempio:
Programma 1 riceve dati per conto suo.
Programma 2 riceve dati per conto suo.
Script
Programma 1 riceve i dati per conto suo e anche i dati del programma 2, grazie appunto allo script. Infatti nelle descrizione del suo lavoro lui scrive::
ADS-B in UI-VIEW
I wrote a LINUX PERL script to connect to windows port 30003, which is the ADS-B stream from an SBS-1. I then turned it around and coded it for APRS format packets. I sent them to UI-VIEW local server, so I had cars boats and planes on screen.http://www.tech-software.net/sbs1_aprs.jpg.
Vi allego il codice sperando che qualcuno mi possa aiutare a configuare insieme il tutto.
#!/usr/bin/perl
use Net::Telnet;
# VK4TEC-5>APX184,TCPIP*:;ggg *070954z3039.81S/12250.89E4hhhh
my $hosta = "192.168.1.102";
my $ta = new Net::Telnet(Timeout => '500', port => '1448');
$ta->errmode('return');
$ta->Net::Telnet:pen($hosta);
sleep 2;
print $ta "user <callsign> pass <passcode> vers UI-View32 V1.92\n";
#my $hostb = "192.168.1.101";
my $tb = new Net::Telnet(Timeout=> '500', port => '30003');
$tb->errmode('return');
$tb->Net::Telnet:pen($hostb);
while (<$tb>)
{
if (m/^MSG,3,/)
{
@data = split(/,/);
print "ICAO: ".$data[4]." Lat: ".$data[14]." Lon: ".$data[15]."\n";
$date2=time()-36000;
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isd st) = localtime($date2);
if ($mday < 10) {
$day = "0".$mday;
} else {
$day = $mday;
}
$month = $mon + 1;
if ($month < 10) {
$month = "0".$month;
}
if ($hour < 10)
{
$hour = "0".$hour;
}
if ($min < 10)
{
$min = "0".$min;
}
$year+=1900;
$date1 = $day.$hour.$min;
$lat = $data[14];
$lon = $data[15];
if ($data[15] =~ m/-/)
{
$ew = 'W';
}
else
{
$ew = 'E';
}
$lat = abs($lat);
$lon = abs($lon);
$deg1 = int($lat);
$deg2 = int($lon);
@data1 = split(/\./,$lat);
@data2 = split(/\./,$lon);
$dec1 = $lat - $deg1;
$dec2 = $lon - $deg2;
my $min1 = $dec1 * 60;
my $min2 = $dec2 * 60;
@data1 = split(/\./,$min1);
@data2 = split(/\./,$min2);
$min3 = sprintf("%02d", $min1);
$min4 = sprintf("%02d", $min2);
$min5 = substr($data1[1],0,2);
$min6 = substr($data2[1],0,2);
$lat = $deg1.$min3.".".$min5;
$lon = $deg2.$min4.".".$min6;
print $ta "<callsign>>APU25C,TCPIP:;".$data[4]." *".$date1."z".$lat."N/00".$lon.$ew."^ALT: ".$data[11]." ft ADS-B Position \n";
}
}