> 8; $vlo = $velocity & 0xff; $rhi = $radius >> 8; $rlo = $radius & 0xff; print "vhi:$vhi, vlo:$vlo, rhi:$rhi, rlo:$rlo\n"; roomba_send_cmd( pack("C*", 137, $vhi,$vlo, $rhi,$rlo) ); } function roomba_init() { roomba_send_cmd( pack("C", 128) ); // Start usleep(100000); # wait 100 ms roomba_send_cmd( pack("C", 130) ); // CONTROL usleep(100000); # wait 100 ms } function roomba_send_cmd( $cmd ) { global $roomba_host, $roomba_port; $fp = fsockopen( $roomba_host, $roomba_port, $errno, $errstr, 30); if (!$fp) { // couldn't connect echo "$errstr ($errno)\n"; } else { fwrite( $fp, $cmd ); fclose($fp); } } function roomba_read_sensors() { global $roomba_host, $roomba_port, $roomba_sensors; $fp = fsockopen( $roomba_host, $roomba_port, $errno, $errstr, 30); if (!$fp) { // couldn't connect echo "$errstr ($errno)\n"; } else { fwrite( $fp, pack("C", 142 ) ); // SENSORS fflush( $fp ); $raw = fread( $fp, 26 ); fclose($fp); $sensors = unpack("C*", $raw); return $sensors; } } ?>