123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- //const socketClient = require('./socketClient')
- const socketServer = require('./socketServer')
- const Koa = require('koa')
- const app = new Koa()
- var http = require('http');
- var server = http.createServer(app.callback());
- io = require('socket.io').listen(server);
- var protocal = require('./protocal/protocal')
- var sendProtocal = require('./protocal/sendProtocal')
- var command = require('./protocal/command')
- // socket 服务开启
- let socketEvent = null;
- var connectCount = 0;
- var lastBuffer = null;
- io.sockets.on('connection', function (socket) {
- // 取零
- socket.on('startSetZero', function () {
- if(socketEvent!==null) {
- let sendData = sendProtocal.beginSetZero();
- socketEvent.write(sendData)
- }
- })
- // 停止取零
- socket.on('stopSetZero', function () {
- if(socketEvent!==null) {
- let sendData = sendProtocal.endSetZero();
- socketEvent.write(sendData)
- }
- })
- // 开始采集
- socket.on('startCollection', function () {
- if(socketEvent!==null) {
- let sendData = sendProtocal.startCollection();
- socketEvent.write(sendData)
- }
- })
- // 停止采集
- socket.on('stopCollection', function () {
- if(socketEvent!==null) {
- let sendData = sendProtocal.endCollection();
- socketEvent.write(sendData)
- }
- })
- // 复位设备
- socket.on('resetDevice', function () {
- if(socketEvent!==null) {
- let sendData = sendProtocal.resetDevice();
- socketEvent.write(sendData)
- }
- })
- socket.on('syncConnectCount', function () {
- if(connectCount !='0') {
- console.log('已有初始连接' +connectCount +'个')
- }
- io.sockets.emit('connectCount', connectCount);
- })
- })
- socketServer.on('connection',(socket)=>{
- console.log('连接已建立')
- socketEvent = socket
- socketServer.getConnections((err, count)=>{
- if(err){
- console.warn(err);
- } else {
- console.log(`当前有${count}个连接`);
- connectCount = count
- io.sockets.emit('connectCount', count);
- }
- });
- socket.on('data', (data)=>{
- if (lastBuffer !== null) {
- data = Buffer.concat([lastBuffer, data]);
- }
- let flag = 1;
- while(flag){
- let validNumByteArray = new Uint8Array(data.slice(1, 3));
- let validNum = validNumByteArray[0]
- if(data.length >validNum) {
- let validateData = data.slice(0, 1 + 2 +validNum);
- io.sockets.emit('pressureData',validateData);
- lastBuffer = data.slice(1+2+validNum)
- if(lastBuffer.length >=1+2+validNum) {
- data = lastBuffer
- continue;
- }
- } else if(data.length == 1+2+validNum) {
- io.sockets.emit('pressureData',data);
- lastBuffer = null;
- } else {
- lastBuffer = data;
- }
- flag = 0;
- }
- // 处理压力板发过来的数据
- });
- socket.on('error', (err)=>{
- console.warn(err);
- socket.destroy();
- });
- socket.on('end', ()=>{
- io.sockets.emit('disConnectOneClient');
- //socketServer.close();
- });
- })
- module.exports = server
|