Listing 6.
cm11_no_hardware.pl
Home Automation: The X10 Nitty-Gritty
The Perl Journal, Spring 2000
 
#!/usr/bin/perl -w
# FILE: cm11_no_hardware.pl
# USAGE: perl cm11_no_hardware.pl;

require 'SerialStub.pl'; # emulate port hardware talking to CM11

package main;

use ControlX10::CM11;
use strict;

my $serial_object = SerialStub->new (); 
# creates and initializes object

my $no_block = 1;   # return immediately unless data waiting

read_cm11($serial_object, $no_block);

# a bit toggle like that in the earlier CM17 examples
print "-------\n\n";
print "Sending A1 ON\n";
send_cm11($serial_object, 'A1');
send_cm11($serial_object, 'AJ');
print "Sending A1 OFF\n";
send_cm11($serial_object, 'A1');
send_cm11($serial_object, 'AK');

# emulate a "data waiting to be read" message from the CM11
print "-------\n\n";
my $incoming = chr(0x5a);
$serial_object->fakeinput($incoming);

if (read_cm11($serial_object, $no_block)) {
    my $datain = receive_cm11($serial_object);
    print "Received $datain\n" if (defined $datain);
}

print "Sending A2 OFF\n";
send_cm11($serial_object, 'A2');
send_cm11($serial_object, 'AK');