lib/Quancom.pm
changeset 7 9c3e112933ae
parent 4 6f1e9c4bee3c
child 8 c248fbd9b624
--- a/lib/Quancom.pm	Tue Dec 16 16:08:43 2008 +0100
+++ b/lib/Quancom.pm	Wed Dec 17 23:31:39 2008 +0100
@@ -2,9 +2,10 @@
 
 use strict;
 use warnings;
+use Carp;
 use IO::Socket::INET;
+
 use Quancom::Result;
-use Carp;
 
 our $VERSION = 0.1;
 
@@ -24,7 +25,7 @@
     );
 
     $self->{job} = 0;
-    $self->{ok} = undef;
+    $self->{ok}  = undef;
 
     return $self;
 }
@@ -57,27 +58,9 @@
     my $self = shift;
 
     local $/ = "\r";    # CR is the delimiter
-    my $r = $self->{socket}->getline;    # now it's a line
-    chomp($r);                           # we do not need the delimiter
-
-    $self->{last_result} = new Quancom::Result;
-
-    # decode the status
-    if (($self->{last_result}{error_code}) = $r =~ /^E(.)/) {
-        $self->{last_result}{ok} = 0;
-    }
-    elsif (my ($jobid, $data, $csum) = $r =~ /^[DO](..)(.*)(..)$/) {
-        $self->{last_result}{ok} = 1;
-	$self->{last_result}{result} = defined $data ? $data : "";
-    }
-    else {
-        die "unknown response $r";
-    }
-
-    return $r;
+    $self->{last_result} = new Quancom::Result($self->{socket}->getline);
 }
 
-
 1;
 
 __END__
@@ -90,9 +73,11 @@
 
     use Quancom;
 
-    my $q = new Quancom 172.16.0.22;
-    my $r = $q->cmd("xxxxxx") 
-	or die $r->error_message;
+    my $quancom = new Quancom 172.16.0.22;
+    my $result  = $q->cmd("xxxxxx");
+    if ($result->error) { die $result->error_message } 
+    else { print $result->data }
+
 
 =head1 METHODS
 
@@ -103,19 +88,33 @@
 This method returns a new Quancom object if the connection was
 successfully established.
 
-=item B<send>( I<string> )
+=item B<cmd>( I<string> )
 
 Send a Quancom string to the device. The string here should be
 B<without> the leading STX and Jobid as well without the trailing CR.
+It returns a L<Quancom::Result> object.
 
-It returns TRUE on success, FALSE otherwise.
+The only tested I<string> is currently "WB0101FF", which should set
+all bits on the first relais. Some other (untested) string for setting
+just the lowest bit on the first relais should be "WB010001".
 
 =item B<last_result>( )
 
 This returns an object containing the last result.
+See L<Quancom::Result> for more information.
 
 =back
 
+=head1 MORE EXAMPLES
+
+    use Quancom;
+    my $quancom = new Quancom(172.20.20.1);
+    die "Sorry" if $quancom->cmd("xxxx")->error;
+
+=head1 SEE ALSO
+
+L<Quancom::Result>
+
 =head1 AUTHOR
 
     Maik Schueller