PHP - Direct I/O dio_tcsetattr() Function



The PHP Direct I/O dio_tcsetattr() function is used to set terminal attributes. If you want to control the settings for the serial communication terminal, this is quite useful.

Syntax

Below is the syntax of the PHP Direct I/O dio_tcsetattr() function −

bool dio_tcsetattr ( resource $fd, array $options )

Parameters

Below are the parameters of the dio_tcsetattr() function −

  • $fd: It is the file descriptor, which is a resource returned by dio_open().

  • $options: It is the associative array specifying the terminal options.

Common $options include −

  • baud (integer): Baud rate (for example, 9600, 115200).
  • bits (integer): Data bits (for example, 8).
  • stop (integer): Stop bits (for example, 1).
  • parity (integer): Parity (for example, 0 for no parity, 1 for odd parity, 2 for even parity).

Return Value

The dio_tcsetattr() function returns TRUE on success or FALSE on failure.

PHP Version

First introduced in core PHP 4.3.0, the dio_tcsetattr() function continues to function easily in PHP 5.1.0.

Example 1

This example shows how to set basic terminal characteristics like baud rate and data bits with the help of PHP Direct I/O dio_tcsetattr() function.

<?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);
?>

Output

The above code will result something like this −

Baud rate set to 9600 successfully.

Example 2

In the below PHP code we will try to use the dio_tcsetattr() function and set a higher baud rate of 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);
?> 

Output

After running the above program, it generates the following output −

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

Example 3

This example demonstrates how to set up the terminal to use even parity to check for errors using the dio_tcsetattr() function.

<?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);
?> 

Output

This will create the below output −

Baud rate set to 19200 with even parity successfully.

Example 4

In the following example, we are using the dio_tcsetattr() function to set high baud rate of 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);
?> 

Output

When the above program is executed, it will produce the below output −

Baud rate set to 230400 successfully.
php_function_reference.htm
Advertisements