国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

PHP實(shí)現(xiàn)輕量級(jí)WEB服務(wù)器接收HTTP提交的RFID刷卡信息并回應(yīng)驅(qū)動(dòng)讀卡器顯示播報(bào)語(yǔ)音

這篇具有很好參考價(jià)值的文章主要介紹了PHP實(shí)現(xiàn)輕量級(jí)WEB服務(wù)器接收HTTP提交的RFID刷卡信息并回應(yīng)驅(qū)動(dòng)讀卡器顯示播報(bào)語(yǔ)音。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

PHP實(shí)現(xiàn)輕量級(jí)WEB服務(wù)器接收HTTP提交的RFID刷卡信息并回應(yīng)驅(qū)動(dòng)讀卡器顯示播報(bào)語(yǔ)音,網(wǎng)絡(luò)讀卡器,18002295132,QQ:954486673,PHP HTTP,PHP WEB,PHP Server,PHP Request,PHP Response

?本示例使用的讀卡器:RFID網(wǎng)絡(luò)WIFI無(wú)線TCP/UDP/HTTP可編程二次開(kāi)發(fā)讀卡器POE供電語(yǔ)音-淘寶網(wǎng) (taobao.com)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-662971.html

<?php

set_time_limit(0);
$BindIp=get_local_ip(); //
$Port=88;               //監(jiān)聽(tīng)端口

