PHP - 直接I/O dio_tcsetattr() 函数



PHP 直接I/O dio_tcsetattr() 函数用于设置终端属性。如果您想控制串行通信终端的设置,这非常有用。

语法

以下是 PHP 直接I/O dio_tcsetattr() 函数的语法:

bool dio_tcsetattr ( resource $fd, array $options )

参数

以下是 dio_tcsetattr() 函数的参数:

  • $fd: 它是由 dio_open() 返回的,表示文件描述符。

  • $options: 它是一个关联数组,指定终端选项。

常见的 $options 包括:

  • baud (整数): 波特率(例如,9600、115200)。
  • bits (整数): 数据位(例如,8)。
  • stop (整数): 停止位(例如,1)。
  • parity (整数): 奇偶校验(例如,0 表示无奇偶校验,1 表示奇校验,2 表示偶校验)。

返回值

dio_tcsetattr() 函数在成功时返回 TRUE,失败时返回 FALSE。

PHP 版本

dio_tcsetattr() 函数首次在 PHP 4.3.0 的核心版本中引入,并在 PHP 5.1.0 中继续正常工作。

示例 1

此示例演示了如何使用 PHP 直接I/O dio_tcsetattr() 函数设置基本的终端特性,例如波特率和数据位。

<?php
   // Open serial port
   $fd = dio_open('/dev/ttyS0', O_RDWR | O_NOCTTY | O_NONBLOCK);
   
   // Set terminal attributes
   $options = array(
       'baud' => 9600,
       'bits' => 8,
       'stop' => 1,
       'parity' => 0
   );
   
   if (dio_tcsetattr($fd, $options)) {
       echo "Baud rate set to 9600 successfully.";
   } else {
       echo "Failed to set baud rate.";
   }
   
   dio_close($fd);
?>

输出

以上代码将产生类似以下的结果:

Baud rate set to 9600 successfully.

示例 2

在下面的 PHP 代码中,我们将尝试使用 dio_tcsetattr() 函数并设置更高的波特率 115200。

<?php
   // Open serial port
   $fd = dio_open('/dev/ttyS0', O_RDWR | O_NOCTTY | O_NONBLOCK);
   
   // Set terminal attributes
   $options = array(
       'baud' => 115200,
       'bits' => 8,
       'stop' => 2,
       'parity' => 1 // Odd parity
   );
   
   if (dio_tcsetattr($fd, $options)) {
       echo "Baud rate set to 115200 with odd parity and 2 stop bits successfully.";
   } else {
       echo "Failed to set terminal attributes.";
   }
   
   dio_close($fd);
?> 

输出

运行以上程序后,将生成以下输出:

Baud rate set to 115200 with odd parity and 2 stop bits successfully.

示例 3

此示例演示了如何使用 dio_tcsetattr() 函数设置终端以使用偶校验来检查错误。

<?php
   // Open serial port
   $fd = dio_open('/dev/ttyS0', O_RDWR | O_NOCTTY | O_NONBLOCK);
   
   // Set terminal attributes
   $options = array(
       'baud' => 19200,
       'bits' => 7,
       'stop' => 1,
       'parity' => 2 // Even parity
   );
   
   if (dio_tcsetattr($fd, $options)) {
       echo "Baud rate set to 19200 with even parity successfully.";
   } else {
       echo "Failed to set terminal attributes.";
   }
   
   dio_close($fd);
?> 

输出

这将创建以下输出:

Baud rate set to 19200 with even parity successfully.

示例 4

在以下示例中,我们使用 dio_tcsetattr() 函数设置 230400 的高波特率。

<?php
   // Open serial port
   $fd = dio_open('/dev/ttyS0', O_RDWR | O_NOCTTY | O_NONBLOCK);
   
   // Set terminal attributes
   $options = array(
       'baud' => 230400,
       'bits' => 8,
       'stop' => 1,
       'parity' => 0 // No parity
   );
   
   if (dio_tcsetattr($fd, $options)) {
       echo "Baud rate set to 230400 successfully.";
   } else {
       echo "Failed to set baud rate.";
   }   
   dio_close($fd);
?> 

输出

执行以上程序时,将生成以下输出:

Baud rate set to 230400 successfully.
php_function_reference.htm
广告