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實現GET和POST請求
由於 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實現Get和Post請求的方法
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 <= $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