消费机 水控机 售饭机 电梯门禁 门禁机
快速寻找产品(请输入产品型号或名称的关键词):
首页> 技术文档

技术文档

Node.Js使用HTTP模块创建Web服务器接收RFID刷卡数据

发布者:广州荣士电子有限公司         发布时间: 2024-10-16 


//引用http模块创建web服务器,监听指定的端口获取以GET、POST、JSON等方式上传的数据,并回应驱动读卡器显示文字、蜂鸣响声、播报语音、开启继电器等操作。 
const http = require('http');
const url = require('url');
const querystring=require('querystring');

const hostname = '192.168.1.211';       //本机IP
const port = 88;                        //监听端口

let info="";            //接收到的数据包号,需回应该包号
let jihao="";           //设备自编机号
let cardtype="";        //刷卡标志,卡类型
let scantype="";        //扫码标志
let heartbeattype="";   //心跳包标志  
let card="";            //接收到的原始16进制卡号,可根据需要自行转换成其他卡号
let data="";            //扇区内容 或 扫码信息  
let input="";           //输入标识
let output="";          //输出标识  
let rand="";            //设备随机数
let dn="";              //设备硬件序列号,出厂时已固化,全球唯一
let status="";          //读卡状态,如12表示卡密码认证失败  
let RepStr="";

const server = http.createServer((request, response) => {
    console.log(request.method);
    console.log(request.url);
    console.log(request.httpVersion);
    console.log(request.headers);
    console.log(request.headers.host);
    
    if(request.method=="GET"){              //解析GET方式提交的数据
        let res = url.parse(request.url, true);
        info=res.query.info;
        jihao=res.query.jihao;
        cardtype=res.query.cardtype;
        scantype=res.query.scantype;
        heartbeattype=res.query.heartbeattype;
        card=res.query.card;
        data=res.query.data;
        input=res.query.input;
        output=res.query.output;
        rand=res.query.rand;
        dn=res.query.dn;
        status=res.query.status;
        if (info !="" && dn !=""){          //通过解析获取到了数据包信息info 和设备硬件信息, 表示确为HTTP 网络读卡器上传的信息,立即回应
            RepStr="Response=1";            //Response=1 固定前缀,我们的设备以此来检索返回信息,表示 驱动设备显示和响声            
            RepStr = RepStr + "," + info;   //提交的信息序号,一定要对应
            RepStr = RepStr + ",Cardno:"+ card+"  welcome to use!";   //读卡器上显示文字,显示中文要转换编码,显示信息不能有半角符逗号
            RepStr = RepStr + ",5";         //显示时长,单位为秒
            RepStr = RepStr + ",2";         //蜂鸣器发声种类,取值范围0-12
            RepStr = RepStr + ",";          //播报的TTS语音,中文语音要转换编码
            RepStr = RepStr + ",20";        //第1继电器开启延时单位,每1个单位延时25mm,20*25表示500mm,取值为0表示关闭继电器
            RepStr = RepStr + ",30";        //第2继电器开启延时单位,以,分隔,总计可以控制8个继电器
            response.end(RepStr);
            console.log(RepStr+"\n\n");
        } 

    }else if(request.method=="POST"){
        let body = '';
        request.on('data', chunk => {
             body += chunk.toString();
        });

        request.on('end', () => {
            console.log(body);       
            let obj=querystring.parse(body);    //解析POST方式提交的数据
            info=obj.info;
            jihao=obj.jihao;
            cardtype=obj.cardtype;
            scantype=obj.scantype;
            heartbeattype=obj.heartbeattype;
            card=obj.card;
            data=obj.data;
            input=obj.input;
            output=obj.output;
            rand=obj.rand;
            dn=obj.dn;
            status=obj.status;

            if (info ==undefined ){
                var jsonParsed = JSON.parse(body);    //解析POST JSON方式提交的数据  
                //console.log(jsonParsed);
                info=jsonParsed.info;
                jihao=jsonParsed.jihao;
                cardtype=jsonParsed.cardtype;
                scantype=jsonParsed.scantype;
                heartbeattype=jsonParsed.heartbeattype;
                card=jsonParsed.card;
                data=jsonParsed.data;
                input=jsonParsed.input;
                output=jsonParsed.output;
                rand=jsonParsed.rand;
                dn=jsonParsed.dn;
                status=jsonParsed.status;
            }

            if (info !="" && dn !=""){          //通过解析获取到了数据包信息info 和设备硬件信息, 表示确为HTTP 网络读卡器上传的信息,立即回应
                RepStr="Response=1";            //Response=1 固定前缀,我们的设备以此来检索返回信息,表示 驱动设备显示和响声            
                RepStr = RepStr + "," + info;   //提交的信息序号,一定要对应
                RepStr = RepStr + ",Cardno:"+ card+"  welcome to use!";   //读卡器上显示文字,显示中文要转换编码,显示信息不能有半角符逗号
                RepStr = RepStr + ",5";         //显示时长,单位为秒
                RepStr = RepStr + ",2";         //蜂鸣器发声种类,取值范围0-12
                RepStr = RepStr + ",";          //播报的TTS语音,中文语音要转换编码
                RepStr = RepStr + ",20";        //第1继电器开启延时单位,每1个单位延时25mm,20*25表示500mm,取值为0表示关闭继电器
                RepStr = RepStr + ",30";        //第2继电器开启延时单位,以,分隔,总计可以控制8个继电器
                response.end(RepStr);
                console.log(RepStr+"\n\n");
            } 
        });        
    }   
})

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

 
上一篇:Mifare Desfire Ev1 Ev2 Ev3 准CPU卡读写测试 下一篇:Web Hid Api 浏览器读取IC卡号
     
Guangzhou Rong Shi Electronics Co., Ltd., China 广州荣士电子有限公司 备案/许可证编号:粤ICP备11063836号
TEL  020-22307058    020-82301718
消费机
隐私政策

消费机 水控机 售饭机 电梯门禁 门禁机

网站地图 xml