如何在linux上使用串口设备

如何在linux上使用串口设备,第1张

简单的运行 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和连接到dump 设备的最好的串口通信程序。

wvidial or other GUI dial up networking program - 一个内建智能PPP 拨号器。

getty / agetty - agetty 打开一个 tty 端口, 提示登录名称并调用 /bin/login 命令。

grub / lilo configuration - 配置串口为系统控制台。

那样确实就把数据发送了,简单方便就是串口的特点

mov sbuf 0xXX

把数据送到发送缓冲区之后,芯片就自己去处理发送的事情了,程序员就不用管了

串口通信的确认一般由程序员管,比如你发个0xaa过来,我收到了就回个0xbb给你,你收到0xbb,你就知道我收到了你的0xaa,类似这样

经过验证,串口应该没有数据读上来,所以导致读到的数据的数量是0,打印出hello是因为buff本身初始化就是Hello,所以显示是Hello

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

#include <unistd.h>

#include <sys/stat.h>

#include <fcntl.h>

#include <stdlib.h>

int main()

{

static char filename[]="t1.txt"

int fd

int nread, i

char buff[] = "Hello\n"

if((fd = open(filename,O_RDONLY))<0)

{

return -1

}

printf("fd = %d\n",fd)

nread = read(fd,buff,8)

//while( (i = read(fd,buff,512) ) >0 )

// =i

printf("nread=%d,%s\n",nread, buff)

close(fd)

return 0

}


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

原文地址:https://54852.com/yw/8285192.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存