>백엔드 개발 >PHP 문제 >PHP로 직렬 통신을 사용하는 방법

PHP로 직렬 통신을 사용하는 방법

醉折花枝作酒筹
醉折花枝作酒筹앞으로
2021-07-19 17:44:404579검색

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 버전이 너무 높아서 정상적으로 사용할 수 없었습니다.

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에서 정상적으로 사용할 수 있는 타사 확장 프로그램입니다. 상대적으로 안정적이며 단일 바이트 스트림 통신과 비동기 통신을 제공합니다. 단일 바이트 스트림 통신과 관련하여 작성자에게 구체적으로 문의한 결과 루프를 통해 데이터 스트림을 읽을 수 있다는 사실을 발견했습니다.

주의할 점은 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제