基於Web實現遠端與硬體互動

2021-09-14 00:47:29 字數 2683 閱讀 2583

1.實現跟硬體進行資料互動,使用tcp/ip 長連線,意味著,我們要有乙個tcp伺服器,tcp伺服器一方面接受使用者發過來的相關請求指令,另一方面完成傳送指令給指定硬體這一操作。

2.除了tcp 伺服器我們還需要乙個 websocket 伺服器,也有兩個功能,一方面接受客戶端傳送的指令,另一方面處理**使用者指令給tcp伺服器。

tcp 伺服器,websocket 伺服器 使用相對成熟的 workman 實現。

gatewayworker 目錄結構

│ ├── events.php // 開發者只需要關注這個檔案

│ ├── start_gateway.php // gateway程序啟動指令碼,包括埠號等設定

│ ├── start_businessworker.php // businessworker程序啟動指令碼

│ └── start_register.php // 註冊服務啟動指令碼││

└── vendor // gatewayworker框架和workerman框架原始碼目錄,此目錄開發者不用關心

│ └── tcpserver // 其中乙個專案目錄,目錄名可以自定義

│ ├── events.php // 開發者只需要關注這個檔案

│ ├── start_gateway.php // gateway程序啟動指令碼,包括埠號等設定

│ ├── start_businessworker.php // businessworker程序啟動指令碼

│ └── start_register.php // 註冊服務啟動指令碼

│ └── wsserver

│ ├── events.php

│ ├── start_gateway.php

│ ├── start_businessworker.php

│ └── start_register.php ││

└── vendor // gatewayworker框架和workerman框架原始碼目錄,此目錄開發者不用關心

修改以及配置tcpserverstart_register.php下我們不做任何修改,但需要注意的是register 必須是text協議

// register 必須是text協議

$register = new register('text:');

2.修改start_gateway.php

// gateway 程序,這裡使用 tcp 協議,可以用telnet測試

$gateway = new gateway("tcp:");

// gateway名稱,status方便檢視

$gateway->name = 'tcpgateway';

// gateway程序數

$gateway->count = 4;

// 本機ip,分布式部署時使用內網ip

$gateway->lanip = '127.0.0.1';

// 內部通訊起始埠,假如$gateway->count=4,起始埠為4000

// 則一般會使用4000 4001 4002 4003 4個埠作為內部通訊埠

$gateway->startport = 2900;

// 服務註冊位址

$gateway->registeraddress = '127.0.0.1:1238';

3.修改start_businessworker.php

// bussinessworker 程序

$worker = new businessworker();

// worker名稱

$worker->name = 'tcpbusinessworker';

// bussinessworker程序數量

$worker->count = 4;

// 服務註冊位址

$worker->registeraddress = '127.0.0.1:1238';

4.根據上面的操作,我們修改wsserver目錄下的檔案,這個修改跟上面一樣的,但是要注意的是,兩個應用應該是不用的埠,所以需要修改的地方有兩個,start_gateway下的埠,還有start_register埠。!!!! 兩個應用下register 和 gateway 埠一定不一致!!!

好了,到目前為止,我們已經完成了兩個伺服器的建立,那麼我們兩個伺服器之間如何資料共享呢?答案很簡單,我們在ws服務下建立乙個tcp 客戶端即可,讓tcp 客戶端與我們tcp 伺服器連線就可以,然後通過tcp 客戶端直接傳送相關資料給tcp伺服器就可以,當然並不是所有資料都是通過這樣的方式共享的,我們其他資訊還是通過共用乙個資料庫來共享的。相關**如下:

public static function onconnect($client_id)

}public static function onmessage($client_id, $message)

}}

好了,截止目前我們就完成了服務端工作,當然客戶端只是簡單的建立乙個ws連線就好。

基於html 與c 互動

前一陣 與c 互動 發現qt寫頁面實在太醜 於是便使用qwebchannel.js 與c 進行互動 發現使用起來還不錯 下面 看看qwebchannel的用法 首先 新建乙個qwebchannel的物件 new qwebchannel qt.webchanneltransport,function ...

本地庫與遠端庫互動

1.建立本地庫 參照git基礎 2.在github建立乙個遠端庫,獲取其位址 3.為位址取乙個別名 git remote add 別名 位址 4.推送到遠端庫 git push 別名 分支名 5.從遠端庫轉殖到本地庫 建立 origin 遠端位址別名 git clone 位址 有分支的情況下,不能直...

PHP 與web頁面互動

php 與web頁面互動 一 http請求 get方法將表單內容附加在url後傳送,post將表單資訊作為乙個資料塊傳送。get是用來從服 務器上獲 得資料,而post 是用來向服務 器上 傳遞資料。get 是不安全的,因為在 傳輸過程,資料被放在 請求的url 中,而如今現 有的很多伺服器 服 務...