nodejs小程序:輸入電話號,存入buffer形式userinfo信息

var accountTransToJson=require('./mysql/transToJson').accountTransToJson;
var transToJson=require('./mysql/transToJson');
//var accountInJsonTransToBinary=require('./mysql/transToBinary').accountInJsonTransToBinary;
var Account=require('./mysql/Account');
var publish=require('./mqtt-server/mqttpublish/publishToLock');
var async = require('async');

const mysql = require ('mysql');
var mysqlconfig=require('./config/mysql_config/mysql_config').mysqlconfig;
var db = mysql.createConnection(mysqlconfig);

var update ='UPDATE dev_tb SET account  = ? WHERE sn = ?' ;
var insert ='INSERT INTO dev_tb(sn,name,account) VALUES(?,?,?)' ;



function hextobin(bin, hex, len)
{  //max wrote in 2018.4.26
	console.log('hex:',hex);
	var i;
	var upper_str = hex.toUpperCase();
	var dig;
	var base;
	
	//parseInt(j)
	for (i=0; i<len; i++) {
		if (upper_str.charCodeAt(i*2) >= 0x30 && upper_str.charCodeAt(i*2) <= 0x39)
			base = 0x30;
		else if (upper_str.charCodeAt(i*2) >= 0x41 && upper_str.charCodeAt(i*2) <= 0x5a)
			base = 0x41-10;
		else 
			base = 0;
		
		if (base != 0){
			bin[i] = (upper_str.charCodeAt(i*2)-base)<<4;
			//console.log('bin1 :',bin.toString('hex'));
			}
		else
			bin[i] = 0;
		
		if (upper_str.charCodeAt(i*2+1) >= 0x30 && upper_str.charCodeAt(i*2+1) <= 0x39)
			base = 0x30;
		else if (upper_str.charCodeAt(i*2+1) >= 0x41 && upper_str.charCodeAt(i*2+1) <= 0x5a)
			base = 0x41-10;
		else 
			base = 0;
		
		if (base != 0)
			bin[i] |= upper_str.charCodeAt(i*2+1)-base;
		//bin[i] = (((upper_str.charCodeAt(i*2)-65+10)<<4)|(upper_str.charCodeAt(i*2+1)-65+10));
	}
	
	console.log('bin.toString():',bin.toString('hex'));
	//console.log('bin.toString():',bin);
	//console.log("ori str", hex);
	return bin;
}


function AccountBindToBinary(phone)
{     //  2018.5.4 
	/* 	length for eachuserinfo:
		phone :7 bytes(1')			usernickfordev:20 bytes(1')			auth:1 byte(1')	
		pwid:2 byte(15')			pwnick:20 byte(15')							                    
		total: 358 bytes
	*/
	var userinfo=Buffer.alloc(358);
	for(var i=0;i<14-phone.length;i++){
		phone+='a';
	}
	var buf=Buffer.alloc(7); 
	hextobin(buf,phone,7);
	//console.log('buf',buf.toString('hex'));
	buf.copy(userinfo, 0);
	
	//auth
	var authbuf=Buffer.alloc(1); 
	//var hex333=parseInt(json[p].devauth,2).toString(16);console.log('hex333',hex333);
	var authstr='1f';
	hextobin(authbuf,authstr,1);
	authbuf.copy(userinfo,27);
	
	return userinfo;
};

function accountTransToJson(userinfo)
{  //transform json farmat RECORD from device into binary  2018.5.8

	console.log('accountInBinaryToJson  userinfo:',userinfo);
	console.log('userinfo.length',userinfo.length/358);
	var userinfoinjson=[];
	for(var m=0;m<1;m++){
		console.log('for for ');
		//the 1~4th byte ,time  2018.4.27
		var phone=Buffer.alloc(7); 
		userinfo.slice(m*358,m*358+7).copy(phone,0);
		//console.log('phone:',phone.toString('hex'));
		phone=phone.toString('hex').split('a');
		console.log('phone.toString',phone[0]);
		
		//usernickfordev
		var usernickfordev=Buffer.alloc(16);     
		userinfo.slice(m*358+7,m*358+27).copy(usernickfordev,0);
		usernickfordev=usernickfordev.toString().split('\u0000');
		console.log('usernickfordev  :',usernickfordev[0]);		
		
		//auth
		var auth=Buffer.alloc(1);  	
		userinfo.slice(m*358+27,m*358+28).copy(auth,0);
		//console.log('',auth.toString('hex'));
		auth=auth.readUInt8(0).toString(2);
		console.log('auth',auth);
		
		var dig =[];
		for (var a=0;a<5;a++){
			var id=userinfo.readUInt16BE(m*358+28+a*22,m*358+28+a*22+2).toString();
			//console.log('id++++++++++++++++++++++++++++++++++++++++++++++++=:',id);
			if (id!=' '){
				var nick =Buffer.alloc(20); 
				userinfo.slice(m*358+30+a*22,m*358+30+a*22+20).copy(nick,0);
				nick=nick.toString().split('\u0000');
				//console.log('nick:',nick[0]);
			}
			if (id!='0'){
				dig.push(CreateJson2(id,nick[0]));
			}
		}
				
		var fp =[];
		for (var a=5;a<10;a++){
			var id=userinfo.readUInt16BE(m*358+28+a*22,m*358+28+a*22+2).toString();
			//console.log('id++++++++++++++++++++++++++++++++++++++++++++++++=:',id);
			if (id!=' '){
				var nick =Buffer.alloc(20); 
				userinfo.slice(m*358+30+a*22,m*358+30+a*22+20).copy(nick,0);
				nick=nick.toString().split('\u0000');
				//console.log('nick:',nick[0]);
			}
			if (id!='0'){
				fp.push(CreateJson2(id,nick[0]));
			}
		}
				
				
		var ble =[];
		for (var a=10;a<15;a++){
			var id=userinfo.readUInt16BE(m*358+28+a*22,m*358+28+a*22+2).toString();
			//console.log('id++++++++++++++++++++++++++++++++++++++++++++++++=:',id);
			if (id!=' '){
				var nick =Buffer.alloc(20); 
				userinfo.slice(m*358+30+a*22,m*358+30+a*22+20).copy(nick,0);
				nick=nick.toString().split('\u0000');
				//console.log('nick:',nick[0]);
			}
			if (id!='0'){
				ble.push(CreateJson2(id,nick[0]));
			}
		}
		

		userinfoinjson.push(CreateJson(phone[0],usernickfordev[0],auth,ble,dig,fp));
	}
	console.log('userinfoinjson:',JSON.stringify(userinfoinjson));
	return userinfoinjson;
}


//console.log('AccountBindToBinary:',AccountBindToBinary('886987654321'));
//console.log('accountTransToJson:',accountTransToJson(AccountBindToBinary('886987654321')));


db.query(update,[AccountBindToBinary('886963852741'),'4401677LA03ED'],(err,data)=>{  
	if(err)
		console.log('ERROR:',err);
	else{
		console.log('update account in dev_tb success!');
		console.log(' ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^',data.toString());
	}
});	




猜你喜欢

转载自blog.csdn.net/lawrence_loh/article/details/80245561