Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
linux-pc中的rs232引脚配置_C_Linux_Serial Port - Fatal编程技术网

linux-pc中的rs232引脚配置

linux-pc中的rs232引脚配置,c,linux,serial-port,C,Linux,Serial Port,有很多例子说明了如何通过pc的串行端口进行通信。但是有没有办法配置rs 232的引脚?我只需要设置tx引脚一段时间,然后重置它等等。有没有办法找到RS232引脚的地址? 非常感谢。如果有地址,我们如何访问pin或更改该地址中pin的状态?控制pin 对于DTR CTS等其他管脚,需要使用ioctl()切换管脚 下面是一个简单的示例(无错误检查),用于DTR线路: #include <termios.h> #include <unistd.h> #include <s

有很多例子说明了如何通过pc的串行端口进行通信。但是有没有办法配置rs 232的引脚?我只需要设置tx引脚一段时间,然后重置它等等。有没有办法找到RS232引脚的地址? 非常感谢。如果有地址,我们如何访问pin或更改该地址中pin的状态?

控制pin 对于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)
小心 请注意,在传统的rs232中,电平在概念上为+/-12v(介于+/-3,15V之间),其中负为1,正为零,这可能与您预期的相反。但是现在很多串行端口使用TTL或3v3级别

我在一个应用程序中使用了上述方法,其中我们使用DTR作为输出GPIO;记住根据需要使用适当的电阻器或其他缓冲,这样就不会损坏PC串行端口


带有USB串行加密狗的YMMV。

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

首先,如果你的电脑仍然有并行端口,它将是一个比RS232更好的选择

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


我在include文件夹中找不到头文件ioctl.h。/usr/include/sys/ioctl.h我使用的内核版本是3.2,include中没有名为sys的文件夹。但是/usr/include/linux和/usr/include/asm generic中有一个ioctl.h文件发布了解决方案的相关信息,您仍然需要main(),同样,它在用户空间中运行,不管内核是什么版本。默认情况下,gcc将自动查找标题/usr/include。
ioctl( f, TIOCSBRK)