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

php 軟件對接硬件 如何實現

一。腦子抽了,想做點不一樣的東西

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

<!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>
    //假設每隔秒發(fā)送一次請求
    window.onload = function () {
        getApi();
    }
    function getApi() {
        //設置時間秒  1000-毫秒  這里設置你自己想要的時間 
        setTimeout(getApi,1*1000);
        $.ajax({
            url: 'http://localhost/comdemo/com.php',
            type: 'get',
            dataType: 'text',
            success: function (data) {
                //方法中傳入的參數data為后臺獲取的數據
                console.log(data);
                $("#fdsa").append("<br/>"+data);
                }
        })
    }
</script>
</html>
<?php

/**
 * 打開串口
 * $com:串口號,$baud:波特率,$date數據位,$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

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

/**
 * 關閉串口
 */
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 的東西連接我的電子秤,然后再通過電腦軟件向我的 前端拋數據,前端接收到后,通過ajax提交到后臺
2300 2 4
2個回答

稚出

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

  • 暫無評論

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



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

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