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