如何查看linux下串口是否可用?串口名称等?

如何查看linux下串口是否可用?串口名称等?,第1张

分析如下:

1、查看串口是否可用,可以对串口发送数据比如对com1口,echo lyjie126 >/dev/ttyS0。

2、查看串口名称使用 ls -l /dev/ttyS* 一般情况下串口的名称全部在dev下面,如果你没有外插串口卡的话默认是dev下的ttyS* ,一般ttyS0对应com1,ttyS1对应com2,当然也不一定是必然的;

3、查看串口驱动:cat /proc/tty/drivers/serial。

4、查看串口设备:dmesg | grep ttyS*。

扩展资料

串口控制器顾名思义,就是可通过串口实现控制功能的一台控制器。即由上位机通过串口发送特定协议格式的指令给控制器,进而来控制外围设备或器件,也叫单片机串口控制器。

串口控制器就是1台写入了串口通信程序的单片机控制器,有2种工作模式:

1)上位机监控模式:可由上位机串口控制,实现串口监控

2)脱机控制模式:在通过上位机设置好相关参数后,也可脱离上位机进行独立控制。

串口控制器就是1台写入了串口通信程序的单片机控制器,有2种工作模式:

1)上位机监控模式:可由上位机串口控制,实现串口监控;

2)脱机控制模式:在通过上位机设置好相关参数后,也可脱离上位机进行独立控制。

参考资料来源:百度百科:串口控制器

dmesg | grep tty

下面是一个例子,例子中采用的是USB转串口线(pl2303)。

插入线:

$ dmesg|grep tty

[0.000000] console [tty0] enabled

[1.248404] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A

[1.624590] 00:07: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A

[ 12.618301] usb 5-2: pl2303 converter now attached to ttyUSB0

拔出线:

$ dmesg|grep tty

[0.000000] console [tty0] enabled

[1.248404] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A

[1.624590] 00:07: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A

[ 12.618301] usb 5-2: pl2303 converter now attached to ttyUSB0

[ 375.392303] pl2303 ttyUSB0: pl2303 converter now disconnected from ttyUSB0

这样程序中应该不难判断了吧。

【参考】http://www.cyberciti.biz/faq/find-out-linux-serial-ports-with-setserial/

在Linux环境下,串口名从ttyS0开始依次是ttyS1、ttyS2等。在本程序中,使用ttyS0作为通信串口。在打开ttyS0的时候,选项 O_NOCTTY 表示不能把本串口当成控制终端,否则用户的键盘输入信息将影响程序的执行; O_NDELAY表示打开串口的时候,程序并不关心另一端 的串口是否在使用中。在Linux中,打开串口设备和打开普通文件一样,使用的是open()系统调用。比如我么打开串口设备1也就是COM1,只需要: fd = open("/dev/ttyS0", O_RDWR | O_NOCTTY | O_NDELAY ) 打开的串口设备有很多设置选项。本文中使用int setup_com(int fd)设置。在系统头文件<termios.h>中 定义了终端控制结构struct termios,tcgetattr()和tcsetattr()两个系统函数获得和设置这些属性。结构 struct termios中的域描述的主要属性包括: c_cflag : 控制选项 c_lflag : 线选项 c_iflag : 输入选项 c_oflag :输出选项 c_cc:控制字符 c_ispeed :输入数据波特率 c_ospeed :输出数据波特率如果要设置某个选项,那么就使用"|="运算,如果关闭某个选项就使用"&="和"~"运算。本文使用的各个选项的意义定义如下: c_cflag: CLOCAL 本地模式,不改变端口的所有者 CREAD 表示使能数据接收器 PARENB 表示偶校验 PARODD 表示奇校验 CSTOPB 使用两个停止位 CSIZE对数据的bit使用掩码 CS8 数据宽度是8bit c_lflag: ICANON 使能规范输入,否则使用原始数据(本文使用) ECHO回送(echo)输入数据 ECHOE 回送擦除字符 ISIG 使能SIGINTR,SIGSUSP, SIGDSUSP和 SIGQUIT 信号 c_iflag: IXON 使能输出软件控制 IXOFF使能输入软件控制 IXANY允许任何字符再次开启数据流 INLCR把字符NL(0A)映射到CR(0D) IGNCR忽略字符CR(0D) ICRNL把CR(0D)映射成字符NR(0A) c_oflag: OPOST 输出后处理,如果不设置表示原始数据(本文使用原始数据) c_cc[VMIN]: 最少可读数据 c_cc[VTIME]: 等待数据时间(10秒的倍数)根据以上设置的定义,串口端口设置函数setup_com()定义如下: int setup_com(int fd){ struct termios options tcgetattr(fd, &options) /* Set the baud rates to 38400...*/ cfsetispeed(&options, B38400) cfsetospeed(&options, B38400) /* Enable the receiver and set local mode...*/ options.c_cflag |= (CLOCAL | CREAD) /* Set c_cflag options.*/ options.c_cflag |= PARENB options.c_cflag &= ~PARODD options.c_cflag &= ~CSTOPB options.c_cflag &= ~CSIZE options.c_cflag |= CS8 /* Set c_iflag input options */ options.c_iflag &=~(IXON | IXOFF | IXANY) options.c_iflag &=~(INLCR | IGNCR | ICRNL) options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG) /* Set c_oflag output options */ options.c_oflag &= ~OPOST/* Set the timeout options */ options.c_cc[VMIN] = 0 options.c_cc[VTIME] = 10 tcsetattr(fd, TCSANOW, &options) return 1 } 6.7.2 设置串口通信参数 串口通信参数指的是波特率、数据位、奇偶校验位和停止位。对串口实现控制的时候同样要用到termio结构体。下面将结合具体的代码说明如何设置这些参数。 1.波特率设置 获得端口波特率信息是通过cfgetispeed函数和cfgetospeed函数来实现的。cfgetispeed函数用于获得结构体 termios_p中的输入波特率信息,而cfgetospeed函数用于获得结构体termios_p 中的输出波特率信息。这两个函数的具体信息如表 6.9所示。 表6.9 cfgetispeed函数和cfgetospeed函数 头文件<termios.h> <unistd.h> 函数形式speed_t cfgetispeed(const struct termios *termios_p) speed_t cfgetospeed(const struct termios *termios_p) 返回值成功失败是否设置errno 返回termios_p结构中的输入/输出端口的波特率?1是 cfsetispeed函数和cfsetospeed函数用于设置端口的输入/输出波特率。一般情况下,输入和输出波特率是相等的。cfsetispeed函数和cfsetospeed函数的函数声明信息如表6.10所示。 表6.10 cfsetispeed函数和cfsetospeed函数 头文件<termios.h> <unistd.h> 函数形式int cfsetispeed(struct termios *termios_p, speed_t speed) int cfsetospeed(struct termios *termios_p, speed_t speed) 返回值成功失败是否设置errno 返回termios_p结构中的输入/输出端口的波特率?1是 cfsetispeed函数和cfsetospeed函数会修改结构体termios_p中的波特率信息,其中参数speed可以使用表6.11中所列出的宏。 表6.11 speed参数常用波特率信息宏 定 义波特率(单位:bit/s)宏 定 义波特率(单位:bit/s) B00B18001800 B5050B24002400 B7575B48004800 B110110B96009600 B134134B1920019200 B150150B3840038400 B200200B5760057600 B300300


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7289741.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-03
下一篇 2023-04-03

发表评论

登录后才能评论

评论列表(0条)

保存