导航:首页 > 编程系统 > linux串口例程

linux串口例程

发布时间:2023-09-06 03:38:21

① 如何在linux上使用串口设备

简单的运行 dmesg 命令
$ dmesg | grep tty
输出:
[ 37.531286] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[ 37.531841] 00:0b: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[ 37.532138] 0000:04:00.3: ttyS1 at I/O 0x1020 (irq = 18) is a 16550A

setserial 命令
setserial 是一个程序用于设定并/或报告某个串口关联的配置信息。该信息包括串口用到的I/O 端口和中断号,以及Break键是否应被解释为Secure Attention Key 等等。 仅仅是输出如下的命令:
$ setserial -g /dev/ttyS[0123]
输出:
/dev/ttyS0, UART: 16550A, Port: 0x03f8, IRQ: 4
/dev/ttyS1, UART: 16550A, Port: 0x1020, IRQ: 18
/dev/ttyS2, UART: unknown, Port: 0x03e8, IRQ: 4
/dev/ttyS3, UART: unknown, Port: 0x02e8, IRQ: 3

带-g选项的setserial帮助找到你的Linux板子上的物理串口。
Linux 串口控制台程序
一旦串口被确定了,你就能使用许多的工具来配置Linux板子:
minicom- 用于控制modem和连接到mp 设备的最好的串口通信程序。
wvidial or other GUI dial up networking program - 一个内建智能PPP 拨号器。
getty / agetty - agetty 打开一个 tty 端口, 提示登录名称并调用 /bin/login 命令。
grub / lilo configuration - 配置串口为系统控制台。

② 如何在LINUX下编写一个C语言的串口程序

1、参考这个:POSIX操作系统串口编程指南和 UNIX环境高级编程。
2、简单介绍一下:
《POSIX操作系统的串口编程专指南》是在UNIX环境或属PC上对串口进行编程的教程,每一章提供的例程都使用POSIX(Portable Standard for UNIX)终端控制函数,只需极少的修改就可运行在IRIX 、HP-UX、 SunOS、 Solaris、 Digital UNIX、 Linux等大多数类UNIX操作系统。

③ Linux普通用户运行串口

将USB串口设备插入USB口后,会在/dev/目录下生成/dev/ttyUSB0文件(也可能为/dev/ttyUSB1,/dev/ttyUSB2...),
查看此文件

输出为:

c说明表明设备为字符设备文件(d表示目录文件,-表示普通文件,l表示链接文件,b表示块文件),
其中rw-rw----表示root用户作为文件所有者可以读和写,dialout用户组内的用户可以读和写,其他用户不允许读、写和执行(r表示可读,w表示可写,x表示可执行)
因此,需要将当前用户增加到dialout用户组中

④ 想用C#写linux下的串口收发程序

在linux下c#的serialport类仍可用,但是跟windows下有差异,具体如下:

串口名字不同。windows下COM1,linux的话是类似"/dev/ttyS0"

_serialPort=newSerialPort();
_serialPort.PortName="/dev/ttyS0";
_serialPort.BaudRate=9600;
_serialPort.Parity=Parity.None;
_serialPort.StopBits=StopBits.One;

⑤ Linux C 配置串口

配置串口需要包含头文件

其中最核心的配置结构体为:

如何获取该结构呢?我们操作串口跟操作文件一样,也是调用 open() 函数来打开串口,

这样我们就能够得到一个文件描述符 fd ,然后就可以调用 tcgetattr() 函数来获取上述配置结构体了。

Linux 串口默认的配置为:波特率 9600,数据位 8 位,无奇偶校验,停止位 1 位,无 CTS/RTS 。

以下介绍一些常用的配置项:波特率、奇偶校验、数据位、停止位、硬件控制流。

相关接口:

Linux 将串口的波特率分为了输入波特率和输出波特率,不过最常用的场景是将两者设置成一样。

cfgetispeed() 函数获取输入波特率, cfgetospeed() 函数获取输出波特率。 cfsetispeed() 函数设置输入波特率, cfsetospeed() 函数用于设置输出波特率,当然 cfsetspeed() 函数扩展为同时设置输入和输出波特率。

上述接口中的 speed_t 是一系列波特率的标志位,例如常用的 115200 波特率就为 B115200,参考下述选项:

设置奇偶校验位可以通过修改 termios 结构体中的 c_cflag 成员来实现,若无校验,则将 PARENB 位设为 0;若有校验,则 PARENB 为 1。之后再根据 PARODD 来区分奇偶校验, PARODD 为 1 表示奇校验, PARODD 为 0 表示偶校验。例如设置无奇偶校验位:

设置数据位可以通过修改 termios 结构体中的 c_cflag 成员来实现,CS5、CS6、CS7 和 CS8 分别代表数据位 5、6、7 和 8。不过在设置数据位之前,需要先用 CSIZE 来做屏蔽字段,清楚这几个标志位,例如设置数据位为 8 位:

设置停止位可以通过修改 termios 结构体中的 c_cflag 成员来实现, CSTOPB 位为 1 表示 2 位停止位, CSTOPB 位为 0 标志 1 位停止位。例如设置停止位为 1 位:

设置硬件控制流可以通过修改 termios 结构体中的 c_cflag 成员来实现, CRTSCTS 为 1 表示使用硬件控制流,为 0 表示不使用硬件控制流。例如使能硬件控制流:

当然,最后还需要用 tcflush() 抛弃存储在 fd 里的未接收的数据。

再利用接口 tcsetattr() 函数将配置信息写入文件描述符 fd :

这样整个串口最常用的用法就配置完成了。

具体的配置使用可以参考我的项目 HCI-Middleware 里的 hci_transport_uart_linux.c 文件。

参考:

⑥ 请问程序中linux如何获取可用的串口列表

|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下串口编程

这是基本的C语言哈。
|=
就是“或等于”,跟
+=
是一个道理,按位或你肯定知道哈。
1.
newtio.c_cflag
|=PARENB
相当于
newtio.c_cflag
=
netwtio.c_cflag
|
PARENB
意思就是netwtio.c_cflag


PARENB
的结果赋给netwtio.c_cflag
2.
|=的含义跟上面相同,
~的含义是按位取反
newtio.c_cflag
|=~PARENB
相当于
newtio.c_cflag
=
netwtio.c_flag
|
(~PARENB)

阅读全文

与linux串口例程相关的资料

热点内容
图片传入iphone 浏览:730
rs485双机通信程序 浏览:967
怎么托日本的朋友买苹果手机 浏览:145
筑业电力软件怎么倒出文件 浏览:572
全民飞机大战军衔怎么升级 浏览:431
公司自动化编程属于什么 浏览:925
位位用车app在哪里下载 浏览:427
格式工厂iphone铃声 浏览:171
linux设置字符编码 浏览:15
帝王世纪升级哪个兵种 浏览:409
c编程开发软件是什么 浏览:334
二的大写怎么写app 浏览:612
乐视数据删除了怎么找回来 浏览:651
ug编程初始化怎么办 浏览:295
nginxajax配置文件 浏览:467
小程序获取二进制图片 浏览:206
为什么有的数控车编程有百分号 浏览:425
m文件有什么用 浏览:359
宜昌做投标文件多少钱 浏览:166
uc浏览器小说下载那个文件夹 浏览:908

友情链接