Delicious Bookmark this on Delicious Share on Facebook SlashdotSlashdot It! Digg! Digg



PHP : Function Reference : Direct IO Functions : dio_tcsetattr

dio_tcsetattr

Sets terminal attributes and baud rate for a serial port (PHP 4 >= 4.3.0, PHP 5 <= 5.0.5)
bool dio_tcsetattr ( resource fd, array options )

Example 502. Setting the baud rate on a serial port

<?php

$fd
= dio_open('/dev/ttyS0', O_RDWR | O_NOCTTY | O_NONBLOCK);

dio_fcntl($fd, F_SETFL, O_SYNC);

dio_tcsetattr($fd, array(
 
'baud' => 9600,
 
'bits' => 8,
 
'stop'  => 1,
 
'parity' => 0
));

while (
1) {

 
$data = dio_read($fd, 256);

 if (
$data) {
     echo
$data;
 }
}

?>

Code Examples / Notes » dio_tcsetattr

healer

It was frustrating at first because I was trying to get my Linux box to talk to an external serial device (a PIC18F452 programmable chip) and the example provided here refers to fcntl() and open() parameters that aren't in the PHP documentation.
I finally found out what does what through the man pages:
man open
man fcntl
still haven't gotten it to work, or how to reset the ttySx, but thought it may help someone...


daniel widyanto kunilkuda

I'm using PHP to interface my AVR microcontroller in /dev/ttyS0. I bet someone else does the same.
Here's some hint :
- dio_tcsetattr -> is set to enable :
           - RTS / CTS hardware control
           - ICANON mode
             (means that dio_read will wait until 0x0A/LF or other control character is entered in /dev/ttyS0 before it returns reading result, when you use dio_write it will also send 0x0A/LF automatically in the end of the message to your device).
For those who dont need RTS/CTS and/or ICANON, you can use linux command : stty.
Here's mine :
<?php
       exec('stty -F /dev/ttyS0 4800 raw');
       $fd=dio_open('/dev/ttyS0',O_RDWR | O_NOCTTY | O_NDELAY);
       dio_fcntl($fd,F_SETFL,0);
       dio_write($fd,"\x41",1);  // write 0x41 or 'A' to /dev/ttyS0
       
       // Replace result_length with your expected command result length
       for ($i=0;$i < result_length;$i++) {
              $result .=dio_read($fd, 1);
       }
       echo $result;
?>
Refer to :
- Serial Programming Guide for POSIX Operating Systems, http://www.easysw.com/~mike/serial/
- stty man pages


fherrero

For Windows the Example 1 looks same this one:
<?php
exec('mode com1: baud=9600 data=8 stop=1 parity=n xon=on');
// execute 'help mode' in command line of Windows for help
$fd = dio_open('com1:', O_RDWR);
while (1) {
 $data = dio_read($fd, 256);
 if ($data) {
    echo $data;
 }
}
?>


Change Language


Follow Navioo On Twitter
dio_close
dio_fcntl
dio_open
dio_read
dio_seek
dio_stat
dio_tcsetattr
dio_truncate
dio_write
eXTReMe Tracker