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; }
$debug = $args['d']; } elseif (isset($args['debug'])) { $debug = $args['debug']; } else { $debug = 0; } $dmx = new phpSerial(); $dmx->deviceSet(DMX_DEV); $dmx->confBaudRate(SERIAL_BAUD); if (!$dmx->deviceOpen()) { die("Could not open DMX Interface on " . DMX_DEV . "\n"); } $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);