You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

808 lines
32 KiB

/*
function getValue() {
GetRequest();
}*/
var g_lpr_name = "";
var request_live = null;
function getalarmmotion_value() {
var ipStr = '/getalarmmotion';
if (this.status == 404) {
//request_live = setInterval(function () {
/*
if (navigator.userAgent.match("MSIE") || (!!window.ActiveXObject || "ActiveXObject" in window))
GetRequest_Http();
else*/
// GetRequest_WebSocket();
var replaceUrl = 'http://' + window.location.hostname + ':' + GetUrlPort() + '/Aida/lpr.html';
//alert(replaceUrl);
parent.window.location.replace(replaceUrl);
//}, 5000);
}
else {
/*
if (navigator.userAgent.match("MSIE") || (!!window.ActiveXObject || "ActiveXObject" in window))
GetRequest_Http();
else*/
GetRequest_WebSocket();
}
}
var TripwireTrafficMode = 0;//0:Traffic Light,1:Tripwire
var TrafficLineMode = 0;//0:Rect,1:Line
var g_Ctrl_InfoTrafficLight = [];//0:index,1:left,2:top,3:width,4:height,5:direct,6:Traffic Light
var MAX_SIZE_POINTS = 6;
var MAX_DETECTION_ZONE = 8;
var G_VIEW_CANVAS_X = 640;
var G_VIEW_CANVAS_Y = 480;
var MAX_HEIGHT = G_VIEW_CANVAS_Y;
var MAX_WIDTH = G_VIEW_CANVAS_X;
var currentPointPosition1 = new Array(MAX_SIZE_POINTS);
var currentPointPosition2 = new Array(MAX_SIZE_POINTS);
var currentPointPosition3 = new Array(MAX_SIZE_POINTS);
var currentPointPosition4 = new Array(MAX_SIZE_POINTS);
var currentPointPosition5 = new Array(MAX_SIZE_POINTS);
var currentPointPosition6 = new Array(MAX_SIZE_POINTS);
var currentPointPosition7 = new Array(MAX_SIZE_POINTS);
var currentPointPosition8 = new Array(MAX_SIZE_POINTS);
var data_anpr = "";
var bbox_count = 0;
var plate_count = 0;
var plate_idx = 0;
var ai_json;
var complete_data = "";
var complete_flag = 0;
var content_len = 0;
var datas;
var n1 = -1, n2 = -1 , n2_temp = -1;
var wait_count = 0;
var clear_count = 0; //sophia add 20201207
var MAX_LPR_ARRAY = 18;
var MAX_LPR_SHIFT = 1;
var LPR_Array = Array(MAX_LPR_ARRAY);
var LPR_confidence_array = Array(MAX_LPR_ARRAY);
var LPR_area_array = Array(MAX_LPR_ARRAY);
var MAX_LPBMP_ARRAY = 18;
var LPBMP_Array = Array(MAX_LPBMP_ARRAY); // lpr img path
//var LPR_Array = Array(MAX_LPBMP_ARRAY); // lpr text
//var LPRC_Array = Array(MAX_LPBMP_ARRAY); // lpr contry
var just_change_lpr = 0;
{
for (var i = 0; i < MAX_LPR_ARRAY; i++) {
LPR_Array[i] = "NULL";
LPR_confidence_array[i] = "NULL";
LPR_area_array[i] = "NULL";
}
}
{// LPBMP
for (var i = 0; i < MAX_LPBMP_ARRAY; i++) {
LPBMP_Array[i] = "NULL";
}
}
var g_drawing_canvas =
{
bounding_left: -1,
bounding_top: -1,
down_x: -1,
down_y: -1,
move_x: -1,
move_y: -1,
draw_x: -1,
draw_y: -1,
draw_w: -1,
draw_h: -1,
direct: 1
};
function push_lpr(mylpr,myarea,myconfidence) {
for (var i = 0; i < MAX_LPR_ARRAY; i++) {
if (LPR_Array[i] === "NULL") {
LPR_Array[i] = mylpr;
LPR_confidence_array[i] = myconfidence;
LPR_area_array[i] = myarea;
break;
}
else {
if (i === MAX_LPR_ARRAY - 1) {
for (var j = 0; j < MAX_LPR_ARRAY - 1; j++) {
LPR_Array[j] = LPR_Array[j + 1];
LPR_confidence_array[j] = LPR_confidence_array[j + 1];
LPR_area_array[j] = LPR_area_array[j + 1];
}
LPR_Array[j] = mylpr;
LPR_confidence_array[j] = myconfidence;
LPR_area_array[j] = myarea;
}
}
}
}
function get_front_lpr() {
var msg = "";
for (var i = MAX_LPR_ARRAY - 1; i >= MAX_LPR_SHIFT; i--) {
if (LPR_Array[i] != "NULL") {
if (LPR_area_array[i].length >= 1 && LPR_area_array[i] != "NULL") {
msg += LPR_Array[i] + ", " + LPR_area_array[i] + ", " + LPR_confidence_array[i] + "<br/>";
}
else {
msg += LPR_Array[i] + ", " + LPR_confidence_array[i] + "<br/>";
}
//console.log(LPR_Array[i], ", ", LPR_confidence_array[i]); //a113n
}
}
return msg;
}
function validatingJSON(json) {
var checkedjson;
try {
checkedjson = JSON.parse(json); //JSON parse only for try catch
//console.log("json OK");
//console.log(json);
} catch (e) {
checkedjson = null;
console.log(e);//the character would be drop sometimes, for example the label "class_id" may be "clas_id".
//console.log(json);
}
return checkedjson;
}
function GetMaxWidth() {
return MAX_WIDTH;
}
function GetMaxHeight() {
return MAX_HEIGHT;
}
function GetAnpr() {
if (!!data_anpr) {
var complete_data = "";
complete_data = complete_data.concat(data_anpr);
n1 = complete_data.indexOf('{"AiEngine"');
//n2 = complete_data.indexOf('"Count":');
n2_temp = complete_data.indexOf('"Count"');
n2 = complete_data.indexOf('}', n2_temp);
var max_protected_objects = 1;
if (n1 > 0 && n2_temp > 0 && n2 > 0 && (n1 + 7) < n2_temp && n2_temp < n2) {
wait_count = 0;
clear_count = 0;
datas = complete_data.split(/\r\n|\r/);
complete_data = "";
for (var i = datas.length-1; i >= 0; i--) {
if (datas[i].length > 12 && datas[i].substring(0, 12) == '{"AiEngine":' && datas[i].length < 8192 * 8) {
//datas[i].replace(/\\'/g, "'");
//datas[i].replace('\"', '"');
datas[i].replace('\n', '');
datas[i].replace('\r', '');
datas[i].replace('\t', '');
datas[i].replace('\\', '');
//var alarm_test = '{"AiEngine":[{"id":0,"channel_id":1,"camera_name":"","res_height":1080,"res_width":1920,"confidence":59,"engine_type":1,"label_name":"car","class_id":2,"obj_type":0,"obj_tracking_id":1,"obj_dwell_time":23,"color_id":0,"color":"","linked_plate":"","x":83,"y":136,"w":215,"h":168,"parent_idx":-1,"behavior_id":0},{"id":1,"channel_id":1,"camera_name":"","res_height":1080,"res_width":1920,"confidence":43,"engine_type":1,"label_name":"car","class_id":2,"obj_type":0,"obj_tracking_id":2,"obj_dwell_time":23,"color_id":0,"color":"","linked_plate":"","x":158,"y":538,"w":218,"h":144,"parent_idx":-1,"behavior_id":0},{"id":2,"channel_id":1,"camera_name":"","res_height":1080,"res_width":1920,"confidence":82,"engine_type":1,"label_name":"car","class_id":2,"obj_type":0,"obj_tracking_id":3,"obj_dwell_time":23,"color_id":0,"color":"","linked_plate":"","x":342,"y":175,"w":321,"h":196,"parent_idx":-1,"behavior_id":0},{"id":3,"channel_id":1,"camera_name":"","res_height":1080,"res_width":1920,"confidence":49,"engine_type":1,"label_name":"car","class_id":2,"obj_type":0,"obj_tracking_id":6,"obj_dwell_time":23,"color_id":0,"color":"","linked_plate":"","x":362,"y":578,"w":253,"h":132,"parent_idx":-1,"behavior_id":0},{"id":4,"channel_id":1,"camera_name":"","res_height":1080,"res_width":1920,"confidence":69,"engine_type":1,"label_name":"car","class_id":2,"obj_type":0,"obj_tracking_id":4,"obj_dwell_time":23,"color_id":0,"color":"","linked_plate":"","x":714,"y":608,"w":239,"h":130,"parent_idx":-1,"behavior_id":0},{"id":5,"channel_id":1,"camera_name":"","res_height":1080,"res_width":1920,"confidence":31,"engine_type":1,"label_name":"car","class_id":2,"obj_type":0,"obj_tracking_id":5,"obj_dwell_time":23,"color_id":0,"color":"","linked_plate":"","x":1035,"y":663,"w":340,"h":179,"parent_idx":-1,"behavior_id":0}],"Count":6}';
//ai_json = JSON.parse(alarm_test);
var temp = null;
temp = datas[i].slice();
//ai_json = JSON.parse(temp);
ai_json = validatingJSON(temp);
datas[i] = null;
break;
}
}
var AI_fps = ai_json.AI_fps;
localStorage.setItem('AI_fps', AI_fps);
var red_light = ai_json.red_light;
if (ai_json != null) {
bbox_count = ai_json.Count;
}
else {
bbox_count = 0;
}
plate_count = 0;
plate_idx = 0;
for (var i = 0; i < bbox_count; i++) {
if (ai_json.AiEngine[i]) {
//console.log("ai_json.AiEngine[i] = " + ai_json.AiEngine[i]); //a113n
//console.log("[a113n] " + ai_json.AiEngine[i].toString()) //a113n
if (ai_json.AiEngine[i].parent_idx == -1) {
if (ai_json.AiEngine[i].label_name == "L._Plate_USA" ||
ai_json.AiEngine[i].label_name == "L._Plate_MAC/MYS" ||
ai_json.AiEngine[i].label_name == "L._Plate_VNM" ||
ai_json.AiEngine[i].label_name == "L._Plate_EUR" ||
ai_json.AiEngine[i].label_name == "L._Plate_GBR" ||
ai_json.AiEngine[i].label_name == "L._Plate_JPN" ||
ai_json.AiEngine[i].label_name == "L._Plate_THA" ||
ai_json.AiEngine[i].label_name == "L._Plate_IDN" ||
ai_json.AiEngine[i].label_name == "L._Plate_IDN2" ||
ai_json.AiEngine[i].label_name == "L._Plate_BGD" ||
ai_json.AiEngine[i].label_name == "L._Plate_MEA" ||
ai_json.AiEngine[i].label_name == "L._Plate_PHL" ||
ai_json.AiEngine[i].label_name == "L._Plate_AUS" ||
ai_json.AiEngine[i].label_name == "L._Plate_CNT_1LINE" ||
ai_json.AiEngine[i].label_name == "L._Plate_CNT_2LINES" ||
ai_json.AiEngine[i].label_name == "L._Plate_CNT_3LINES" ||
ai_json.AiEngine[i].label_name == "L._Plate_CNT_VERTICAL" ||
ai_json.AiEngine[i].label_name == "L._Plate_CNT_USDOT" ||
ai_json.AiEngine[i].label_name == "ambulance" ||
ai_json.AiEngine[i].label_name == "face" ||
ai_json.AiEngine[i].label_name == "blank" ||
ai_json.AiEngine[i].label_name == "stop_sign" ||
ai_json.AiEngine[i].label_name == "qrcode" ||
ai_json.AiEngine[i].label_name == "barcode" ||
ai_json.AiEngine[i].label_name == "L._Plate_TWN") {
if (ai_json.AiEngine[i].properties) {
if (ai_json.AiEngine[i].properties.plate) {
var plate_name = "";
if (ai_json.AiEngine[i].label_name == "ambulance")
plate_name = plate_name.concat(ai_json.AiEngine[i].label_name);
else if (ai_json.AiEngine[i].label_name == "blank")
plate_name = plate_name.concat(ai_json.AiEngine[i].label_name);
else if (ai_json.AiEngine[i].label_name == "stop_sign")
plate_name = plate_name.concat(ai_json.AiEngine[i].label_name);
else
plate_name = plate_name.concat(ai_json.AiEngine[i].properties.plate);
/*
plate_name = plate_name.replace(/[「」‘’']/g, '');
if (plate_name === '' || plate_name === '0') {
continue;
}*/
//console.log("plate_name: " + plate_name);
if (ai_json.AiEngine[i].behavior_id > 0 || localStorage.getItem("enable_only_once_to_post") == "No") {
push_lpr(plate_name, ai_json.AiEngine[i].properties.area, ai_json.AiEngine[i].confidence.toString() + "%");
if (("LPR_BMP" in ai_json.AiEngine[i])) {
push_LPBMP(ai_json.AiEngine[i]);
set_lpr_content(get_lprimgnum()); // get_lprimgnum() returns the last index of img in LPBMP_Array
}
}
AssignPlateObject(ai_json, i, plate_name);
}
}
}
}
}
}
//RenderAllCanvas();
ai_json = null;
}
else {
wait_count++;
if (wait_count >= 3) {
wait_count = 0;
complete_data = "";
}
clear_count++;
if (clear_count >= 3) {
clear_count = 0;
//RefreshCanvasObject(max_protected_objects);
}
}
}
}
function AssignPlateObject(ai_json, i_index, plate_name) {
var x = parseInt(ai_json.AiEngine[i_index].x, 10);
var y = parseInt(ai_json.AiEngine[i_index].y, 10);
var w = parseInt(ai_json.AiEngine[i_index].w, 10);
var h = parseInt(ai_json.AiEngine[i_index].h, 10);
var text_y = parseInt((ai_json.AiEngine[i_index].y + ai_json.AiEngine[i_index].h), 10);
//console.log(text_y);
/*if (x * 0.25 <= 20) {
x = 80;
}
else if (x * 0.25 >= 460) {
x = 1840;
}
if (y * 0.3 <= 20) {
y = 66;
}
else if (y * 0.3 >= 300) {
y = 999;
}
if (x * 0.25 + w * 0.25 >= 460) {
w = parseInt((460 - x * 0.25) * 4, 10);
}
if (y * 0.3 + h * 0.3 >= 300) {
h = parseInt((300 - y * 0.3) * 3.33, 10);
}*/
text_y = y - 66;
var area_name = "";
var country_name = "";
var out_label = "";
if (ai_json.AiEngine[i_index].label_name == "L._Plate_USA" ||
ai_json.AiEngine[i_index].label_name == "L._Plate_THA" ||
ai_json.AiEngine[i_index].label_name == "L._Plate_BGD" ||
ai_json.AiEngine[i_index].label_name == "L._Plate_MEA" ||
ai_json.AiEngine[i_index].label_name == "L._Plate_AUS" ||
ai_json.AiEngine[i_index].label_name == "L._Plate_EUR" ||
ai_json.AiEngine[i_index].label_name == "L._Plate_JPN") {
area_name = area_name.concat(ai_json.AiEngine[i_index].properties.area);
country_name = country_name.concat(ai_json.AiEngine[i_index].properties.country);
out_label = out_label.concat(plate_name, ", ", area_name, " ", country_name);
}
{
var behavior_id = ai_json.AiEngine[i_index].behavior_id;
if (ai_json.AiEngine[i_index].label_name == "L._Plate_USA" ||
ai_json.AiEngine[i_index].label_name == "L._Plate_THA" ||
ai_json.AiEngine[i_index].label_name == "L._Plate_BGD" ||
ai_json.AiEngine[i_index].label_name == "L._Plate_MEA" ||
ai_json.AiEngine[i_index].label_name == "L._Plate_AUS" ||
ai_json.AiEngine[i_index].label_name == "L._Plate_EUR" ||
ai_json.AiEngine[i_index].label_name == "L._Plate_JPN") {
if (behavior_id >= 1) {
/*canvasTripwire.add(insertTextLabel_Red(x * 0.25, text_y * 0.3, 50, 50, out_label + ", " + ai_json.AiEngine[i_index].confidence.toString() + "%"));
canvasTripwire1.add(insertTextLabel_Red(x * 0.25, text_y * 0.3, 50, 50, out_label + ", " + ai_json.AiEngine[i_index].confidence.toString() + "%"));
canvasTripwire2.add(insertTextLabel_Red(x * 0.25, text_y * 0.3, 50, 50, out_label + ", " + ai_json.AiEngine[i_index].confidence.toString() + "%"));
canvasTripwire3.add(insertTextLabel_Red(x * 0.25, text_y * 0.3, 50, 50, out_label + ", " + ai_json.AiEngine[i_index].confidence.toString() + "%"));
canvasTripwire4.add(insertTextLabel_Red(x * 0.25, text_y * 0.3, 50, 50, out_label + ", " + ai_json.AiEngine[i_index].confidence.toString() + "%"));
canvasTripwire_all.add(insertTextLabel_Red(x * 0.25, text_y * 0.3, 50, 50, out_label + ", " + ai_json.AiEngine[i_index].confidence.toString() + "%"));*/
}
else {
/*canvasTripwire.add(insertTextLabel(x * 0.25, text_y * 0.3, 50, 50, out_label + ", " + ai_json.AiEngine[i_index].confidence.toString() + "%"));
canvasTripwire1.add(insertTextLabel(x * 0.25, text_y * 0.3, 50, 50, out_label + ", " + ai_json.AiEngine[i_index].confidence.toString() + "%"));
canvasTripwire2.add(insertTextLabel(x * 0.25, text_y * 0.3, 50, 50, out_label + ", " + ai_json.AiEngine[i_index].confidence.toString() + "%"));
canvasTripwire3.add(insertTextLabel(x * 0.25, text_y * 0.3, 50, 50, out_label + ", " + ai_json.AiEngine[i_index].confidence.toString() + "%"));
canvasTripwire4.add(insertTextLabel(x * 0.25, text_y * 0.3, 50, 50, out_label + ", " + ai_json.AiEngine[i_index].confidence.toString() + "%"));
canvasTripwire_all.add(insertTextLabel(x * 0.25, text_y * 0.3, 50, 50, out_label + ", " + ai_json.AiEngine[i_index].confidence.toString() + "%"));*/
}
}
else {
if (behavior_id >= 1) {
/*canvasTripwire.add(insertTextLabel_Red(x * 0.25, text_y * 0.3, 50, 50, plate_name + ", " + ai_json.AiEngine[i_index].confidence.toString() + "%"));
canvasTripwire1.add(insertTextLabel_Red(x * 0.25, text_y * 0.3, 50, 50, plate_name + ", " + ai_json.AiEngine[i_index].confidence.toString() + "%"));
canvasTripwire2.add(insertTextLabel_Red(x * 0.25, text_y * 0.3, 50, 50, plate_name + ", " + ai_json.AiEngine[i_index].confidence.toString() + "%"));
canvasTripwire3.add(insertTextLabel_Red(x * 0.25, text_y * 0.3, 50, 50, plate_name + ", " + ai_json.AiEngine[i_index].confidence.toString() + "%"));
canvasTripwire4.add(insertTextLabel_Red(x * 0.25, text_y * 0.3, 50, 50, plate_name + ", " + ai_json.AiEngine[i_index].confidence.toString() + "%"));
canvasTripwire_all.add(insertTextLabel_Red(x * 0.25, text_y * 0.3, 50, 50, plate_name + ", " + ai_json.AiEngine[i_index].confidence.toString() + "%"));*/
}
else {
/*canvasTripwire.add(insertTextLabel(x * 0.25, text_y * 0.3, 50, 50, plate_name + ", " + ai_json.AiEngine[i_index].confidence.toString() + "%"));
canvasTripwire1.add(insertTextLabel(x * 0.25, text_y * 0.3, 50, 50, plate_name + ", " + ai_json.AiEngine[i_index].confidence.toString() + "%"));
canvasTripwire2.add(insertTextLabel(x * 0.25, text_y * 0.3, 50, 50, plate_name + ", " + ai_json.AiEngine[i_index].confidence.toString() + "%"));
canvasTripwire3.add(insertTextLabel(x * 0.25, text_y * 0.3, 50, 50, plate_name + ", " + ai_json.AiEngine[i_index].confidence.toString() + "%"));
canvasTripwire4.add(insertTextLabel(x * 0.25, text_y * 0.3, 50, 50, plate_name + ", " + ai_json.AiEngine[i_index].confidence.toString() + "%"));
canvasTripwire_all.add(insertTextLabel(x * 0.25, text_y * 0.3, 50, 50, plate_name + ", " + ai_json.AiEngine[i_index].confidence.toString() + "%"));*/
}
}
}
}
function GetUrlPort() {
var url_href = window.location.href;
var arr_url = url_href.split(":")[2].split("/")[0];
return arr_url;
}
/*
var g_GetRequest = null;
var g_h = -1;
var g_m = -1;
var g_s = -1;
var g_ms = -1;
var g_time_canvas = 250;
var g_imgUrl = "";
var g_speed = 99999;
var g_times_update_canvas = 0;
var g_avg_speed = 7000;
function GetRequest() {
clearInterval(g_GetRequest);
g_GetRequest = setInterval(function GetRequest_set_interval() {
var current_page = localStorage.getItem('current_page');
//if (current_page === 'anpr_index')
{
//g_times_update_canvas++;
data_anpr = sessionStorage.getItem('getalarmmotion_data');
GetAnpr();
var win_width = G_VIEW_CANVAS_X, win_height = G_VIEW_CANVAS_Y;
//var imgUrl='../snap.jpg?'+Math.random();
//var imgUrl='./snap.jpg?'+Math.random();
var NowDate = new Date();
var h = NowDate.getHours();
var m = NowDate.getMinutes();
var s = NowDate.getSeconds();
var ms = NowDate.getMilliseconds();
//console.log("[anpr]snap_" + h + '_' + m + '_' + s);
if (g_h == -1 || g_m == -1 || g_s == -1 || g_ms == -1) {
g_h = h;
g_m = m;
g_s = s;
g_ms = ms;
}
var imgUrl = 'http://' + window.location.hostname + ":" + GetUrlPort() + '/getimage_HD?' + 'lpr_' + h + '_' + m + '_' + s + '_' + ms;
g_imgUrl = imgUrl;
document.getElementById('destImage').src = g_imgUrl;
imgUrl = null;
}
}, g_time_canvas);
}
*/
function set_g_lpr_name(temp_lpr_name) {
g_lpr_name = temp_lpr_name;//HTTP_TITLE01
}
function set_one_lpr_content(img_num) {
if (img_num > 0)
{ // img_num = -1 when there has no valid lpr imgs.
if (img_num <= 1 || (img_num >= 2 && (LPR_Array[img_num - 1] != LPR_Array[img_num - 1 - 1])))
{
var imgdiv = document.querySelector("#text_plate_info");
while (imgdiv.hasChildNodes()) {
imgdiv.removeChild(imgdiv.firstChild);
}
for (var i = 0; i < img_num && i < MAX_LPR_SHIFT; i++) // img_num is from get_lprimgnum() which returns the last index of img in LPBMP_Array.
{
var index_lpr = img_num - i - 1;
/*
var imgObj = document.createElement("img");
imgObj.setAttribute("src", get_lprimgpath(index_lpr));
imgObj.style.height = "80px";
imgObj.style.width = "auto";
imgObj.style.marginLeft = "auto";
imgObj.style.marginRight = "auto";
*/
var imgtext = document.createElement("h4");//LPR_Array[index_lpr] + ", " + LPR_confidence_array[index_lpr]
var lpr_text = "";
lpr_text = g_lpr_name + ": " + LPR_Array[index_lpr] /*+ ", " + LPR_confidence_array[index_lpr]*/;
if (LPR_area_array[index_lpr].length >= 1 && LPR_area_array[index_lpr] != "NULL") {
var area_text = LPR_area_array[index_lpr];
lpr_text += ", " + area_text;
//lpr_text += "\n";
imgtext.appendChild(document.createTextNode(lpr_text));
//imgtext.style = "white-space: pre;";
}
else {
//lpr_text += "\n";
imgtext.appendChild(document.createTextNode(lpr_text));
// imgtext.style = "white-space: pre;";
}
//console.log(lpr_text);
//imgdiv.appendChild(imgObj);
imgdiv.appendChild(imgtext);
just_change_lpr = 1;
}
}
}
}
function set_just_change_lpr_to_zero() {
just_change_lpr = 0;
}
function get_just_change_lpr() {
return just_change_lpr;
}
function get_lprimgpath(index) {
var imgpath = "";
if (LPBMP_Array[index] != "NULL") {
imgpath = LPBMP_Array[index];
imgpath = imgpath.replace("/emmc/plugin", "..");
}
// console.log(imgpath + " = " + LPBMP_Array[index] + "?");
return imgpath;
}
function get_lprimgnum(){ //return the last index which is valid. -1 if all invalid.
var j = 0;
for(j=0; j< MAX_LPBMP_ARRAY; j++){
if(LPBMP_Array[j] == "NULL")
break;
}
//console.log("[get_lprimgnum] j = " + j);
return j; //return the last index which is valid. -1 if all invalid.
}
var MAX_LPR_ALIVE_TIME = 1000;
function lprimg_valid(date){ // can be rewrite to other valid check if needed.
// console.log("[lprimg_valid]");
// console.log("inpute = " + date);
var input_date = new Date(date);
// console.log(input_date.toISOString());
var now_date = new Date();
// console.log(now_date.toISOString());
// console.log("pic and now time diff = " + (now_date - input_date)/1000/60/60 + " hours");
var valid = false;
if(((now_date - input_date)/1000/60/60) < MAX_LPR_ALIVE_TIME){
valid = true;
}
return valid;
}
function push_LPBMP(jsonbuf){
//console.log("[push_LPBMP] jsonbuf = " + typeof jsonbuf);
var new_LPBMP_path = jsonbuf.LPR_BMP;
if (LPBMP_Array[MAX_LPBMP_ARRAY - 1] != "NULL") {
var j = 0;
for (j = 0; j < MAX_LPBMP_ARRAY - 1; j++) {
LPBMP_Array[j] = LPBMP_Array[j + 1];
}
LPBMP_Array[j] = new_LPBMP_path;
}
else{
for (var i = 0; i < MAX_LPBMP_ARRAY; i++) {
if (LPBMP_Array[i] === "NULL") {
LPBMP_Array[i] = new_LPBMP_path;
break;
}
}
}
}
function AiEngine_json_split(alarm_data){ // copied from alarm.js
var datas;
var ai_json;
var complete_data = "";
var n1 = -1, n2 = -1, n2_temp = -1;
complete_data = complete_data.concat(alarm_data);
n1 = complete_data.indexOf('{"AiEngine"');
n2_temp = complete_data.indexOf('"Count"');
n2 = complete_data.indexOf('}', n2_temp);
if (n1 > 0 && n2_temp > 0 && n2 > 0 && (n1 + 7) < n2_temp && n2_temp < n2) {
datas = complete_data.split(/\r\n|\r/);
complete_data = "";
for (var i = datas.length - 1; i >= 0; i--) {
if (datas[i].length > 12 && datas[i].substring(0, 12) == '{"AiEngine":' && datas[i].length < 8192*8) {
var temp = null;
temp = datas[i].slice();
ai_json = JSON.parse(temp);
//ai_json = validatingJSON(temp);
datas[i] = null;
break;
}
}
}
return ai_json;
}
function SetLPR(LPR_data){ //save ["INFORMATION"] into seeSionStorage for further use.
var jsonbuf = null;
try {
jsonbuf = JSON.parse(LPR_data); //JSON parse only for try catch
} catch (e) {
jsonbuf = null;
// console.log(e);//the character would be drop sometimes, for example the label "class_id" may be "clas_id".
//console.log(json);
}
if(jsonbuf != null){ // save into session storage only if the data is valid json format
sessionStorage.setItem('lprinfologlist_num', jsonbuf["LPR_COUNT"]);
sessionStorage.setItem('lprinfologlist', JSON.stringify(jsonbuf["INFORMATION"]));
//by saving jsonbuf["INFORMATION"], we can retrive other information like confidence in the future.
// var test = JSON.parse(sessionStorage.getItem('lprinfologlist'));
// console.log(test[0]);
// console.log(test[0].LP_BMP);
}
}
var ws = null;
var wait_data = 0;
function GetRequest_WebSocket() {
// sessionStorage.setItem('getalarmmotion_data', "");
var data_temp = "";
wait_data = 0;
console.log("GetRequest_WebSocket");
if ("WebSocket" in window) {
//console.log("WebSocket is supported by your Browser!");
// Let us open a web socket
if ( navigator.userAgent.indexOf( "nvr_auth=" ) != -1 )
ws = new WebSocket("ws://" + window.location.hostname + ":" + GetUrlPort() + "/getalarmmotion?" + navigator.userAgent );
else
ws = new WebSocket("ws://" + window.location.hostname + ":" + GetUrlPort() + "/getalarmmotion");
keepAlive();
ws.onopen = function () {
// Web Socket is connected, send data using send()
//ws.send("Message to send");
console.log("ws.onopen...");
clearInterval(request_live);
//clearInterval(reconnect_websocket);
//websocket_reconnect_flag = 0;
};
ws.onmessage = function (evt) {
var received_msg = evt.data;
//console.log("websocket:");
//console.log(received_msg);
/*
clearInterval(request_live);
clearInterval(reconnect_websocket);
websocket_reconnect_flag = 0;*/
data_temp = "";
data_temp = received_msg;
//console.log("this.responseText.length: " + this.responseText.length.toString());
//console.log("readyState " + this.readyState.toString());
//sessionStorage.setItem('getalarmmotion_data', data_temp);
data_anpr = data_temp
GetAnpr();
var win_width = G_VIEW_CANVAS_X, win_height = G_VIEW_CANVAS_Y;
//var imgUrl='../snap.jpg?'+Math.random();
//var imgUrl='./snap.jpg?'+Math.random();
var NowDate = new Date();
var h = NowDate.getHours();
var m = NowDate.getMinutes();
var s = NowDate.getSeconds();
var ms = NowDate.getMilliseconds();
//console.log("[anpr]snap_" + h + '_' + m + '_' + s);
if (g_h == -1 || g_m == -1 || g_s == -1 || g_ms == -1) {
g_h = h;
g_m = m;
g_s = s;
g_ms = ms;
}
var imgUrl = 'http://' + window.location.hostname + ":" + GetUrlPort() + '/getimage_HD?' + 'lpr_' + h + '_' + m + '_' + s + '_' + ms;
g_imgUrl = imgUrl;
if (get_just_change_lpr() == 1) {
document.getElementById('destImage').src = g_imgUrl;
set_just_change_lpr_to_zero();
}
//console.log("websocket here");
wait_data = 0;
};
ws.onclose = function () {
// websocket is closed.
console.log("Connection is closed...");
cancelKeepAlive();
ws = null;
setTimeout(function () {
GetRequest_WebSocket();
}, 1000);
//websocket_reconnect_flag = 1;
//reConnect();
};
ws.onerror = function (e) {
// websocket is error.
console.log("Connection is error");
console.log(e);
//cancelKeepAlive();
//websocket_reconnect_flag = 1;
//reConnect();
ws.close();
}
} else {
// The browser doesn't support WebSocket
//console.log("WebSocket NOT supported by your Browser!");
}
}
var timerID = 0;
function keepAlive() {
var timeout = 5000;
//console.log("keepAlive:" + ws.readyState);
//console.log("wait_data:" + wait_data.toString());
if (ws.readyState != 2)//fail receive
wait_data++;
if (wait_data >= 20)
ws.close();
else
timerID = setTimeout(keepAlive, timeout);
}
function cancelKeepAlive() {
if (timerID) {
clearTimeout(timerID);
}
}