【问题标题】:Sending bytes to serial port from UNIX command line?从 UNIX 命令行向串行端口发送字节?
【发布时间】:2010-09-28 21:54:18
【问题描述】:

我想使用命令行将字节流发送到串行端口。这可能吗?我的串行端口位于我的 Mac 上的 /dev/cu.usbserial-A700dYoR。例如,如果我想将整数 50 或字符串“数据”发送到该串口,我该怎么做?

我对 UNIX 的了解非常有限。

【问题讨论】:

    标签: unix shell serial-port communication byte


    【解决方案1】:
    #!/bin/bash
    
    # Port setting
    stty -F /dev/cu.usbserial-A700dYoR raw speed 9600
    
    echo 'Hello' > /dev/cu.usbserial-A700dYoR
    

    或者类似的东西,如果我没记错的话……已经有几年了。您可能必须是 sudo 才能使用它...

    这是发送文本......不是二进制......将数字 50 作为文本发送

    echo '50' > /dev/cu.usbserial-A700dYoR
    

    将其作为二进制整数发送会更困难。

    【讨论】:

    • echo '2' > /dev/cu.usbserial-A700dYoR 将发送 50 作为单个字节。如果你真的需要发送一个“整数”,你必须发现接收者的“整数”是什么(例如,大端或小端、7 或 8 字节流、编码)。
    • 基本上,我正在尝试将诸如 writeByte(50) 或 0-255 范围内的任何整数之类的内容发送到串行端口。我可以在命令行上指定字节序吗?
    • @TDI1978:如果您是单独发送字节,您可能不需要担心字节顺序。要在 Bash 中发送十进制 50 字节:printf '%c' $'\x32' > /dev/cu.usbserial-A700dYoR
    • ...或printf '%b' '\x32' > /dev/cu.usbserial-A700dYoR
    • 翻译是什么?我将发送值范围从 0 到 255 的字节,所以如果 50 等于 x32,我如何获得该等价物?
    猜你喜欢
    • 2011-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-01
    • 1970-01-01
    • 2013-08-08
    • 1970-01-01
    • 2017-10-26
    相关资源
    最近更新 更多