VM暫存
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

250 строки
7.6KB

  1. <?php
  2. /*
  3. file: cars.php 車輛進出場處理
  4. */
  5. class Cars extends CC_Controller
  6. {
  7. function __construct()
  8. {
  9. parent::__construct('cars');
  10. //ignore_user_abort(); // 接受client斷線, 繼續run
  11. if(in_array($this->router->fetch_method(), array(
  12. 'ipcam', 'ipcam_meta',
  13. 'check_lpr_etag',
  14. 'opendoor',
  15. 'temp_opendoors', 'member_opendoors',
  16. 'post_ipcam'
  17. )))
  18. {
  19. ob_end_clean();
  20. ignore_user_abort();
  21. ob_start();
  22. echo 'ok';
  23. header('Connection: close');
  24. header('Content-Length: ' . ob_get_length());
  25. ob_end_flush();
  26. flush();
  27. }
  28. }
  29. // ------------------------------------
  30. // 廠商對接 START
  31. // ------------------------------------
  32. // [API]
  33. public function get_opendoor()
  34. {
  35. // 初始 mqtt
  36. $this->init_mqtt();
  37. // 執行
  38. $parms = $this->uri->uri_to_assoc(3);
  39. $parms['lpr'] = urldecode($parms['lpr']); // 中文車牌
  40. $return_msg = $this->app_model()->opendoor_lprio($parms);
  41. trigger_error(__FUNCTION__ . "|{$parms['lpr']}|return_msg|" . $return_msg);
  42. echo $return_msg;
  43. exit;
  44. }
  45. // [API]
  46. public function post_ipcam()
  47. {
  48. // 執行
  49. $parms = $this->uri->uri_to_assoc(3);
  50. $parms['lpr'] = urldecode($parms['lpr']); // 中文車牌
  51. // 同步並送出一次出入口 888
  52. $this->data_model()->sync_888($parms);
  53. $pic_folder = CAR_PIC.$this->vars['date_num'].'/'; // 今日資料夾名(yyyymmdd)
  54. if (!file_exists($pic_folder)) mkdir($pic_folder); // 如果資料夾不存在, 建立日期資料夾
  55. $config['upload_path'] = $pic_folder;
  56. // $config['allowed_types'] = 'gif|jpg|png';
  57. $config['allowed_types'] = '*';
  58. // ex. lpr_1625AB_I_1_152_C_1_2015080526.jpg -> car_交易序號_進出_順序_車號_時間.jpg
  59. $config['file_name'] = "lpr-{$parms['lpr']}-{$parms['io']}-{$parms['ivsno']}-{$parms['sq']}-C-1-{$this->vars['time_num']}.jpg";
  60. if (!isset($_FILES['cars']))
  61. {
  62. $status = 'error'; // 顯示上傳錯誤
  63. trigger_error('[ERROR] cars not found: ' . print_r($_FILES, true));
  64. }
  65. else
  66. {
  67. $this->load->library('upload', $config);
  68. if(!$this->upload->do_upload('cars')){
  69. $status = 'error'; // 顯示上傳錯誤
  70. trigger_error($this->upload->display_errors());
  71. }
  72. else
  73. {
  74. // 若無錯誤,則上傳檔案
  75. $file = $this->upload->data('cars');
  76. $status = 'ok';
  77. }
  78. }
  79. $parms['obj_type'] = 1; // 車牌類
  80. $parms['curr_time_str'] = $this->vars['date_time']; // 現在時間, 例2015-09-21 15:36:47
  81. $parms['pic_name'] = $config['file_name']; // 圖片檔名
  82. $return_msg = $this->app_model()->lprio($parms);
  83. trigger_error(__FUNCTION__ . "|{$parms['lpr']}|return_msg|" . $return_msg);
  84. }
  85. // ------------------------------------
  86. // 廠商對接 END
  87. // ------------------------------------
  88. /*
  89. 出入口
  90. 說明: 與ipcam相同判斷邏輯, 但不做任何資料更改
  91. */
  92. public function opendoor()
  93. {
  94. // 初始 mqtt
  95. $this->init_mqtt();
  96. // 執行
  97. $parms = $this->uri->uri_to_assoc(3);
  98. $parms['lpr'] = urldecode($parms['lpr']); // 中文車牌
  99. $return_msg = $this->app_model()->opendoor_lprio($parms);
  100. trigger_error(__FUNCTION__ . "|{$parms['lpr']}|return_msg|" . $return_msg);
  101. }
  102. // IVS -> 車號, 影像
  103. /*
  104. 鼎高IVS傳送車號及影像檔
  105. http://192.168.10.201/cars.html/ipcam/sno/12119/ivsno/0/io/O/type/C/lpr/4750YC/color/NULL/sq/0/ts/1441051995/sq2/0/etag/ABCD123456789/ant/1
  106. sno: 場站編號(光興國小:12119)
  107. ivsno: ivs編號, 每一支都是獨立編號(序號)
  108. io: i:進場, o:出場
  109. type: C:汽車, H:重機, M:機車
  110. lpr: ABC-1234(車號)
  111. color: red(紅色), 若無請用NULL(4個字)
  112. sq: 序號(參考用)
  113. sq2: 暫不用
  114. etag: eTag ID
  115. ant: eTag
  116. http設定說明:
  117. method: POST
  118. 上傳圖檔名英數字, 副檔名為gif/jpg/png均可
  119. 上傳圖檔欄位名稱為cars
  120. */
  121. public function ipcam()
  122. {
  123. // 執行
  124. $parms = $this->uri->uri_to_assoc(3);
  125. $parms['lpr'] = urldecode($parms['lpr']); // 中文車牌
  126. // 同步並送出一次出入口 888
  127. $this->data_model()->sync_888($parms);
  128. $pic_folder = CAR_PIC.$this->vars['date_num'].'/'; // 今日資料夾名(yyyymmdd)
  129. if (!file_exists($pic_folder)) mkdir($pic_folder); // 如果資料夾不存在, 建立日期資料夾
  130. $config['upload_path'] = $pic_folder;
  131. // $config['allowed_types'] = 'gif|jpg|png';
  132. $config['allowed_types'] = '*';
  133. // ex. lpr_1625AB_I_1_152_C_1_2015080526.jpg -> car_交易序號_進出_順序_車號_時間.jpg
  134. $config['file_name'] = "lpr-{$parms['lpr']}-{$parms['io']}-{$parms['ivsno']}-{$parms['sq']}-{$parms['type']}-{$parms['sq2']}-{$this->vars['time_num']}.jpg";
  135. if (!isset($_FILES['cars']))
  136. {
  137. $status = 'error'; // 顯示上傳錯誤
  138. trigger_error('[ERROR] cars not found: ' . print_r($_FILES, true));
  139. }
  140. else
  141. {
  142. $this->load->library('upload', $config);
  143. if(!$this->upload->do_upload('cars')){
  144. $status = 'error'; // 顯示上傳錯誤
  145. trigger_error($this->upload->display_errors());
  146. }
  147. else
  148. {
  149. // 若無錯誤,則上傳檔案
  150. $file = $this->upload->data('cars');
  151. $status = 'ok';
  152. }
  153. }
  154. $parms['obj_type'] = 1; // 車牌類
  155. $parms['curr_time_str'] = $this->vars['date_time']; // 現在時間, 例2015-09-21 15:36:47
  156. $parms['pic_name'] = $config['file_name']; // 圖片檔名
  157. $return_msg = $this->app_model()->lprio($parms); // 測試eTag
  158. trigger_error(__FUNCTION__ . "|{$parms['lpr']}|return_msg|" . $return_msg);
  159. }
  160. /*
  161. 出入口
  162. 說明: 特殊方式進出註記 (ex. 悠遊卡)
  163. */
  164. public function ipcam_meta()
  165. {
  166. $parms = $this->uri->uri_to_assoc(3);
  167. $parms['lpr'] = urldecode($parms['lpr']); // 中文車牌
  168. // 執行
  169. $this->app_model()->ipcam_meta($parms);
  170. }
  171. // 用車牌與eTag, 檢查資料庫
  172. public function check_lpr_etag()
  173. {
  174. $lpr = $this->uri->segment(3);
  175. $etag = $this->uri->segment(4);
  176. // 執行
  177. $this->app_model()->check_lpr_etag($lpr, $etag);
  178. exit;
  179. }
  180. // 開門 (臨停)
  181. public function temp_opendoors()
  182. {
  183. $parms['ivsno'] = $this->uri->segment(3);
  184. $parms['lpr'] = $this->uri->segment(4);
  185. $parms['ck'] = $this->uri->segment(5);
  186. // 初始 mqtt
  187. $this->init_mqtt();
  188. // 執行
  189. $result = $this->app_model()->do_temp_opendoor($parms);
  190. trigger_error(__FUNCTION__ . "..{$result}.." . print_r($parms, true));
  191. exit;
  192. }
  193. // 開門 (臨停)
  194. public function member_opendoors()
  195. {
  196. $parms['ivsno'] = $this->uri->segment(3);
  197. $parms['lpr'] = $this->uri->segment(4);
  198. $parms['ck'] = $this->uri->segment(5);
  199. // 初始 mqtt
  200. $this->init_mqtt();
  201. // 執行
  202. $result = $this->app_model()->do_member_opendoor($parms);
  203. trigger_error(__FUNCTION__ . "..{$result}.." . print_r($parms, true));
  204. exit;
  205. }
  206. }