PHP occasionally communicates directly with the serial port in some applications and needs to communicate with data on the rs232 and rs485 interfaces. Searching for many solutions on the Internet, many problems arise. Here is a summary of the methods of php and serial port communication.
There are basically two ways for php to communicate with the serial port
1. Expand dio through php.
Download the dio extension: http://www.cyberspice.org.uk/downloads/dio-0.0.4rc3.tgz
Open the dio extension in php.ini.
After dio is turned on, communication can be carried out through functions such as dio_open dio_read. But dio is only under Linux by default. It seems that pecl also has compiled php_dio.dll, but when I tested it under win, it actually couldn't be used normally. Maybe my PHP version is too high (5.3.3).
If the dio extension can be opened, there are naturally many examples on the Internet
<?php $c = stream_context_create(array('dio' => 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 extension
This is a third-party extension that can be used in php5 .3.3 is used normally, and my test results are relatively stable, providing single-byte stream communication and asynchronous communication. Regarding single-byte stream communication, I specifically consulted the author and found that the data stream can be read through loop.
It should be noted that the data of ser_write() is character type, but the data of ser_read() is decimal. Therefore, it is best to convert it to hex when sending, and then convert it from decimal to hexadecimal for normal use after receiving.
There is also php_ser as a third-party extension, and the author charges a fee. The free version has no function restrictions, except that the number of bytes sent and received at a time cannot exceed 1024 bytes.
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 address: Forgot, please fill it in later
==========================
Do you want to control serial and parallel port devices such as video, audio or computers by writing PHP language? Now it can become a reality. It can be easily implemented using the open source project php-serial.
For example, you only need to call the deviceSet() method and pass the serial port name in. Then you can use simple reading and writing methods, such as:
#p_code img { border: 0px none ; } <? deviceSet( ' COM2 ' ); $seria --> deviceOpen(); $serial -> sendMessage( ' Sending a message to the port! ' ); $serial -> deviceClose(); ?>
Recommended learning:php video tutorial
The above is the detailed content of How to use serial communication with PHP. For more information, please follow other related articles on the PHP Chinese website!