1. 程式人生 > >PHP連線裝置,實現通訊和傳送命令

PHP連線裝置,實現通訊和傳送命令

開發的BS架構的軟體(PHP),需要跟裝置進行通訊,在此記錄一下,歡迎各位指正:

1。採用php socket技術使用TCP/IP連線裝置
引數$service_port 連線埠
引數$address 傳送IP地址
引數$in 傳送命令

function Send_socket_connect($service_port, $address, $in) {
//建立 TCP/IP socket$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die("could not create socket!");
    //設定超時時間
    $timeout = 2;
    $time = time();
    //設定非阻塞模式
    @socket_set_nonblock($socket);
    //超時判斷
    while (
[email protected]
_connect($socket, $address, $service_port)) { $err = socket_last_error($socket); // 連線成功,跳出迴圈 if ($err === 10056) { break; } //連線失敗,判斷超時時間,停止 if ((time() - $time) >= $timeout) { socket_close($socket); print('網路異常,請檢查網路連線!!'); exit(); } // 重新整理頻率(250毫秒) usleep(250000); } //設定阻塞模式 @socket_set_block($socket); //傳送命令到裝置 socket_write($socket, $in, strlen($in)); //關閉連線 socket_close($socket); }

Send_socker_xdcoder $buffer為返回值

function Send_socket_xdcoder($service_port, $address, $in) {
    //建立 TCP/IP socket
    $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die("could not create socket!");
    //設定超時時間
    $timeout = 2;
    $time = time();
    //設定非阻塞模式
    @socket_set_nonblock($socket);
    //超時判斷
    while (
[email protected]
_connect($socket, $address, $service_port)) { $err = socket_last_error($socket); // 連線成功 if ($err === 10056) { break; } //連線失敗,判斷超時時間,停止 if ((time() - $time) >= $timeout) { socket_close($socket); echo "<script>alert('網路異常,請檢查網路連線!!');</script>"; exit(); } // 重新整理頻率(250毫秒) usleep(250000); } //設定阻塞模式 @socket_set_block($socket); //傳送命令到裝置 socket_write($socket, $in, strlen($in)); //接收裝置命令返回資料 $buffer = socket_read($socket, 1024, PHP_NORMAL_READ); //關閉連線 socket_close($socket); //輸出返回值 return $buffer; }
2。採用php socket技術使用UDP協議連線裝置,實現通訊和傳送命令

引數$service_port 連線埠
引數$address 傳送IP地址
引數$in 傳送命令
function Send_socket_connect_udp($service_port, $address, $in) {

    //採用php socket技術使用UDP協議連線裝置
    $socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
    @socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array("sec" => 2, "usec" => 0));
    //傳送命令
    @socket_sendto($socket, $in, strlen($in), 0, $address, $service_port);
    @socket_recvfrom($socket, $buffer, 1024, MSG_WAITALL, $address, $service_port);
    //關閉連線
    if (empty($buffer)) {
       echo "<script>alert('網路異常,請檢查網路連線!!');</script>";
    }
}

Send_socket_xdcoder_udp  $buffer 為返回值

function Send_socket_xdcoder_udp($service_port, $address, $in) {

    //採用php socket技術使用UDP協議連線裝置
    $socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
    @socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array("sec" => 2, "usec" => 0));
    //傳送命令
    @socket_sendto($socket, $in, strlen($in), 0, $address, $service_port);
    @socket_recvfrom($socket, $buffer, 1024, MSG_WAITALL, $address, $service_port);
    //關閉連線
    socket_close($socket);
    if (!empty($buffer)) {
        return $buffer;
    } else {
        echo "<script>alert('網路異常,請檢查網路連線!!');</script>";
    }
}

3。採用RS232串列埠技術連線裝置,實現通訊和傳送命令

引數$com  串列埠號
引數$baudratr  波特率
引數$in 傳送命令
function rs232_connect($com, $baudrate, $in) {
    @set_time_limit(10);
    //使用 'windows下設定竄口引數';
    exec("mode " . $com . " BAUD=" . $baudrate . " PARITY=n DATA=8 STOP=1 odsr=off");
    // "開啟埠串列埠$com";
    $f = @fopen($com, 'w+');
    //判斷串列埠是否正常開啟
    if (!$f) {
        //echo "<script>alert('Error when open $com!!');</script>";
        die("Error when open $com");
    }
    //向串列埠傳送資料;
    fwrite($f, $in);
    //關閉埠        
    fclose($f);
    //串列埠操作結束
}
還有一個關於命令16進位制轉換的   
function hexToStr($hex) {
    $string = "";
    for ($i = 0; $i < strlen($hex) - 1; $i+=3) {
        $string.=chr(hexdec($hex[$i] . $hex[$i + 1]));
    }
    return $string;
}





相關推薦

PHP連線裝置實現通訊傳送命令

開發的BS架構的軟體(PHP),需要跟裝置進行通訊,在此記錄一下,歡迎各位指正: 1。採用php socket技術使用TCP/IP連線裝置引數$service_port 連線埠引數$address 傳送IP地址引數$in 傳送命令 function Send_sock

PHP實現連線裝置通訊傳送命令的方法

/** * 採用php socket技術使用TCP/IP連線裝置 * @param string $service_port 連線埠 * @param string $address 傳送IP地址 * @param string $in 傳送命令 * @return

兩臺android裝置間通過OTG-USB連線實現通訊(android裝置間的通訊

public class ChatActivity extends BaseChatActivity {     private final AtomicBoolean keepThreadAlive = new AtomicBoolean(true);     private final List<

原創:PHP利用session實現用戶登錄後回到點擊的頁面(本文以TP為例)

con gop query php代碼 自帶 ttr strpos 手機 roo 1、以下內容純屬原創,請謹慎選擇: ①目的:用戶登錄超時,session過期,點擊後跳轉到登錄頁,登錄成功再跳轉到鼠標點擊的頁面。 ②流程:用戶登錄---session過期---點擊跳

C 語言popen函數實現shell讀取內容

原型 stream printf fclose strong get cmd 包含 文件 1. popen()函數 頭文件:#include <stdio.h> 函數原型:FILE * popen(const char * command, const char

PHP中使用CURL實現GETPOST請求

由於 protocol 對稱加密 即使 匯報 bst 接口 useragent 拷貝 一、什麽是CURL? cURL 是一個利用URL語法規定來傳輸文件和數據的工具,支持很多協議,如HTTP、FTP、TELNET等。最爽的是,PHP也支持 cURL 庫。使用php的cURL

Vue實現一個學生資訊錄入系統實現錄入刪除

效果如下: 程式碼如下: 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Title&l

Nginx同時監聽IPV6+IPV4實現正向反向

nginx.conf 配置如下 user root; worker_processes 8; #error_log /opt/server/department/nginx/logs/error.log warn; error_log /opt/server/department

通過socket實現接收傳送圖片檔案

今天採用udp協議實現接收和傳送圖片檔案,圖片格式是bmp。 udp提供面向事務的簡單不可靠資訊傳送服務,具有較好的實時性,它是一種無連線的傳輸層協議,工作效率比TCP高。 udp客戶端程式設計一般步驟: 1 、建立socket套接字 2 、配置ip port 協議簇 3 、se

PHP對接阿里大魚實現簡訊的傳送

背景知識: 手機驗證碼這個功能幾乎哪裡都可以看到,那麼PHP如何實現手機驗證碼的傳送呢?下面介紹PHP對接阿里大魚實現簡訊驗證碼傳送。 1.首先登陸阿里雲,點選控制檯: 2.選擇簡訊服務: 3.由於阿里雲的簡訊服務,需要簽名和模板,因此需要先申請: 4.申

使用Ajax傳遞接收資料實現註冊註冊成功後跳轉

返回狀態資訊實體類省略get和set private String stauts; private String msg; 控制器 @RequestMapping(value = "register", method = RequestMetho

PHP中使用cURL實現GetPost請求的方法

data print str close arr 設置 高級特性 post數據 decode cURL 是一個利用URL語法規定來傳輸文件和數據的工具,支持很多協議,如HTTP、FTP、TELNET等。最爽的是,PHP也支持 cURL 庫。本文將介紹 cURL 的一些高級特

將漢語轉換成拼音實現拼音中文雙重登入

在一次專案中遇到,絕對原創,網上有很多不能用,如果要轉載,請註明出處! 謝謝! using System.Runtime.InteropServices;using System.Runtime.CompilerServices;using System.Data;usin

常用的PHP函式封裝有排序資料庫操作函式

//二分查詢 function bin_sch($array, $low, $high, $k) { if ($low &lt;= $high) { $mid = intval(($low + $high) / 2); if ($array[$mid] ==

JDBC連線資料庫完成註冊登入

第一:建立user表 第二:完成登入和註冊介面 其中註冊介面程式碼 import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; im

【SRH】------node連線mongodb實現增、刪、改、查功能

node連線mongodb 準備工作 1.在專案根目錄下   初始化倉庫,形成node包 npm init -y   2.下載mongodb包

在Android上實現SSL握手實現伺服器客戶端之間Socket互動

public class MySSLSocket extends Activity {      private static final int SERVER_PORT = 50030;//埠號      private static final String SERVER_IP = "218.206.17

自己寫一個迭代器然後重寫list類即MyList類實現部分list一樣的特性

先直接貼程式碼,並附加了詳細註釋 '''示意可迭代物件的定義''' class MyList: '''將此類改為可迭代物件''' def __init__(self, iterable): self.data = [x for x in iterable]

構建一個登入頁面實現使用者名稱密碼的基本驗證

<form action="https://www.baidu.com/" onsubmit="return fn()"> <input type="text" name="userName" /> <input type="password"

StringBuffer與StringBuilder的區別實現原理擴容

StringBuffer與StringBuilder的區別,及實現原理 區別 1、StringBuffer 與 StringBuilder 中的方法和功能完全是等價的, 2、只是StringBuffer 中的方法大都採用了 synchronized