#!/usr/bin/perl # USB Dongle PX-1673-675 On|Off my $comport = "COM4"; ###################################################################### use strict; use warnings; use base qw(Win32::SerialPort); my $main = main->new($comport); ###################################################################### $main->baudrate(9600); $main->parity("none"); $main->databits(8); $main->stopbits(1); if(@ARGV){ my $code = $main->can($ARGV[0]) || die "Use On|Off as Argument!\n"; $main->$code; } sub On{ my $self = shift; my $cmd = 0xF0; my $chk = 255 - (0x1A + 0x85 + $cmd) % 256; my $payload = pack "C8", 0x1A,0x85,$cmd,$chk,0x20,0x0A,0x00,0x18; $self->load($payload) } sub Off{ my $self = shift; my $cmd = 0xE0; my $chk = 255 - (0x1A + 0x85 + $cmd) % 256; my $payload = pack "C8", 0x1A,0x85,$cmd,$chk,0x20,0x0A,0x00,0x18; $self->load($payload) } sub load{ my $self = shift; my $payload = shift; if($ARGV[1]){ print join " ", map{sprintf("%02X", $_)}unpack "C8", $payload; } else{ $self->write($payload) or die "Can't write: $^E"; } }