我正在使用 PHP 与我的 AVR 微控制器在 /dev/ttyS0 上进行接口。我相信其他人也会这样做。
这里有一些提示
- dio_tcsetattr -> 用于启用
- RTS/CTS 硬件控制
- ICANON 模式
(这意味着当您使用 dio_write 时,dio_read 将等待直到输入 /dev/ttyS0 中输入 0x0A/LF 或其他控制字符后才会返回读取结果,它还会在消息的结尾自动向您的设备发送 0x0A/LF)。
对于那些不需要 RTS/CTS 和/或 ICANON 的人,您可以使用 linux 命令:stty。
这是我的
<?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); // 向 /dev/ttyS0 写入 0x41 或 'A'
// 将 result_length 替换为您预期的命令结果长度
for ($i=0;$i < result_length;$i++) {
$result .=dio_read($fd, 1);
}
echo $result;
?>
参考
- POSIX 操作系统的串行编程指南,http://www.easysw.com/~mike/serial/
- stty 手册页