function TCPClient(ipAdress,pref,unit,clang,langitem,callback){
var net = require('net');
var querystring = require('querystring');
var fs = require('fs');
var paras="";
var descfile={
"Chinese": "./language/decription-cn.json",
"English": "./language/decription-en.json",
"Spanish": "./language/decription-es.json",
"Portuguese": "./language/decription-pt.json",
"Japanese": "./language/decription-ja.json"
};
// 指定连接的tcp server ip,端口
var options = {
host : ipAdress,
//host : '10.200.100.6',
port : 50030
};
var tcp_client = net.Socket();
// 连接 tcp server
tcp_client.connect(options,function(){
console.log('connected to Server');
tcp_client.write('?*\r\n');
})
// 接收数据
tcp_client.on('data',function(data){
paras+=data.toString();
//console.log(data.toString());
if(data.toString().indexOf('! end')>=0){
//console.log(paras);
tcp_client.end();
handleParas();
}
})
tcp_client.on('end',function(){
console.log('tcp_client connection end!');
})
tcp_client.on('error', function () {
console.log('tcp_client error!');
})
function handleParas(){
//var result = querystring.parse(paras,' ','\n');
var result = paras.split('\n');
//console.log(result.toString());
var jsonpa=[];
var j=1;
result.forEach(function(v,i,a){
if(v.indexOf('#')<0 && v.indexOf('!')<0 && v!=""){
var a=v.split(' ');
a[0]=a[0].replace(pref+unit, '')
var newstr='nr:'+j.toString()+','+'name:'+a[0]+','+'value:'+a[1]+','+'comment: ';
jsonpa.push(querystring.parse(newstr,',',':'));
j++;
}
});
//var jsonstr1 = querystring.parse(newstr,'\n',' ');
//var jsonstr2 = querystring.parse(paras,'\n',' ');//把一个字符串转为一个json对象
//console.log(paras);
//console.log(jsonpa);
console.log(jsonpa.length);
//createDescription(jsonpa, 'cn');//通过字典查询参数描述
fs.readFile(descfile[clang], 'utf-8',function(err,data){
var jsontmp = JSON.parse(data);
jsonpa.forEach(function (item1,index1){
jsontmp.forEach(function(item2,index2){
if(item1.name==item2.name)jsonpa[index1].comment=item2.comment;
});
});
createHtml('paras.html',jsonpa);
});
//console.log(clang);
}
function createHtml(fn,jsondata){
var str='<!DOCTYPE html>'+'\r\n';
str+='<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">'+'\r\n';
str+='<link href="media/css/bootstrap.min.css" rel="stylesheet" type="text/css"/>'+'\r\n';
str+='<link href="media/css/bootstrap-responsive.min.css" rel="stylesheet" type="text/css"/>'+'\r\n';
str+='<link href="media/css/font-awesome.min.css" rel="stylesheet" type="text/css"/>'+'\r\n';
str+='<link href="media/css/style-metro.css" rel="stylesheet" type="text/css"/>'+'\r\n';
str+='<link href="media/css/style.css" rel="stylesheet" type="text/css"/>'+'\r\n';
str+='<link href="media/css/style-responsive.css" rel="stylesheet" type="text/css"/>'+'\r\n';
str+='<link href="media/css/uniform.default.css" rel="stylesheet" type="text/css"/>'+'\r\n';
str+='<link rel="stylesheet" type="text/css" href="media/css/select2_metro.css" />'+'\r\n';
str+='<link rel="stylesheet" href="media/css/DT_bootstrap.css" />'+'\r\n';
str+='<div id="portlet-config" class="modal hide">'+'\r\n';
str+='\t<div class="modal-header"><button data-dismiss="modal" class="close" type="button"></button><h3>portlet Settings</h3></div>'+'\r\n';
str+='\t<div class="modal-body"><p>Here will be a configuration form</p></div>'+'\r\n';
str+='</div>'+'\r\n';
str+='<div class="row-fluid"><div class="span12">'+'\r\n';
str+='\t<h3 class="page-title">'+langitem[13][clang]+'<small>从装置读取的信息显示在这里</small></h3>'+'\r\n';
str+='</div></div>'+'\r\n';
str+=createTable('hred','Pa',jsondata);
str+=createTable('blue','value',jsondata);
//str+=createTable('yellow','Eth',jsondata);
str+='<script src="media/js/jquery-1.10.1.min.js" type="text/javascript"></script>'+'\r\n';
str+='<script src="media/js/jquery-migrate-1.2.1.min.js" type="text/javascript"></script>'+'\r\n';
str+='<script src="media/js/bootstrap.min.js" type="text/javascript"></script>'+'\r\n';
str+='<script src="media/js/jquery.blockui.min.js" type="text/javascript"></script>'+'\r\n';
str+='<script type="text/javascript" src="media/js/select2.min.js"></script>'+'\r\n';
str+='<script type="text/javascript" src="media/js/jquery.dataTables.js"></script>'+'\r\n';
str+='<script type="text/javascript" src="media/js/DT_bootstrap.js"></script>'+'\r\n';
str+='<script src="media/js/app.js"></script>'+'\r\n';
str+='<script src="media/js/table-editable1.js"></script>'+'\r\n';
str+='<script src="media/js/table-editable2.js"></script>'+'\r\n';
str+='<script src="media/js/table-editable3.js"></script>'+'\r\n';
str+='<script>jQuery(document).ready(function(){App.init();TableEditable1.init();TableEditable2.init();TableEditable3.init();});</script>'+'\r\n';
fs.writeFile(fn,str,function(err){
if(err)return console.error(err)
});
callback(true);
}
function createTable(color,typeStr, jsondata){
var dstr='';
var jsn='';
if(typeStr=='Pa'){dstr=langitem[14][clang]; jsn='sample_editable_1';}
if(typeStr=='value'){dstr=langitem[20][clang]; jsn='sample_editable_2';}
//if(typeStr=='Eth'){dstr='网络设置';jsn='sample_editable_3';}
var str='';
str+='<div class="portlet box '+ color+'">'+'\r\n';
str+='\t<div class="portlet-title"><div class="caption"><i class="icon-edit"></i>'+dstr+'</div>'+'\r\n';
str+='\t\t<div class="tools"><a href="javascript:;" class="collapse"></a><a href="#portlet-config" data-toggle="modal" class="config"></a><a href="javascript:;" class="reload"></a>'+'\r\n';
str+='\t\t</div>\r\n\t</div>'+'\r\n';
str+='\t<div class="portlet-body">'+'\r\n';
str+='\t\t<div class="clearfix"><div class="btn-group pull-right">'+'\r\n';
str+='\t\t\t<button class="btn dropdown-toggle" data-toggle="dropdown">工具<i class="icon-angle-down"></i></button>'+'\r\n';
str+='\t\t\t<ul class="dropdown-menu pull-right"><li><a href="#">打印</a></li><li><a href="#">保存为PDF</a></li><li><a href="#">保存为EXCEL</a></li></ul>'+'\r\n';
str+='\t\t</div></div>'+'\r\n';
str+='\t\t<table class="table table-striped table-hover table-bordered" id="'+jsn+'">'+'\r\n';
str+='\t\t\t<thead><tr><th width="5%">编号</th><th width="20%">参数</th><th width="20%">定值</th><th width="45%">描述</th><th>Edit</th></tr></thead>'+'\r\n';
str+='\t\t\t<tbody>'+'\r\n';
i=1;
jsondata.forEach(function (item,index){
if(typeStr != 'value'){
if(item.name.indexOf(typeStr)>=0){
str+='\t\t\t\t<tr><td>'+i.toString()
+'</td><td>'+item.name
+'</td><td>'+item.value
+'</td><td>'+item.comment
+'</td><td>'+'<a class="edit" href="javascript:;">Edit</a>'
+'</td></tr>'+'\r\n';
i++;
}}
else{
if(item.name.indexOf('Pa')<0 && item.name.indexOf('Eth')<0){
str+='\t\t\t\t<tr><td>'+i.toString()
+'</td><td>'+item.name
+'</td><td>'+item.value
+'</td><td>'+item.comment
+'</td><td>'+'<a class="edit" href="javascript:;">Edit</a>'
+'</td></tr>'+'\r\n';
i++;
}}
});
str+='\t\t\t</tbody>\r\n\t\t</table>'+'\r\n';
str+='\t</div>\r\n</div>'+'\r\n';
return str;
}
function createDescription(jsondata, langurage){
var dic=[];
var rst={};
var cstr="";
var jsontmp=jsondata;
fs.readFile('pooldict.json', 'utf-8',function(err,data){
var jsondesc = JSON.parse(data);
jsontmp.forEach(function (item1,index1){
cstr="";
dic=item1.name.replace(/[A-Z0-9]/g, " $&").trim().split(" ");//通过正则表达式增加字符串中大写字母前空格用于分割字符串
评论0