网站建设费用是什么科目,制作企业网站是怎么收费的,用自己的服务器做网站,h5用什么网站来做本示例使用的设备#xff1a;RFID网络WIFI无线TCP/UDP/HTTP可编程二次开发读卡器POE供电语音-淘宝网 (taobao.com)
# -*- coding: utf-8 -*-
import time
import datetime
import socket
import threading#将中文信息转换编码#xff0c;显示文字、TTS语音都需要转换-------… 本示例使用的设备RFID网络WIFI无线TCP/UDP/HTTP可编程二次开发读卡器POE供电语音-淘宝网 (taobao.com)
# -*- coding: utf-8 -*-
import time
import datetime
import socket
import threading#将中文信息转换编码显示文字、TTS语音都需要转换--------------------------------------------------
def GetChineseCode(inputstr):sdata bytes(inputstr, encodinggbk) # 将中文信息转为byteshexcodefor num in range(0, len(sdata)):if num % 20:hexcodehexcode\\xhexcodehexcode %02X % (sdata[num])return hexcode#获取电脑系统日期时间---------------------------------------------------------------------------
def get_time():st time.strftime(%Y-%m-%d %H:%M:%S, time.localtime())stst[2:19]return st# 接收读卡器发过来的http请求、解析提交上来的信息、回应并驱动读卡器显示文字播报语音--------------------------
def service_client(new_socket):request new_socket.recv(1024).decode(utf-8)request_header_lines request.splitlines()requestlineslen(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 0while i requestlines: #打印出提交信息print(request_header_lines[i])i 1print(\n)if request[0:3]GET:CommitParameterrequest_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)):ParaListFieldsList[num].split()if ParaList[0]info:infoParaList[1] #接收到的数据包号需回应该包号elif ParaList[0]jihao:jihao ParaList[1] #设备机号(可自编)elif ParaList[0]cardtype:cardtype ParaList[1]typenumint(cardtype,16) % 16 #typenum1 ID卡2 HID卡3 T5557卡4 EM4305卡5 IC卡6 二代身份证7 是15693卡IClasspushortakeint(int(cardtype,16) / 128) #pushortake0 表示读卡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] #读卡状态如密码认证失败为12if pushortake 0:ChineseVoice GetChineseCode(读取卡号[n1]) cardelse:ChineseVoice GetChineseCode(卡号[n1]) card GetChineseCode(离开感应区)# Response1,是固定的回应头信息接收到的包序号显示文字 中文要转换编码 {}中的文字可以高亮显示显示延时秒蜂鸣器响声代码[v8]表示本次语音大小 取值 v1 到 v16 TTS中文语音编码ResponseStrResponse1,info,{GetChineseCode(卡号):}(card )[0:12]get_time(),20,1,[v8]ChineseVoicenew_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(targetservice_client, args(new_socket,)) # 5.为这个客户端服务t.start()tcp_server_socket.close() # 关闭监听套接字if __name__ __main__:main()