<?php if ($argc != 2) { print 'Usage: php ' . basename(__FILE__) . ' port_string' . PHP_EOL . ' port_string 接続するポート' . PHP_EOL; exit(1); } use PHPMake\SerialPort; $status = 0; $portString = $argv[1]; $port = new SerialPort(); $data = null; try { $port->open($portString); $port->setBaudRate(SerialPort::BAUD_RATE_9600)->setFlowControl(SerialPort::FLOW_CONTROL_NONE)->setCanonical(false)->setVTime(0)->setVMin(1); while ($data = $port->read(256)) { print 'data received.' . PHP_EOL; if ($data == '!!!') { print 'exit.' . PHP_EOL; break; } else { var_dump($data); print PHP_EOL; $port->write($data); } } } catch (Exception $e) { print $e->getMessage() . PHP_EOL; $status = 2; } if ($port->isOpen()) { $port->close();
<?php if ($argc < 2) { print 'specify port' . PHP_EOL; exit(1); } use PHPMake\SerialPort; $retval = 0; $device = $argv[1]; $baudRate = 9600; $prompt = 'brightness>'; $port = new SerialPort(); try { $port->open($device); $port->setBaudRate($baudRate); $port->setFlowControl(SerialPort::FLOW_CONTROL_NONE); $port->setCanonical(false); $port->setVTime(0)->setVMin(0); $stdin = fopen('php://stdin', 'r'); print $prompt; while (FALSE !== ($line = fgets($stdin))) { if (preg_match('/^(?:quit|exit)/', $line)) { break; } $brightness = pack('C', (int) $line); $port->write($brightness); print $prompt; } fclose($stdin); } catch (Exception $e) { print 'exception occurred' . PHP_EOL;
$status = 0; $deviceName = array_key_exists('deviceName', $_POST) ? $_POST['deviceName'] : null; if ($deviceName) { /** * SerialPort のインスタンスを作ります。 * SerialPort::__construct(string $portString) でインスタンスを生成する場合は、 * 以下に続く SerialPort::open(string $portString) もコンストラクタ内で行われます。 */ $port = new SerialPort(); try { /* * $portString が示すシリアルポートとのストリームを開きます。 * コンストラクタ SerialPort::__construct(string $deviceName) でインスタンスを生成している場合は、 * SerialPort::open(string $deviceName) をコールする必要はありません。 */ $port->open($deviceName); /* * ボーレートを設定します。 * ここではクラス定数を用いていますが整数リテラルでも構いません。 */ $port->setBaudRate(SerialPort::BAUD_RATE_9600); /* * フロー制御を設定します。 * SerialPort::setFlowControl() の引数には * クラス定数 SerialPort::FLOW_CONTROL_* を用いてください。 */ $port->setFlowControl(SerialPort::FLOW_CONTROL_NONE); /* * カノニカルモードを設定します。 * 続く SerialPort::setVMin() SerialPort::setVTime() と共に * データ読み込み時のタイムアウト方法を決定します。