Python实现轻量级WEB服务器接收HTTP提交的RFID刷卡信息并回应驱动读卡器显示播报语音

这篇具有很好参考价值的文章主要介绍了Python实现轻量级WEB服务器接收HTTP提交的RFID刷卡信息并回应驱动读卡器显示播报语音。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 本示例使用的设备:RFID网络WIFI无线TCP/UDP/HTTP可编程二次开发读卡器POE供电语音-淘宝网 (taobao.com)文章来源地址https://www.toymoban.com/news/detail-655036.html

# -*- coding: utf-8 -*-
import time
import datetime
import socket
import threading

#将中文信息转换编码,显示文字、TTS语音都需要转换--------------------------------------------------
def GetChineseCode(inputstr):
    sdata = bytes(inputstr, encoding='gbk')  # 将中文信息转为bytes
    hexcode=""
    for num in range(0, len(sdata)):
        if num % 2==0:
            hexcode=hexcode+"\\x"
        hexcode=hexcode+ '%02X' % (sdata[num])
    return hexcode

#获取电脑系统日期时间---------------------------------------------------------------------------
def get_time():
    st = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
    st=st[2:19]
    return st

# 接收读卡器发过来的http请求、解析提交上来的信息、回应并驱动读卡器显示文字播报语音--------------------------
def service_client(new_socket):
    request = new_socket.recv(1024).decode('utf-8')
    request_header_lines = request.splitlines()
    requestlines=len(request_header_lines)

    current_time = datetime.datetime.now()
    current_time_str = current_time.strftime("%Y-%m-%d %H:%M:%S.%f")[:-3]
    print(current_time_str)

    i = 0
    while i < requestlines:     #打印出提交信息
        print(request_header_lines[i])
        i += 1
    print("\n")

    if request[0:3]=="GET":
        CommitParameter=request_header_lines[0][request_header_lines[0].find("?")+1:request_header_lines[0].find("HTTP/1.1")-1]
    elif request[0:4]=="POST":
        CommitParameter = request_header_lines[requestlines-1]
        if request_header_lines[5]=="Content-Type: application/json":
            CommitParameter = CommitParameter.replace("{", "")        #JSON信息可以引用JSON类来解析,此处统一转化成字符串处理
            CommitParameter = CommitParameter.replace("\"", "")
            CommitParameter = CommitParameter.replace(":", "=")
            CommitParameter = CommitParameter.replace(",", "&")
            CommitParameter = CommitParameter.replace("}", "")

    FieldsList = CommitParameter.split('&')
    for num in range(0, len(FieldsList)):
        ParaList=FieldsList[num].split('=')
        if ParaList[0]=="info":
            info=ParaList[1]        #接收到的数据包号,需回应该包号
        elif ParaList[0]=="jihao":
            jihao = ParaList[1]     #设备机号(可自编)
        elif ParaList[0]=="cardtype":
            cardtype = ParaList[1]
            typenum=int(cardtype,16) % 16               #typenum=1 ID卡,2 HID卡,3 T5557卡,4 EM4305卡,5 IC卡,6 二代身份证,7 是15693卡,IClass"
            pushortake=int(int(cardtype,16) / 128)      #pushortake=0 表示读卡,>0表示卡离开感应区
        elif ParaList[0]=="card":
            card = ParaList[1]      #接收到的原始16进制卡号,可根据需要自行转换成其他卡号
        elif ParaList[0]=="data":
            data = ParaList[1]      #读取的卡扇区内容
        elif ParaList[0]=="dn":
            dn = ParaList[1]        #设备硬件序列号,出厂时已固化,全球唯一
        elif ParaList[0]=="status":
            status = ParaList[1]    #读卡状态,如密码认证失败为12

    if pushortake == 0:
        ChineseVoice = GetChineseCode("读取卡号[n1]") + card
    else:
        ChineseVoice = GetChineseCode("卡号[n1]") + card + GetChineseCode("离开感应区")

    # Response=1,是固定的回应头信息+接收到的包序号+显示文字 中文要转换编码 {}中的文字可以高亮显示+显示延时秒+蜂鸣器响声代码+[v8]表示本次语音大小 取值 v1 到 v16 TTS中文语音编码
    ResponseStr="Response=1,"+info+",{"+GetChineseCode("卡号")+":}"+(card+"        ")[0:12]+get_time()+",20,1,[v8]"+ChineseVoice
    new_socket.send(ResponseStr.encode("gbk"))
    new_socket.close()
    print(ResponseStr+"\r\n")

def main():
    # 用来完成整体的控制
    tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)       # 1.创建套接字
    tcp_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)     # 设置当服务器先close 即服务器端4次挥手之后资源能够立即释放,这样就保证了,下次运行程序时 可以立即绑定设定的端口
    tcp_server_socket.bind(("", 88))                                            # 2.绑定监听端口
    tcp_server_socket.listen(128)                                               # 3.变为监听套接字

    while True:
        new_socket, client_addr = tcp_server_socket.accept()                    # 4.等待新客户端的链接
        t = threading.Thread(target=service_client, args=(new_socket,))         # 5.为这个客户端服务
        t.start()

    tcp_server_socket.close()       # 关闭监听套接字