if(($socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === FALSE){
    echo 'Failed to initialize the socket:' . socket_strerror(socket_last_error($socket));
    exit;
}

// socket_bind(): 將socket資源綁定到指定地址
if(!socket_bind($socket, $BindIp, $Port)){
    echo 'Failed to bind the port:' . socket_strerror(socket_last_error($socket));
    exit;
}

// socket_listen(): 監(jiān)聽(tīng)socket的連接請(qǐng)求
if(!socket_listen($socket)){
    echo 'Listening port:' . socket_strerror(socket_last_error($socket));
    exit;
}else{echo "HTTP service has been started and is listening on the port:".$BindIp.":".$Port."\n\n";}

while(1){
    try {
        if (($client = socket_accept($socket)) !== FALSE) {
            $content = socket_read($client, 20480);
            $content = trim($content);

            if ($content) {
                $response = AnalyzeData($content); //解析接收到的數(shù)據(jù),并生成回應(yīng)數(shù)據(jù)
                socket_write($client, $response);
                //socket_close($client);
            }
        }
    }
    catch (Exception $e1) {
        echo "Request ERR:".$e1."\n";
    }
}
socket_close($socket);

//解析接收到的數(shù)據(jù),并生成回應(yīng)數(shù)據(jù)驅(qū)動(dòng)讀卡器顯示文字、蜂鳴響聲、播報(bào)語(yǔ)音
function AnalyzeData($string)
{
    $info="";
    $card="";
    $request="";
    $heartbeattype="";
    $ResponseStr="";

    try {
        echo $string . "\n";
        $requestmode = substr($string, 0, 4);
        if ($requestmode == "GET ") {
            $begin = stripos($string, "?") + 1;
            $end = stripos($string, "HTTP/1.1");
            $request = substr($string, $begin, $end - $begin);
        } elseif ($requestmode == "POST") {
            $pattern = "/\s+/";
            $FieldsList = preg_split($pattern, $string);
            $conuts = count($FieldsList);
            $isjson = stripos($string, "application/json");
            $request = $FieldsList[$conuts - 1];
            if ($isjson > 0) {          //可以直接使用JSON來(lái)解板,此處統(tǒng)一替換成字符串處理
                $request = str_replace("{", "", $request);
                $request = str_replace("}", "", $request);
                $request = str_replace("\"", "", $request);
                $request = str_replace(":", "=", $request);
                $request = str_replace(",", "&", $request);
            }
        }
        $Fields = explode("&", $request);
        $conuts = count($Fields);
        for ($p = 0; $p < $conuts; $p++) {
            $para = explode("=", $Fields[$p]);
            switch ($para[0]) {
                case "info":
                    $info = trim($para[1]);   //接收到的數(shù)據(jù)包號(hào),需回應(yīng)該包號(hào)
                    break;
                case "jihao":
                    $jihao = $para[1];  //設(shè)備機(jī)號(hào)(可自編)
                    break;
                case "cardtype":
                    $cardtype = $para[1];
                    $typenum = hexdec($cardtype) % 16;                  //typenum=1 ID卡,2 HID卡,3 T5557卡,4 EM4305卡,5 IC卡,6 二代身份證,7 是15693卡,IClass"
                    $pushortake = intval(hexdec($cardtype) / 128);  //pushortake=0 表示讀卡,>0表示卡離開(kāi)感應(yīng)區(qū)
                    break;
                case "card":
                    $card = trim($para[1]);   //接收到的原始16進(jìn)制卡號(hào),可根據(jù)需要自行轉(zhuǎn)換成其他卡號(hào)
                    break;
                case "data":
                    $data = $para[1];   //讀取的卡扇區(qū)內(nèi)容
                    break;
                case "dn":
                    $dn = trim($para[1]);     //設(shè)備硬件序列號(hào),出廠時(shí)已固化,全球唯一
                    break;
                case "status":
                    $status = $para[1]; //讀卡狀態(tài),如密碼認(rèn)證失敗為12
                    break;
                case "heartbeattype":
                    $heartbeattype = trim($para[1]);  //心跳包標(biāo)識(shí)
                    break;
                case "input":
                    $input = $para[1];  //輸入接口狀態(tài)
                    break;
                case "output":
                    $output = $para[1]; //輸出接口狀態(tài)
                    break;
                case "time":
                    $time = $para[1];   //設(shè)備時(shí)鐘
                    break;
                case "rand":
                    $rand = $para[1];   //隨機(jī)數(shù)
                    break;
            }
        }

        if (strlen($info)>0 and strlen($dn)==16 and $heartbeattype=="1"){ //接收到設(shè)備的心跳包
            //$ResponseStr = "Response=1," . $info . ",,0,0,";             //正式項(xiàng)目可以用這條不顯示文字、不響聲、不播報(bào)語(yǔ)音的指令來(lái)回應(yīng)心跳,此處加入顯示、響聲只是用來(lái)檢測(cè)讀卡器功能
            $ResponseStr = "Response=1," . $info . ",".$dn. GetChineseCode("接收到心跳信息    ").",20,1,";    //正式項(xiàng)目可以用這條不顯示文字、不響聲、不播報(bào)語(yǔ)音的指令來(lái)回應(yīng)心跳,此處加入顯示、響聲只是用來(lái)檢測(cè)讀卡器功能

        }elseif (strlen($info)>0 and strlen($dn)==16 and (strlen($card)>4)){//接收到有效的刷卡數(shù)據(jù)
            if ($pushortake == 0)   //播報(bào)的中文語(yǔ)音,[v8]表示語(yǔ)音大小,取值v1 到 v16, TTS中文語(yǔ)音要轉(zhuǎn)換編碼
                $ChineseVoice = "[v8]" . GetChineseCode("讀取卡號(hào)[n1]") . $card;
            else
                $ChineseVoice = "[v8]" . GetChineseCode("卡號(hào)[n1]") . $card . GetChineseCode("離開(kāi)感應(yīng)區(qū)");

            //此處可加入業(yè)務(wù)對(duì)數(shù)據(jù)庫(kù)的查詢、刪除、增加、修改等操作,結(jié)果以文字、語(yǔ)音信息回應(yīng)

            $DisplayStr = "{" . GetChineseCode("卡號(hào)") . ":}";  //顯示的文字,{}內(nèi)文字可以高亮顯示,中文必須轉(zhuǎn)換編碼,英文字符、數(shù)字等不需要轉(zhuǎn)換
            $DisplayStr = $DisplayStr . substr($card . "        ", 0, 12);
            $DisplayStr = $DisplayStr . substr(date('Y-m-d H:i:s', time()), 2, 17);

            //Response=1是固定的回應(yīng)頭信息+接收的包序號(hào)+顯示文字+顯示延時(shí)秒數(shù)+蜂鳴響聲代碼+TTS語(yǔ)音
            $ResponseStr = "Response=1," . $info . "," . $DisplayStr . ",20,1," . $ChineseVoice;

        }else{
            $ResponseStr = "  ";   //其他未知的信息
        }
        echo $ResponseStr . "\n\n";
        return $ResponseStr;
    }
    catch (Exception $e1) {
        echo "Request ERR:".$e1."\n";
    }
}

//獲取中文漢字GB2312編碼,顯示中文、TTS中文語(yǔ)音必須轉(zhuǎn)換編碼
function GetChineseCode($inputstr){
    $gbkstr=iconv("UTF-8","GB2312",$inputstr);      //中文必段強(qiáng)制使用GB2312編碼格式
    $strlens=strlen($gbkstr);
    $hexcode="";
    for($i=0;$i<$strlens;$i++){
        if($i % 2 ==0) {
            $hexcode = $hexcode . "\\x";
        }
        $byte = ord($gbkstr[$i]);
        $b=substr('00'.dechex($byte ),-2);
        $hexcode=$hexcode.$b;
    }
    return $hexcode;
}

//獲取本機(jī)IP地址------------------------------------------------------------------------------------------------------------------------
function get_local_ip()
{
    $preg = "/\A((([0-9]?[0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))\.){3}(([0-9]?[0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))\Z/";
    //獲取操作系統(tǒng)為win2000/xp、win7的本機(jī)IP真實(shí)地址
    $Netdriv=array();
    exec("ipconfig", $out, $stats);
    if (!empty($out)) {
        foreach ($out AS $row) {
            if (strstr($row, "IP") && strstr($row, ":") && !strstr($row, "IPv6")) {
                $tmpIp = explode(":", $row);
                if (preg_match($preg, trim($tmpIp[1]))) {
                    $Netdriv[]=trim($tmpIp[1]);
                    echo trim($tmpIp[1])."\n";
                }
            }
        }
    }
    //獲取操作系統(tǒng)為linux類型的本機(jī)IP真實(shí)地址
    //exec("ifconfig", $out, $stats);
    //if (!empty($out)) {
    //    if (isset($out[1]) && strstr($out[1], 'addr:')) {
    //        $tmpArray = explode(":", $out[1]);
    //        $tmpIp = explode("", $tmpArray[1]);
    //        if (preg_match($preg, trim($tmpIp[0]))) {
    //            return trim($tmpIp[0]);
    //        }
    //    }
    //}
    if (!empty($Netdriv)) {
        return $Netdriv[0];   //如果有多張網(wǎng)塊,可以修改數(shù)組取值來(lái)綁定相應(yīng)的網(wǎng)卡
    }else{
        return '0.0.0.0';
    }
}

?>

到了這里,關(guān)于PHP實(shí)現(xiàn)輕量級(jí)WEB服務(wù)器接收HTTP提交的RFID刷卡信息并回應(yīng)驅(qū)動(dòng)讀卡器顯示播報(bào)語(yǔ)音的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 輕量級(jí)服務(wù)器nginix:如何實(shí)現(xiàn)Spring項(xiàng)目的負(fù)載均衡

    輕量級(jí)服務(wù)器nginix:如何實(shí)現(xiàn)Spring項(xiàng)目的負(fù)載均衡

    點(diǎn)兩下這個(gè)package,就會(huì)在target目錄下生成一個(gè)war包 把這個(gè)warb包拿出來(lái),放在桌面上備用 數(shù)據(jù)多的話,選擇sql文件,直接運(yùn)行 數(shù)據(jù)導(dǎo)入成功了 8080和8081都可以 虛擬機(jī)的位置: nginx的位置 /usr/local/nginx/conf 兩臺(tái)虛擬機(jī)所在的位置: tomcat Tomcat2 運(yùn)行狀態(tài)良好 首先在 修改nginx里的

    2024年02月01日
    瀏覽(23)
  • 開(kāi)源輕量級(jí)分布式文件系統(tǒng)FastDFS本地部署并實(shí)現(xiàn)遠(yuǎn)程訪問(wèn)服務(wù)器

    開(kāi)源輕量級(jí)分布式文件系統(tǒng)FastDFS本地部署并實(shí)現(xiàn)遠(yuǎn)程訪問(wèn)服務(wù)器

    FastDFS是一個(gè)開(kāi)源的輕量級(jí)分布式文件系統(tǒng),它對(duì)文件進(jìn)行管理,功能包括:文件存儲(chǔ)、文件同步、文件訪問(wèn)(文件上傳、文件下載)等,解決了大容量存儲(chǔ)和負(fù)載均衡的問(wèn)題。特別適合以文件為載體的在線服務(wù),如相冊(cè)網(wǎng)站、視頻網(wǎng)站等等。 FastDFS為互聯(lián)網(wǎng)量身定制,充分考

    2024年02月04日
    瀏覽(116)
  • 基于lighthouse+長(zhǎng)安鏈的輕量級(jí)云服務(wù)器產(chǎn)品,實(shí)現(xiàn)部署合約、區(qū)塊鏈服務(wù)一系列操作文檔

    基于lighthouse+長(zhǎng)安鏈的輕量級(jí)云服務(wù)器產(chǎn)品,實(shí)現(xiàn)部署合約、區(qū)塊鏈服務(wù)一系列操作文檔

    長(zhǎng)安鏈已上架一款lighthouse+長(zhǎng)安鏈的輕量級(jí)云服務(wù)器產(chǎn)品 體驗(yàn)入口:輕量應(yīng)用服務(wù)器Lighthouse_香港輕量服務(wù)器_海外輕量服務(wù)器-騰訊云 區(qū)塊鏈概覽 獲取區(qū)塊鏈ID(DApp需要配置) 合約管理 智能合約git地址:https://git.chainmaker.org.cn/fish/fish1208-chainmaker-lighthouse/-/tree/master/contract EV

    2023年04月08日
    瀏覽(26)
  • git輕量級(jí)服務(wù)器gogs、gitea,非輕量級(jí)gitbucket

    git輕量級(jí)服務(wù)器gogs、gitea,非輕量級(jí)gitbucket

    本文來(lái)源:git輕量級(jí)服務(wù)器gogs、gitea,非輕量級(jí)gitbucket, 或 gitcode/gogs,gitea.md 結(jié)論: gogs、gitea很相似 確實(shí)輕, gitbucket基于java 不輕, 這三者都不支持組織樹(shù)(嵌套組織 nested group) 只能一層組織。 個(gè)人用,基于gogs、gitea,兩層結(jié)構(gòu)樹(shù) 簡(jiǎn)易辦法: 把用戶當(dāng)成第一層節(jié)點(diǎn)、該用戶的

    2024年02月07日
    瀏覽(140)
  • Tomcat輕量級(jí)服務(wù)器

    Tomcat輕量級(jí)服務(wù)器

    目錄 1.常見(jiàn)系統(tǒng)架構(gòu)? C-S架構(gòu) B-S架構(gòu) 2.B-S架構(gòu)系統(tǒng)的通信步驟 3.常見(jiàn)WEB服服務(wù)器軟件 4.Tomcat服務(wù)器的配置 下載安裝 環(huán)境變量配置 測(cè)試環(huán)境變量是否配置成功 測(cè)試Tomcat服務(wù)器是否配置成功? Tomcat窗口一閃而過(guò)的解決步驟 Tomcat解決亂碼 介紹: C-S架構(gòu)即Client/Server(客戶端/服務(wù)

    2023年04月14日
    瀏覽(103)
  • 輕量級(jí)音樂(lè)服務(wù)器LMS

    輕量級(jí)音樂(lè)服務(wù)器LMS

    本文軟件是網(wǎng)友 tommyvinny 推薦的,他在 UNRAID 上安裝遇到了權(quán)限問(wèn)題,存在無(wú)法建立目錄的情況,但似乎在群暉上沒(méi)遇到。如果你也遇到相似的問(wèn)題,可以試試命令行模式。 官方體驗(yàn)站點(diǎn):https://lms-demo.poupon.dev/ 什么是 LMS ? LMS ( Lightweight Music Server )是一款自托管的輕量級(jí)

    2024年02月08日
    瀏覽(26)
  • 三步配置輕量級(jí)服務(wù)器nginx

    三步配置輕量級(jí)服務(wù)器nginx

    一款輕量級(jí)的 Web服務(wù)器,反向代理服務(wù)器,以及電子郵件代理服務(wù)器 主要有三個(gè)優(yōu)點(diǎn): 占用內(nèi)存少,并發(fā)能力強(qiáng) Nginx為性能優(yōu)化開(kāi)發(fā),能支持五千個(gè)左右的并發(fā)響應(yīng) (Tomcat只有三百到五百) Nginx支持熱部署,可以在不間斷服務(wù)情況下對(duì)軟件進(jìn)行升級(jí)(不要用關(guān)閉服務(wù)器)

    2023年04月24日
    瀏覽(25)
  • 阿里云輕量級(jí)服務(wù)器安裝docker

    阿里云輕量級(jí)服務(wù)器安裝docker

    前置知識(shí):需要有一臺(tái)阿里云服務(wù)器(或者自己電腦裝虛擬機(jī)使用centos) docker理念:\\\"一次封裝,到處運(yùn)行\(zhòng)\\",只需要一次配置好環(huán)境,換到別的機(jī)子上就可以一鍵部署好,大大簡(jiǎn)化了操作。 docker:解決了運(yùn)行環(huán)境和配置問(wèn)題的軟件容器。方便做持續(xù)集成并有助于整體發(fā)布的容器

    2023年04月22日
    瀏覽(94)
  • 騰訊云輕量級(jí)服務(wù)器哪個(gè)鏡像比較好?

    騰訊云輕量級(jí)服務(wù)器哪個(gè)鏡像比較好?

    騰訊云輕量應(yīng)用服務(wù)器鏡像是什么?鏡像就是操作系統(tǒng),輕量服務(wù)器鏡像系統(tǒng)怎么選擇?如果是用來(lái)搭建網(wǎng)站騰訊云百科txybk.com建議選擇選擇寶塔Linux面板騰訊云專享版,鏡像系統(tǒng)根據(jù)實(shí)際使用來(lái)選擇,騰訊云百科來(lái)詳細(xì)說(shuō)下騰訊云輕量應(yīng)用服務(wù)器鏡像的選擇方法: 輕量應(yīng)用

    2024年02月06日
    瀏覽(25)
  • 騰訊云輕量級(jí)服務(wù)器部署(新手圖文教程)

    騰訊云輕量級(jí)服務(wù)器部署(新手圖文教程)

    相信不少同學(xué)都想將自己的項(xiàng)目部署到云服務(wù)器,讓別人通過(guò)自己的域名就可以訪問(wèn)到自己的項(xiàng)目,而騰訊云輕量級(jí)服務(wù)器作為一個(gè)小型的應(yīng)用,支持域名解析和可視化運(yùn)維等。比較適合新手入門(mén),本文服務(wù)器操作系統(tǒng)為Centos7。 1.購(gòu)買方式 本文主要面向新手,畢竟一般只有

    2024年02月10日
    瀏覽(34)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包