debug) { $msg = str_replace("\r", '\r', $msg); $msg = str_replace("\n", '\n', $msg); DiTestMsg::dbg(trim($msg), $this->__componentName); } } private function err($msg) { DiTestMsg::err(trim($msg), $this->__componentName); } private function warn($msg) { DiTestMsg::warn(trim($msg), $this->__componentName); } private function fail($msg) { DiTestMsg::fail(trim($msg), $this->__componentName); } private function pass($msg) { DiTestMsg::pass(trim($msg), $this->__componentName); } function __construct($host, $port = 2008, $debug = false) { $this->debug = $debug; $this->__fd = fsockopen($host, $port, $errno, $errstr, 3); if ($this->__fd === FALSE) { $this->fail("$errstr ($errno)"); } else { $this->debug($host); $this->debug($port); $this->setInfo("host", $host); $this->setInfo("port", $port); // all OFF $this->updaterelais(); } } function __destruct() { if ($this->__fd) { fclose($this->__fd); $this->__fd = null; } } function setInfo($key, $value) { $this->__info[$key] = $value; } function getInfo($key) { return $this->__info[$key]; } private function updaterelais() { $relais_1 = 'false'; $relais_2 = 'false'; $relais_3 = 'false'; $relais_4 = 'false'; if ($this->relais_states[0] == true) $relais_1 = 'true'; if ($this->relais_states[1] == true) $relais_2 = 'true'; if ($this->relais_states[2] == true) $relais_3 = 'true'; if ($this->relais_states[3] == true) $relais_4 = 'true'; $ar = array($relais_1, $relais_2, $relais_3, $relais_4); $response=array(); $response["RelaisArray"]=$ar; $json=json_encode($response); $this->sendMessage($json); } private function reply() { if ($this->__fd) { $reply = fgets($this->__fd); $this->debug("[reply] \"$reply\""); return $reply; } return ""; } private function request($cmd) { if ($this->__fd) { $cmd .= "\r\n"; $this->debug("[request] cmd: \"$cmd\""); fputs($this->__fd, $cmd); } } public function flush() { stream_set_blocking($this->__fd, false); stream_set_timeout($this->__fd, 1); do { $rep = $this->reply(); } while ($rep); stream_set_blocking($this->__fd, true); } public function sendMessage($msg) { $this->request($msg); } public function setrelais($id, $state) { if ($id > 3) return; if ($this->__fd) { $this->relais_states[$id] = $state; $this->updaterelais(); } } }