有很多例子说明如何通过PC的串口进行通信。 但有没有办法来configurationrs232的引脚? 我只需要将tx引脚设置一段时间,然后重新设置,等等。 有没有办法findrs 232引脚的地址? 谢谢。 如果有一个地址,那么我们如何访问该引脚或改变该地址的引脚状态?
对于其他引脚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,但是你可以在一段时间内设置一个'break',将其设置为0.你可以使用下面的代码,但是我没有尝试过:
ioctl( f, TIOCSBRK)
请注意,在传统的rs232中,电平在理论上为+/- 12v(+/- 3,15V之间),其中负值为1,正值为零,这可能与您所期望的相反。 但是现在很多连续端口都使用TTL或者3v3级别。
我在使用DTR作为输出GPIO的应用程序中使用了上述内容; 记得根据需要使用适当的电阻或其他缓冲,所以你不要炸毁你的PC串行端口。
YMMV与USB串行加密狗。
如果你不只限于RS232。 你有其他的选择
首先,如果你的电脑还有并行端口,这将是比RS232更好的选择。
或者,您可以使用一些USB-GPIO模块。 一些建议: