国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

php 軟件對接硬件 如何實現(xiàn)

一。腦子抽了,想做點(diǎn)不一樣的東西

找了一遍又一遍文檔,最終找了一個視頻,跟我的預(yù)期是很符合的,但是還是有困惑的地方
1.操作流程如下、一個硬件電子秤 ,電子秤稱了東西,php 后臺就能接受到數(shù)據(jù),然后入庫
我找到一片文檔解決方案是 php 的 dio 串口,具體操作如下 ,用一個軟件模擬串口發(fā)送數(shù)據(jù)。后臺接收。這個可以理解,如圖
截圖

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <script src="https://cdn.staticfile.org/jquery/2.2.4/jquery.min.js"></script>
</head>
<body>
<div id="fdsa" class="">
</div>
</body>
<script>
    //假設(shè)每隔秒發(fā)送一次請求
    window.onload = function () {
        getApi();
    }
    function getApi() {
        //設(shè)置時間秒  1000-毫秒  這里設(shè)置你自己想要的時間 
        setTimeout(getApi,1*1000);
        $.ajax({
            url: 'http://localhost/comdemo/com.php',
            type: 'get',
            dataType: 'text',
            success: function (data) {
                //方法中傳入的參數(shù)data為后臺獲取的數(shù)據(jù)
                console.log(data);
                $("#fdsa").append("<br/>"+data);
                }
        })
    }
</script>
</html>
<?php

/**
 * 打開串口
 * $com:串口號,$baud:波特率,$date數(shù)據(jù)位,$stop:停止位
 */
function open_com($com,$baud,$data,$stop)
{
    exec('mode : baud='.$baud.' data='.$data.'. stop='.$stop.' parity=n xon=on');
    // 打開串口
    $ck = dio_open($com . ':', O_RDWR);
    // 如果打開串口失敗,停止腳本,并輸出“打開串口COM1失敗”;
    if (!$ck) {
        die("打開串口" . $com . "失敗");
        return false;
    } else {
        return $ck;
    }
} // end open_com

/**
 * 讀取串口數(shù)據(jù)
 */
function get_com($rs){
    //讀取串口并將讀取到的數(shù)據(jù)賦值給變量‘$shuju’;
    $shuju = dio_read($rs);
    $shuju .= dio_read($rs);
    //這里賦值兩遍是應(yīng)為第一次賦值只能獲取到第一個字符,再賦值一次就能獲得完整字符(我也不知為什么,也就只能用這種笨一點(diǎn)的方法le)
    return $shuju;
} // end get_com

/**
 * 關(guān)閉串口
 */
function close_com($rs)
{
    dio_close($rs);
} // end close_com

$isOpen = open_com($com='COM2', $baud = '9600', $data='8',  $stop = '1');
echo get_com($isOpen);
?>

二、提出疑問

  1. 我怎么知道我的硬件是什么串口號?
  2. 是不是購買特地的電子秤串口類型
  3. 我的想法是,是不是有 usb 的東西連接我的電子秤,然后再通過電腦軟件向我的 前端拋數(shù)據(jù),前端接收到后,通過ajax提交到后臺
2168 2 4
2個回答

稚出

端口是電腦分配的,不是特定的。以win10/11為例查看端口號,打開設(shè)備管理器->端口,然后插入設(shè)備看有哪個端口新增

  • 暫無評論

你的方案不太科學(xué),ajax輪詢效率太低且消耗資源太高,并且即時性差,應(yīng)該用TCP服務(wù)端跟設(shè)備連接,web前端通過websocket實時顯示。
推薦方案:
1、硬件1:電子秤支持232/485接口,支持MODBUS協(xié)議均可,淘寶上搜關(guān)鍵詞“電子秤 485”,出來的都是可以使用的,建議購買基于MODBUS協(xié)議的。
2、硬件2:DTU:推薦品牌有人,型號(有線:USR-N510),(無線G780V2)。
3、軟件:搭建TCP服務(wù)端,可以使用workerman或webman搭建,也可以去市場購買現(xiàn)成的應(yīng)用,如:IOT物聯(lián)網(wǎng)系統(tǒng): http://m.wtbis.cn/app/view/iot
4、操作方法:
(1)找電子秤賣家要到通訊協(xié)議文檔。協(xié)議一般是MODBUS。
(2)協(xié)議里會寫有電子秤的串口參數(shù),一般是9600N81,即波特率:9600,校驗位:NONE,數(shù)據(jù)位:8,停止位:1,將這個參數(shù)配置到DTU里(DTU有對應(yīng)軟件可配置)。
(3)在IOT物聯(lián)網(wǎng)系統(tǒng)里添加設(shè)備,添加TCP設(shè)備和websocket設(shè)備,并且在TCP里配置轉(zhuǎn)發(fā)websocket。并且給TCP設(shè)備配置定時下發(fā)。如下圖



(4)上圖的定時下發(fā),目的是每秒請求一次設(shè)備的當(dāng)前稱重結(jié)果,這個01 03 00 00 00 02 C4 0B,就是文檔里提供的請求數(shù)據(jù)幀,服務(wù)端每隔一秒給DTU發(fā)送一次這個請求幀,DTU收到后轉(zhuǎn)發(fā)給設(shè)備,設(shè)備回復(fù)的數(shù)據(jù)幀也會被DTU轉(zhuǎn)發(fā)給服務(wù)端。
(5)TCP設(shè)備端由于配置了轉(zhuǎn)發(fā)websocket,所以當(dāng)收到這個數(shù)據(jù)幀后,會立即轉(zhuǎn)發(fā)給websocket。
(6)web前臺注冊websocket,連接到服務(wù)端,收到請求幀之后,根據(jù)文檔提供的解析方法,解析出稱重數(shù)據(jù)。

年代過于久遠(yuǎn),無法發(fā)表回答
??