Пример #1
0
function dmx_connect()
{
    global $debug, $dmx, $read_buffer;
    $r = trim(`ls -1 /dev/serial/by-id 2>/dev/null |grep "DMX"`);
    if ($r == '') {
        logformat("No USB DMX Interface appears to be connected!\n");
        exit(1);
    }
    $t = explode("-", $r);
    if (isset($t[1])) {
        logformat(sprintf("Found a %s\n", $t[1]));
    }
    $interface = "/dev/serial/by-id/" . $r;
    `stty -F {$interface} 230400 raw -echo`;
    if ($dmx = fopen($interface, 'w+')) {
        stream_set_blocking($dmx, 0);
        stream_set_read_buffer($dmx, 2048);
        $data = '';
        dmx_set_levels($data);
        dmx_set_dmx_receive_mode(SEND_ON_CHANGE_ONLY);
        sleep(1);
        while ($b = fread($dmx, 2048)) {
        }
        //empty the buffer
        $data = "Hello World!";
        dmx_set_parameters(27, 4, 40, $data);
        if (!($c = dmx_request_parameters($read_buffer))) {
            dmx_close();
            return 0;
        }
        return $c;
    }
    return 0;
}
Пример #2
0
$argv = $_SERVER["argv"];
//$argv is an array
if ($argc == 0) {
    error(usage());
}
$args = parse_args($argc, $argv);
if (isset($args['d'])) {
    $debug = $args['d'];
} elseif (isset($args['debug'])) {
    $debug = $args['debug'];
} else {
    $debug = 0;
}
exec('stty -F /dev/ttyUSB0 115200 raw -echo');
if ($dmx = fopen('/dev/ttyUSB0', 'w+')) {
    dmx_set_levels('');
    $d1 = str_pad('', 128, chr(0));
    $d2 = str_pad('', 128, chr(0));
    dmx_set_levels_U1($d1);
    dmx_set_levels_U2($d2);
    $t = microtime(true);
    for ($i = 0; $i <= 255; $i++) {
        $d1 = str_pad('', 128, chr($i));
        $d2 = str_pad('', 128, chr(255 - $i));
        dmx_set_levels_U1($d1);
        dmx_set_levels_U2($d2);
        if ($must_exit) {
            break;
        }
    }
    fclose($dmx);
Пример #3
0
}
$f = 0;
if ($sn = dmx_request_serial_number()) {
    printf("Found DMX Interface with Serial Number: %s\n", $sn);
    if ($fw = dmx_request_parameters()) {
        printf("Firmware Version: %s\n", $fw['FW_VER']);
        printf("DMX Output Break Time: %s x 10.67 = %.02f us\n", $fw['DMX_BR_TIME'], $fw['DMX_BR_TIME'] * 10.67);
        printf("DMX Mark After Break Time: %s x 10.67 = %.02f us\n", $fw['DMX_MABR_TIME'], $fw['DMX_MABR_TIME'] * 10.67);
        printf("DMX Output Rate: %s packets/sec\n", $fw['DMX_OUTPUT_RATE']);
    }
    $f = 1;
}
if (!$f) {
    die("Could not find a DMX interface!\n");
}
$d = '';
dmx_set_levels($d);
$d1 = str_pad('', 512, chr(0));
$d2 = str_pad('', 512, chr(0));
dmx_set_levels_U1($d1);
dmx_set_levels_U2($d2);
for ($i = 0; $i <= 255; $i++) {
    $d1 = str_pad('', 512, chr($i));
    $d2 = str_pad('', 512, chr(255 - $i));
    dmx_set_levels_U1($d1);
    dmx_set_levels_U2($d2);
    if ($must_exit) {
        break;
    }
}
$dmx->deviceClose();