PhpSerial:没有可用的样式-似乎无法正常工作 [英] PhpSerial: No stty available -- cant seem to get it working

查看:219
本文介绍了PhpSerial:没有可用的样式-似乎无法正常工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在研究一个项目,该项目涉及使用Raspberry Pi上的UART引脚对串行板进行读写.但是,我已经撞墙了.每当我尝试使用PhpSerial时,我总是会收到错误消息:

I'm working on a project which involves reading and writing to a Serial board, using the UART pins on my Raspberry Pi. However, I have hit a brick wall already. Any time I try use PhpSerial I always get the error:

致命错误:没有可用的stty,无法运行.在第56行的/var/www/PHP-Serial/examples/PhpSerial.php中

Fatal error: No stty available, unable to run. in /var/www/PHP-Serial/examples/PhpSerial.php on line 56

我用输入尝试了许多配置:

I've tried numerous configurations with the input:

// First we must specify the device. This works on both linux and windows (if
// your linux serial device is /dev/ttyS0 for COM1, etc)
$serial->deviceSet("/dev/ttyAMA0");

// We can change the baud rate, parity, length, stop bits, flow control
$serial->confBaudRate(38400);
$serial->confParity("none");
$serial->confCharacterLength(8);
$serial->confStopBits(1);
$serial->confFlowControl("none");

php/lighthttpd作为www-data运行,我尝试将/dev/ttyAMA0锁定给该用户,并且我已将拨出组添加到该用户.我在php.ini中看不到任何禁用功能或任何内容.我也没有按照wiki在pi上使用串行设备的标准设置,并且能够使用

php/lighthttpd is running as www-data, Ive tried chowning the /dev/ttyAMA0 to that user, and I've added the dialout group to said user. I cant see any disable functions or anything in my php.ini. I've also don't the standard setup for using serial devices on the pi as per the wiki, and I am able to read/write data to and from the circuit using

sudo minicom -b 38400 -o -D/dev/ttyAMA0

sudo minicom -b 38400 -o -D /dev/ttyAMA0

以下是错误所指的行:

    if (substr($sysName, 0, 5) === "Linux") {
        $this->_os = "linux";

        if ($this->_exec("stty") === 0) {
            register_shutdown_function(array($this, "deviceClose"));
        } else {
            trigger_error(
                "No stty available, unable to run.",
                E_USER_ERROR
            );
        }

我无法理解,但其他人可能会理解.预先感谢.

I can't make sense of it but someone else might. Thanks in advance.

推荐答案

针对您的问题的解决方案如下:

您必须在PhpSerial.php类中更改以下代码行

The solution to your problem is as follows:

You have to change the following line of code in the PhpSerial.php class

从:

if ($this->_exec("stty") === 0) {

收件人:

if ($this->_exec("stty --version") === 0) {

=>因此,这解决了无可用状态,无法运行...".错误.看到此线程: https://www.raspberrypi.org/forums/viewtopic.php?f = 91& t = 100481

=> This consequently resolves the "No stty available, unable to run..." error. See this thread: https://www.raspberrypi.org/forums/viewtopic.php?f=91&t=100481

我还应该补充一点,例如,在写出串行数据之前,我不得不稍加延迟.

I should also add that I've had to place a delay before I write serial data out e.g.

<?php

error_reporting(E_ALL); ini_set('display_errors','1');

error_reporting(E_ALL); ini_set('display_errors', '1');

include "PhpSerial.php";//serial class: https://github.com/Xowap/PHP-Serial/blob/develop/examples/VS421CPNTA.php

$serial = new phpSerial;
//$serial->deviceSet("/dev/ttyAMA0");
$serial->deviceSet("/dev/ttyACM0");

$serial->confBaudRate(9600);
$serial->confParity("none");
$serial->confCharacterLength(8);
$serial->confStopBits(1);
$serial->deviceOpen();

sleep(3);//delay
$serial->sendMessage("1");

$serial->deviceClose();
echo "Serial message sent! \n";

这篇关于PhpSerial:没有可用的样式-似乎无法正常工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