【问题标题】:rs 232 pin configuration in linux pclinux pc中的rs 232 pin配置
【发布时间】:2014-02-27 04:33:05
【问题描述】:

有很多例子展示了如何通过电脑的串口进行通信。但是有没有办法配置 rs 232 的管脚呢?我只需要将 tx 引脚设置一段时间,然后将其重置,依此类推。有没有办法找到 rs 232 的引脚地址? 谢谢你。如果有地址,那么我们如何访问引脚或更改该地址中引脚的状态?

【问题讨论】:

    标签: c linux serial-port


    【解决方案1】:

    控制引脚

    对于其他引脚 DTR CTS 等,您需要使用 ioctl() 来切换引脚。

    这里有一个简单的例子(没有错误检查)来为 DTR 行做这个:

    #include <termios.h>
    #include <unistd.h>
    #include <sys/ioctl.h>
    
    int f = open( "/dev/ttyS0", O_RDWR | O_NOCTTY);
    int pins;    
    ioctl( f, TIOCMGET, &pins);
    pins = pins | TIOCM_DTR;
    ioctl( f, TIOCMSET, &pins) // the order you do this depends 
    sleep(1);
    ioctl( f, TIOCMGET, &pins);
    pins = pins & ~TIOCM_DTR;
    ioctl( f, TIOCMSET, &pins)
    

    open 和 tty_ioctl 的手册页中描述了各种标志

    发送引脚

    使用 TX 引脚可能有点棘手;理论上输出通常为 1,但是您可以设置一个“中断”一段时间,将其设置为 0。您可能可以使用以下内容,但我还没有尝试过:

    ioctl( f, TIOCSBRK)
    

    注意

    请注意,在传统的 rs232 中,电平理论上是 +/- 12v(介于 +/-3,15V 之间),其中负数为 1,正数为零,这可能与您的预期相反。但是现在很多串口使用TTL或3v3电平代替。

    我在使用 DTR 作为输出 GPIO 的应用程序中使用了上述内容;请记住根据需要使用适当的电阻器或其他缓冲,这样您就不会炸毁 PC 串行端口。

    带有 USB 串行加密狗的 YMMV。

    【讨论】:

    • 在包含文件夹中找不到头文件ioctl.h。
    • /usr/include/sys/ioctl.h
    • 我使用的内核版本是3.2,include里面没有sys文件夹。
    • 但是 /usr/include/linux 和 /usr/include/asm-generic 中有一个 ioctl.h 文件
    • 我发布了解决方案的相关信息,您仍然需要main()等。而且这在用户空间运行,与您的内核版本无关。默认情况下 gcc 会自动查找头文件 /usr/include 。
    【解决方案2】:

    如果您不仅限于 RS232。您还有其他选择

    首先,如果您的 PC 仍然有并行端口,那么它会比 RS232 更好。

    或者,您可以使用一些 USB-GPIO 模块。一些建议:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-11
      • 1970-01-01
      • 2011-06-05
      • 1970-01-01
      相关资源
      最近更新 更多