PHP如何使用串口通信

醉折花枝作酒筹
發布: 2023-03-11 17:36:01
轉載
4536 人瀏覽過

php在部分應用偶爾和串列埠直接通信,需要和rs232、rs485介面上的資料進行通訊。在網路上搜尋眾多解決方案,出現許多問題,這裡總結一下php與串列通訊的方法大全。

PHP如何使用串口通信

php與串列埠通信,基本上有兩種途徑

1.透過php擴充dio。

下載dio擴充:http://www.cyberspice.org.uk/downloads/dio-0.0.4rc3.tgz

在php.ini開啟dio擴充。

dio開啟後可以透過dio_open dio_read等函數進行通訊。但dio預設只是在linux下的,好像pecl也有編譯後的php_dio.dll,但我在win下測試其實無法正常使用,可能是我php版本太高(5.3.3)。

dio擴展如果能打開,網路上自然有很多實例

<?php
$c = stream_context_create(array(&#39;dio&#39; =>
array(‘data_rate’ => 115200,
‘data_bits’ => 8,
‘stop_bits’ => 1,
‘parity’ => 0,
‘is_canonical’ => 1)));
if (PATH_SEPARATOR != “;”) {
$filename = “dio.serial:///dev/ttyS0″;
} else {
$filename = “dio.serial://COM1″;
}
?>
登入後複製

2.PHP_SER擴展

這是第三方擴展,可以在php5 .3.3上正常使用,我測試結果是比較穩定,提供了單字節流通訊和非同步通訊。對於單字節流通訊我還專門請教了作者,發現原來可以透過loop讀取資料流的。

要注意的是ser_write()的資料是字元型,但是ser_read()的資料則是10進位。所以發送的時候最好轉換為hex,接收後由十進位再轉為十六進位才能正常使用。

還有就是php_ser作為第三方擴展,作者是收費的。免費版本沒有功能限制,只是每次收發位元組數不能超過1024位元組。

function x_get_cgqbh() {
$str = ‘at+ver?’;
$str = hexToStr($str);
ser_open( “COM1″, 9600, 8, “None”, “1″, “None” );
if (ser_isopen()) {
return “opened, post data ……”;
}else{
return false;
}
ser_write(“$str”);
sleep(1);
$str = ser_read();
ser_close();
return $str;
}
登入後複製

php_ser位址:忘了,回頭補上

==========================

#你想透過寫php語言去操縱如視頻,音頻或計算機的串併口設備?現在是可以變成現實了。使用php-serial這個開源專案 ,可以很容易地去實作。

例如只要呼叫deviceSet()方法,將串列埠名傳遞進去就可以了,接著就可以使用簡單的讀與寫的方法了,例如:

#p_code img { border: 0px none ; }
<?
deviceSet( &#39; COM2 &#39; );
$seria --> deviceOpen();
$serial -> sendMessage( &#39; Sending a message to the port! &#39; );
$serial -> deviceClose();
?>
登入後複製

推薦學習:php影片教學

以上是PHP如何使用串口通信的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:csdn.net
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板