if __name__ == '__main__':
    main()

到了这里,关于Python实现轻量级WEB服务器接收HTTP提交的RFID刷卡信息并回应驱动读卡器显示播报语音的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 轻量级服务器nginix:如何实现Spring项目的负载均衡

    点两下这个package,就会在target目录下生成一个war包 把这个warb包拿出来,放在桌面上备用 数据多的话,选择sql文件,直接运行 数据导入成功了 8080和8081都可以 虚拟机的位置: nginx的位置 /usr/local/nginx/conf 两台虚拟机所在的位置: tomcat Tomcat2 运行状态良好 首先在 修改nginx里的

    2024年02月01日
    浏览(48)
  • 开源轻量级分布式文件系统FastDFS本地部署并实现远程访问服务器

    FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。 FastDFS为互联网量身定制,充分考

    2024年02月04日
    浏览(73)
  • 基于lighthouse+长安链的轻量级云服务器产品,实现部署合约、区块链服务一系列操作文档

    长安链已上架一款lighthouse+长安链的轻量级云服务器产品 体验入口:轻量应用服务器Lighthouse_香港轻量服务器_海外轻量服务器-腾讯云 区块链概览 获取区块链ID(DApp需要配置) 合约管理 智能合约git地址:https://git.chainmaker.org.cn/fish/fish1208-chainmaker-lighthouse/-/tree/master/contract EV

    2023年04月08日
    浏览(40)
  • git轻量级服务器gogs、gitea,非轻量级gitbucket

    本文来源:git轻量级服务器gogs、gitea,非轻量级gitbucket, 或 gitcode/gogs,gitea.md 结论: gogs、gitea很相似 确实轻, gitbucket基于java 不轻, 这三者都不支持组织树(嵌套组织 nested group) 只能一层组织。 个人用,基于gogs、gitea,两层结构树 简易办法: 把用户当成第一层节点、该用户的

    2024年02月07日
    浏览(80)
  • Tomcat轻量级服务器

    目录 1.常见系统架构  C-S架构 B-S架构 2.B-S架构系统的通信步骤 3.常见WEB服服务器软件 4.Tomcat服务器的配置 下载安装 环境变量配置 测试环境变量是否配置成功 测试Tomcat服务器是否配置成功  Tomcat窗口一闪而过的解决步骤 Tomcat解决乱码 介绍: C-S架构即Client/Server(客户端/服务

    2023年04月14日
    浏览(140)
  • 轻量级音乐服务器LMS

    本文软件是网友 tommyvinny 推荐的,他在 UNRAID 上安装遇到了权限问题,存在无法建立目录的情况,但似乎在群晖上没遇到。如果你也遇到相似的问题,可以试试命令行模式。 官方体验站点:https://lms-demo.poupon.dev/ 什么是 LMS ? LMS ( Lightweight Music Server )是一款自托管的轻量级

    2024年02月08日
    浏览(47)
  • 三步配置轻量级服务器nginx

    一款轻量级的 Web服务器,反向代理服务器,以及电子邮件代理服务器 主要有三个优点: 占用内存少,并发能力强 Nginx为性能优化开发,能支持五千个左右的并发响应 (Tomcat只有三百到五百) Nginx支持热部署,可以在不间断服务情况下对软件进行升级(不要用关闭服务器)

    2023年04月24日
    浏览(51)
  • 阿里云轻量级服务器安装docker

    前置知识:需要有一台阿里云服务器(或者自己电脑装虚拟机使用centos) docker理念:\\\"一次封装,到处运行\\\",只需要一次配置好环境,换到别的机子上就可以一键部署好,大大简化了操作。 docker:解决了运行环境和配置问题的软件容器。方便做持续集成并有助于整体发布的容器

    2023年04月22日
    浏览(71)
  • 腾讯云轻量级服务器哪个镜像比较好?

    腾讯云轻量应用服务器镜像是什么?镜像就是操作系统,轻量服务器镜像系统怎么选择?如果是用来搭建网站腾讯云百科txybk.com建议选择选择宝塔Linux面板腾讯云专享版,镜像系统根据实际使用来选择,腾讯云百科来详细说下腾讯云轻量应用服务器镜像的选择方法: 轻量应用

    2024年02月06日
    浏览(51)
  • 腾讯云轻量级服务器部署(新手图文教程)

    相信不少同学都想将自己的项目部署到云服务器,让别人通过自己的域名就可以访问到自己的项目,而腾讯云轻量级服务器作为一个小型的应用,支持域名解析和可视化运维等。比较适合新手入门,本文服务器操作系统为Centos7。 1.购买方式 本文主要面向新手,毕竟一般只有

    2024年02月10日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包