php는 때때로 일부 애플리케이션에서 직렬 포트와 직접 통신하며 rs232 및 rs485 인터페이스의 데이터와 통신해야 합니다. 인터넷에서 많은 솔루션을 검색하면 많은 문제가 발생합니다. 다음은 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 버전이 너무 높아서 정상적으로 사용할 수 없었습니다.
dio 확장 프로그램을 열 수 있다면 당연히 인터넷에 많은 예제가 있습니다
<?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 확장 프로그램
이것은 php5.3.3에서 정상적으로 사용할 수 있는 타사 확장 프로그램입니다. 상대적으로 안정적이며 단일 바이트 스트림 통신과 비동기 통신을 제공합니다. 단일 바이트 스트림 통신과 관련하여 작성자에게 구체적으로 문의한 결과 루프를 통해 데이터 스트림을 읽을 수 있다는 사실을 발견했습니다.
주의할 점은 ser_write()의 데이터는 문자형이지만 ser_read()의 데이터는 10진수라는 점입니다. 따라서 송신 시에는 16진수로 변환하고, 수신 후에는 10진수에서 16진수로 변환하여 정상적으로 사용하는 것이 가장 좋습니다.
또한 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 ; } 2ec584dc50901809fa59f0899375f5f3 deviceOpen(); $serial -> sendMessage( ' Sending a message to the port! ' ); $serial -> deviceClose(); ?>
권장 학습: php 비디오 튜토리얼
위 내용은 PHP로 직렬 통신을 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!