示例#1
0
function dmx_request_parameters(&$read_buffer)
{
    $data = '';
    dmx_write(CMD_GET_PARAMETERS, 0, $data);
    usleep(5000);
    while (dmx_read($read_buffer)) {
    }
    if ($x = dmx_get_next_packet($read_buffer)) {
        if (substr($x, 0, 2) == chr(DMX_START_BYTE) . chr(RX_GET_PARAMETERS)) {
            $config['FW_VER'] = sprintf("V%d.%d", ord(substr($x, 5, 1)), ord(substr($x, 4, 1)));
            $config['DMX_BR_TIME'] = ord(substr($x, 6, 1));
            $config['DMX_MABR_TIME'] = ord(substr($x, 7, 1));
            $config['DMX_OUTPUT_RATE'] = ord(substr($x, 8, 1));
            $config['CONFIG_DATA'] = substr($x, 9, -2);
            return $config;
        }
    }
    return 0;
}
示例#2
0
logformat(sprintf("Firmware Version: %s\n", $fw['FW_VER']));
logformat(sprintf("DMX Output Break Time: %s x 10.67 = %.02f us\n", $fw['DMX_BR_TIME'], $fw['DMX_BR_TIME'] * 10.67));
logformat(sprintf("DMX Mark After Break Time: %s x 10.67 = %.02f us\n", $fw['DMX_MABR_TIME'], $fw['DMX_MABR_TIME'] * 10.67));
logformat(sprintf("DMX Output Rate: %s packets/sec\n", $fw['DMX_OUTPUT_RATE']));
logformat(sprintf("DMX Config Data: %s\n", $fw['CONFIG_DATA']));
$dmx_input = bcd_to_chr($dmx_inputs);
$dmx_output1 = bcd_to_chr($dmx_outputs1);
$dmx_output2 = bcd_to_chr($dmx_outputs2);
dmx_set_levels_U1($dmx_output1);
dmx_set_levels_U2($dmx_output2);
dmx_set_dmx_receive_mode(SEND_ON_CHANGE_ONLY);
while (1) {
    if ($must_exit) {
        break;
    }
    if (dmx_read($read_buffer)) {
        //got some input from the interface
        while ($packet = dmx_get_next_packet($read_buffer)) {
            $di = '';
            if ($p = dmx_get_dmx_change_data($packet, $dmx_input)) {
                if ($debug & DMX_DEBUG_ID) {
                    logformat(sprintf("DMX Received: %s\n", hex_display($dmx_input)));
                }
                $di = chr_to_bcd($dmx_input);
                dmx_write_shared_memory($shm_id, $di, 0, 0);
                //send xap event(s)
                for ($i = 0; $i < 128; $i++) {
                    if (substr($di, $i * 2, 2) != substr($dmx_inputs, $i * 2, 2)) {
                        send_dmx_input_level_event_message($i, $di);
                    }
                }