Linux下的串口编程

cat /dev/ttyS* :查看串口端口终端
ps -ax :查看进程和控制端的关系


----------------------------
Linux下进行串口通信
-----------------
1.打开串口
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int main(void)
{
int fd;
if((fd=open("/dev/ttyS0",O_REWR|O_NOCTTY))==-1)
perror("can not open the serial port");
return 1;

}
=====================================================================
2.设置串口通信的参数(波特率,数据位,奇偶校验位,数据流控制,)
2.1设置波特率
#include <termios.h>
#include <unistd.h>
//speed_t cfgetispeed(const struct termios *termois_p)
//speed_t cfsetospeed(const struct termios *termois_p);
//成功则是返回termois_p结构中的输入/输出端口的波特率,失败则是返回-1
-----------------------
波特率设置的代码段:

struct termios opt;
//获取串口指向termios结构的指针
togetattr(fd,&opt);

cfgetispeed(&opt,9600);//设置输入的波特率为9600bps
cfgetospeed(&opt,9600);//设置输出的波特率为9600bps
//把修改后的termois数据设置到串口中
tcsetattr(fd,TCANOW,&opt);
----------------------------------------
2.2设置数据位
//数据位是指每个字节中实际数据所占的比特数,要修改的数据位可以通过修改termios结构中的c_cflag成员来实现
struct termios opt;
//获取串口指向termios结构的指针
togetattr(fd,&opt);
//屏蔽其他的标志
opt.c_cflag&=~CSIZE;
//将数据位修改为8bit
opt.c_cflag|=CS8;
//将修改后的termios数据设置到串口中
tcsetattr(fd,TCANON,&opt);
---------------------------------------------
2.3奇偶校验位
2.3.1如果设置偶校验,则需要把termios结构中的c_cflag设置为PARENB,并清除PARODD标志
opt.c_cflag &=PARENB;
opt.c_cflah&=~PARENB;
2.3.2如果设置偶校验,则需要把termios结构中的c_cflag设置为PARENB,和PARODD标志
opt.c_cflag|=(PARODD|PARENB);
----------------------------------------------------
2.4数据流控制
数据流控制就是使用何种方法来标志数据传输的开始和结束
2.4.1不适用数据流控制
opt.c_cflag&=~CRTSCFS;
2.4.2使用硬件数据流控制
opt.c_cflag|=CRTSCTS;
2.4.3使用软件数据流控制
opt.c_cflag|=IXON|XOFF|XANY;
============================================
3.读写串口
int len;
char sbuf[]={hello world!\n};
int send_buf=sizeof(sbuf);
len=write(fd,sbuf,send_buf);
===============================

4.关闭串口
int fd;
close()
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值