ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

PhpSerial:没有可用的样式-似乎无法正常工作

2019-10-29 16:32:41  阅读:301  来源: 互联网

标签:raspberry-pi serial-port stty php


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

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

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

// 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上使用串行设备的标准设置,并且我能够使用以下方式在电路中读写数据:

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

我无法理解,但其他人可能会.提前致谢.

解决方法:

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

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

从:

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

至:

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

=>因此,这可以解决“没有可用的stty,无法运行…”错误.查看该线程:https://www.raspberrypi.org/forums/viewtopic.php?f=91&t=100481

我还应该补充一点,例如在写串行数据之前,我必须延迟一下时间.

<?php

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";

标签:raspberry-pi,serial-port,stty,php
来源: https://codeday.me/bug/20191029/1961307.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有