function _turn($params, $code, $all = false) { $db = Db::init(); if ($all == true || isset($params["mid"]) && isset($params["no"])) { $mid = strtoupper($params["mid"]); $no = $params["no"]; $type = substr($mid, 0, 1) . "\n"; if (verify_mid($mid) == false) { //id不存在 return json_encode(array('code' => 30004, 'msg' => "mid no exist")); } $data = $db->get_var('SELECT number FROM "switch_info" where switchid="' . $mid . '"'); if (isset($data)) { $data = sprintf("%02X", $data); switch ($type) { case '1': //电池版开关 $json = array("id" => "{$mid}", "code" => $code, "param" => 1 << $no - 1, "data" => "{$data}", "timeout" => 2000, "response" => 0); break; case '4': //零火版开关 //零火版开关 default: $json = array("id" => "{$mid}", "code" => $code, "param" => 1 << $no - 1, "data" => "{$data}", "timeout" => 500, "response" => 0); break; } for ($i = 0; $i < 100; $i++) { $res = Uart::send(json_encode($json)); if (isset($res["stat"])) { switch ($res["stat"]) { case 0: return json_encode(array('code' => 0, 'msg' => "ok")); break; case 40004: //射频模块正忙 usleep(200000); continue; return json_encode(array('code' => 30006, 'msg' => "system is busy")); default: return json_encode(array('code' => 32004, 'msg' => "communication fault(" . $res["stat"] . ")")); } } } return json_encode(array('code' => 32004, 'msg' => "communication fault(" . $res["stat"] . ")")); } else { //读数据库错误 return json_encode(array('code' => 30005, 'msg' => "read data from database error")); } } else { return json_encode(array('code' => 30003, 'msg' => "params error")); //参数不完整 } }
function device_oper($params, $code, $query = false, $response = 1) { if (isset($params["mid"])) { $mid = strtoupper($params["mid"]); if (verify_mid($mid) == false) { //id不存在 return json_encode(array('code' => 30004, 'msg' => "mid no exist")); } $json = array("id" => "{$mid}", "code" => $code, "param" => 1, "data" => "", "timeout" => 600, "response" => $response); for ($i = 0; $i < 1000; $i++) { $res = Uart::send(json_encode($json)); if (isset($res["stat"])) { switch ($res["stat"]) { case 0: if ($query) { //var_dump($res); return json_encode(array('code' => 0, 'msg' => "ok", 'results' => array('stat' => $res["result"]["param"]))); } else { return json_encode(array('code' => 0, 'msg' => "ok")); } break; case 40004: //射频模块正忙 usleep(1000); continue; //return json_encode(array('code'=>30006, 'msg'=>"system is busy")); //return json_encode(array('code'=>30006, 'msg'=>"system is busy")); default: return json_encode(array('code' => 32004, 'msg' => "communication fault(" . $res["stat"] . ")")); } } else { return json_encode(array('code' => 30006, 'msg' => "system is busy")); } } return json_encode($res); } else { return json_encode(array('code' => 30003, 'msg' => "params error")); //参数不完整 } }