linux打开系统串口,linux 下串口独占方式打开

参考文章: http://blog.csdn.net/rl529014/article/details/51336161

http://blog.csdn.net/lin_fs/article/details/7804494

http://blog.csdn.net/querdaizhi/article/details/7478169

以flock函数打开设备文件打开,是独占整个文件

int fd;

char com_name[]={};

sprintf(com_name,"/dev/ttyS100%d",com_port);

// sprintf(com_name,"/dev/ttyS%d",1);

// printf("before first open\n");

fd = open(com_name, O_RDWR|O_NOCTTY|O_NDELAY);

// fd = open(com_name, O_RDWR|O_EXCL,0444);

if (fd < )

{

perror("open serial port");

return(-);

}

if(flock(fd,LOCK_EX|LOCK_NB)==)

{

printf("the file was not locked.\n");

}

else

{

printf("the file was locked.\n");

close(fd);

return -;

}

if (fcntl(fd, F_SETFL, ) < )

{

perror("fcntl F_SETFL\n");

}

if (isatty(STDIN_FILENO) == )

{

perror("standard input is not a terminal device");

}

return fd;

以fcntl方式打开设备文件:

int fd;

char com_name[]={};

sprintf(com_name,"/dev/ttyS100%d",com_port);

// sprintf(com_name,"/dev/ttyS%d",1);

// printf("before first open\n");

fd = open(com_name, O_RDWR|O_NOCTTY|O_NDELAY);

// fd = open(com_name, O_RDWR|O_EXCL,0444);

if (fd < )

{

perror("open serial port");

return(-);

}

// printf("first open\n");

struct flock lock;

lock.l_type=F_WRLCK;

lock.l_pid=getpid();

lock.l_whence=SEEK_SET;

lock.l_start=;

lock.l_len=;

fcntl(fd,F_GETLK,&lock);

if(lock.l_type != F_UNLCK){

// printf("%d\n", lock.l_type);

return -;

}

lock.l_type=F_WRLCK;

lock.l_pid=getpid();

lock.l_whence=SEEK_SET;

lock.l_start=;

lock.l_len=;

if(fcntl(fd, F_SETLKW,&lock) < ){

perror("fcntl F_SETLKW\n");

}

if (isatty(STDIN_FILENO) == )

{

perror("standard input is not a terminal device");

}

return fd;

F_SETLKW 与  F_SETFL的区别是如果有其他锁阻止该锁被建立,则调用进程进入睡眠状态,等待该锁释放。一旦这个调用开始了等待,就只有在能够进行加锁或者收到信号时才会返回。

而且F_SETFL设置方式为fcntl(STDOUT_FILENO,F_SETFL,flags),而非fcntl(fd, F_SETLKW,&lock),无法建立锁机制。    F_SETFL 与 F_SETLKW 使用差别比较大

Linux下串口编程入门

简介: Linux操作系统从一开始就对串行口提供了很好的支持,本文就Linux下的串行口通讯编程进行简单的介绍. 串口简介  串行口是计算机一种常用的接口,具有连接线少,通讯简单,得到广泛的使用.常用 ...

Linux下串口編程遇到的接收数据错误及原因(0x0d&comma;0x11接收错误)

摘要:Linux下串口编程遇到的接收数据错误及原因 来源:https://dotblogs.com.tw/k/2012/07/24/73572 近日在调试串口的时候发现,另一设备向我ARM板的串口发送 ...

在Linux下的中断方式读取按键驱动程序

// 在Linux下的中断方式读取按键驱动程序 //包含外部中断 休眠 加入poll机制 // 采用异步通知的方式 // 驱动程序发 ---> app接收 (通过kill_fasync()发送) ...

Linux下查看某个进程打开的文件数-losf工具常用参数介绍

Linux下查看某个进程打开的文件数-losf工具常用参数介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在linux操作系统中,一切皆文件.通过文件不仅仅可以访问常规数据,还 ...

&quot&semi;无法启动应用程序,工作组信息文件丢失,或是已被其他用户已独占方式打开&quot&semi;解决办法

当程序用ado的jet4.0方式连接mdb数据库的时候,对于设有access数据库密码的mdb的访问居然报错“无法启动应用程序,工作组信息文件丢失,或是已被其他用户已独占方式打开”. ADOConne ...

linux下串口通信与管理

linux下的串口与windows有一些区别,下面将介绍一下linux下串口通信管理 查看是否支持USB串口: #lsmod | grep usbserial 如果没有信息:sudo apt-get ...

Access无法启动应用程序,工作组信息文件丢失,或是已被其他用户已独占方式打开

使用SQL Server导入有密码的Access数据库内容,连接时出现错误提示: Access无法启动应用程序,工作组信息文件丢失,或是已被其他用户已独占方式打开 参考百度信息,可以点上图中的高级,在 ...

Django项目部署在Linux下以进程方式启动

Django项目部署在Linux下以进程方式启动 这是一篇关于如何在linux下,以后台进程的方式运行服务,命令改改基本上就通用了. 开发完Django项目后,需要把项目部署到linux环境下.当然, ...

Microsoft Jet 数据库引擎打不开文件,它已经被别的用户以独占方式打开,或没有查看数据的权限。

System.Data.OleDb.OleDbException (0x80004005): Microsoft Jet 数据库引擎打不开文件'D:\wwwroot\gonghouxie\wwwroo ...

随机推荐

感知机&lpar;perceptron&rpar;概念与实现

感知机(perceptron) 模型: 简答的说由输入空间(特征空间)到输出空间的如下函数: \[f(x)=sign(w\cdot x+b)\] 称为感知机,其中,\(w\)和\(b\)表示的是感知机 ...

Python中urlretrieve函数

API定义: urllib.request.urlretrieve(url,filename=None,reporthook=None, data=None) 利用urlretrieve() 将数据下 ...

【原创】海量数据处理问题(一) ---- 外排,堆排,K查找的应用

这篇博客源自对一个内存无法处理的词频统计问题的思考,最后给出的解决办法是自己想的,可以肯定这不是最好的解法.但是通过和同学的讨论,仍然感觉这是一个有意义及有意思的问题,所以和大家分享与探讨. 如果有误 ...

centos7安装VLC播放器

centos7安装VLC播放器 1.安装eple 下载地址:https://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noar ...

jQuery1&period;9&lpar;辅助函数&rpar;学习之—— jQuery&period;param&lpar; obj &rpar;&semi; 编辑

jQuery.param( obj );  返回一个String 描述: 创建一个数组或对象序列化的的字符串,适用于一个URL 地址查询字符串或Ajax请求. jQuery.param( obj ); ...

响应式流布局插件DyLay

jQuery插件-Dylay,流布局我们前面介绍过很多,但这个流布局jQuery插件不同的是它的动画效果很不错,大家可以尝试使用下.另外这篇文章中有好几个 ...

文件6&period; 查找替换&period;txt文本文件中的内容

servlet实现对文本文件的查找替换 .jsp界面

选择文本文件:

P1605 迷宫 dfs回溯法

题目背景 迷宫 [问题描述] 给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过.给定起点坐标和 终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案.在迷宫 中移动有上下 ...

css实战——第一天

1.  开发前的准备 1.1配置开发环境   sublime  webstorm  vscode  Hbuilder  atom 1.2建立项目文件夹 主页或是首页    index.html   d ...

POJ3177:Redundant Paths——题解

http://poj.org/problem?id=3177 明显要求桥的一道题. (因为有桥就说明只能从那一条路走,换句话说就是只有一种方法) 求完桥后按照结论(加几条边成双连通图的结论,不会请ba ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值