【问题标题】:PHP to serial with weird baud ratesPHP以奇怪的波特率串行
【发布时间】:2012-10-17 04:43:16
【问题描述】:

我正在尝试使用 PHP 向 LED 标志发送文本,以便向它发送支持票号。标志本身就是一件作品;它来自 eBay,制作很差,几乎没有文档。在摆弄了一段时间之后,我能够弄清楚它期望的东西被发送到它的方式,并且波特率为 28800。我已经知道如何使用 PHP 与这样的东西进行通信,但我不知道知道如何将波特率更改为非标准的。我尝试了其他波特率,但无法使其正常工作。

【问题讨论】:

  • 我可以用windows或者linux,但是我之前在linux下做过php串口通信,所以比较喜欢。

标签: php serial-port baud-rate


【解决方案1】:

您可能想查看 Linux 中的 setserial 命令 - 使用它,您可以分配一个串行端口以具有非标准速率。

如果您在连接初始化端口之前按如下方式运行 setserial (在服务器初始化脚本或 PHP 中......虽然不确定这是否是个好主意),您应该能够将其关闭:

/bin/setserial /dev/ttyS1 spd_cust baud_base 115200 divisor 4

这是命令中发生的事情:

  • spd_cust 选项告诉操作系统在应用程序请求 38400 时将速度设置为自定义除数。
  • /dev/ttyS1 是串行端口。您可以将其更改为任何内容。
  • baud_base 是除数 4 使用的数字

115200 / 4 = 28800 ...您需要的速度:-)

在您的 PHP 代码中,您将在 38400 连接,这看起来很奇怪,但由于 setserial,您指定的端口将在 28800 运行

【讨论】:

    【解决方案2】:

    Windows 试试

    "mode " . $device . " BAUD=" . $baud

    linux 试试

    "stty -F " . $device . " " . $baud

    我认为这些是正确的发送命令

    【讨论】:

    • PHP串口类是基于stty的。问题是当您尝试指定不是标准速度之一的波特率(2400、4800、9600、14400、19200 等)时,它会引发错误
    • 你有没有试过修改stty程序来接受你的波特率,看这里,mhonarc.axis.se/dev-etrax/msg06754.html
    • 我以前用 C 做过东西,但我从来没有尝试过修改这样的东西。我发现了这个:codase.com/search/… 这似乎是 stty 的来源,但是在查看之后,我不知道如何让它接受新的波特率。有什么地方可以让我详细了解如何做到这一点?
    【解决方案3】:

    【讨论】:

    • 串口类我知道,但它不会让你使用28800作为波特率。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多