当前位置:  技术问答>linux和unix

Linux下串口编程问题

    来源: 互联网  发布时间:2016-07-13

    本文导语:  #include         #include       #include         #include     #include      #include        #include      #include        #include    #define TRUE 1 //初始化串口选项:   void setTermios(struct termios * pNewtio,...

#include        
#include      
#include        
#include    
#include     
#include       
#include     
#include       
#include   


#define TRUE 1

//初始化串口选项:  

void setTermios(struct termios * pNewtio, int uBaudRate)
{
bzero(pNewtio, sizeof(struct termios)); /* clear struct for new port settings */
//8N1
pNewtio->c_cflag = uBaudRate | CS8 | CREAD | CLOCAL;
pNewtio->c_iflag = IGNPAR;
pNewtio->c_oflag = 0;
pNewtio->c_lflag = 0; //non ICANON

/*

initialize all control characters

default values can be found in /usr/include/termios.h, and

are given in the comments, but we don't need them here

*/

pNewtio->c_cc[VINTR] = 0; /* Ctrl-c */
pNewtio->c_cc[VQUIT] = 0; /* Ctrl- */
pNewtio->c_cc[VERASE] = 0; /* del */
pNewtio->c_cc[VKILL] = 0; /* @ */
pNewtio->c_cc[VEOF] = 4; /* Ctrl-d */
pNewtio->c_cc[VTIME] = 5; /* inter-character timer, timeout VTIME*0.1 */
pNewtio->c_cc[VMIN] = 0; /* blocking read until VMIN character arrives */
pNewtio->c_cc[VSWTC] = 0; /* '' */
pNewtio->c_cc[VSTART] = 0; /* Ctrl-q */
pNewtio->c_cc[VSTOP] = 0; /* Ctrl-s */
pNewtio->c_cc[VSUSP] = 0; /* Ctrl-z */
pNewtio->c_cc[VEOL] = 0; /* '' */
pNewtio->c_cc[VREPRINT] = 0; /* Ctrl-r */
pNewtio->c_cc[VDISCARD] = 0; /* Ctrl-u */
pNewtio->c_cc[VWERASE] = 0; /* Ctrl-w */
pNewtio->c_cc[VLNEXT] = 0; /* Ctrl-v */
pNewtio->c_cc[VEOL2] = 0; /* '' */
}



#define BUFSIZE 512

int main(int argc, char **argv)
{
int fd;
int nread;
char buff[BUFSIZE];
struct termios oldtio, newtio;
struct timeval tv;
char *dev ="/dev/ttyS0";
fd_set rfds;
if ((fd = open(dev, O_RDWR | O_NOCTTY))0)
{
printf("wait...n");
if (FD_ISSET(fd, &rfds))
{
nread=read(fd, buff, BUFSIZE);
printf("readlength=%dn", nread);
buff[nread]='';
printf("%sn", buff);
}
}
}
tcsetattr(fd, TCSANOW, &oldtio);
close(fd);
}


这是我在网上找的程序,写串口,能够正常运行,但是有个疑问,就是在运行的时候是怎么实现等待的?那个fd_set这里有什么用啊?这里的等待我是否可以写入其他的程序?
谢谢

|
你还是了解一下 select 模型是如何工作的吧。。。

fd_set 里存放的是你所打开的 串口设备的句柄, 

内核会检查串口上是否有数据可读, 有数据就会填充 fd_set, 并唤醒 select, 

select 超时返回 或者 被 kernel 唤醒, 接着就去检查 fd_set, 看看是否有数据可读。

    
 
 

您可能感兴趣的文章:

  • 在windows中的VMware装了个linux,主板有两个串口,能做windows和linux的串口通信测试么,怎么测试这两个串口在linux是有效
  • linux下几个设备通过串口串行连接,如何协调各串口发送数据
  • Linux 中用java语言写串口程序,提示找不到串口
  • 高分求助:我笔记本没有串口,在linux下要和一个串口设备连,怎么办?
  • 关于linux串口通信中写串口的问题
  • 在虚拟Linux系统下能进行串口通讯吗?最好给个串口通讯的代码!谢谢!
  • linux下串口发送数据用串口精灵接受不到或为全零
  • 嵌入式linux,串口初始化时,无法设置串口属性
  • linux串口驱动该怎么写
  • linux下如何清空串口的输入输出缓存
  • linux下怎么监控串口?
  • vmware 上 linux 串口问题
  • linux下串口通信的问题
  • linux下的串口编程比较熟悉,麻烦帮忙!
  • 在线等待,求助LINUX下串口问题
  • 请教一个linux串口通讯问题?
  • linux 串口打印
  • 请问,那位高手研究过linux下的串口驱动程序?
  • 问一个LINUX下串口的问题
  • 如何在linux上使用串口设备
  • Linux c socket编程:简单的客户端(client)和服务端(server)实现
  • 都说《UNIX环境高级编程》好,对于学linux编程好不好?《Linux下的c编程》《嵌入式系统C编程》那个更适合初学者?各是那个出版社的?(
  • Linux下c/c++ boost安装及并发编程库mpi介绍
  • 我想学Linux编程,请大家推荐几本学习Linux下C/C++编程的书
  • 学Linux编程前要学Unix吗?哪里有学Linux编程的好书下载?
  • 我想学习linux桌面编程,那么有没有必要学习linux的内核以及内核的相关编程呢?
  • unix编程与linux编程有什么区别?
  • linux下编程跟平时的编程有什么区别吗?
  • Linux下的编程指的就是Shell编程吗?
  • 帮我介绍基本linux下编程的书,《Linux上的C编程》这本书怎么样?还有别的书吗?
  • Linux下使用openssl api编程socket编程,为什么要编译啊?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Linux下时钟同步问题:Clock skew detected原因分析及解决方法
  • linux 繁体 汉字输入法 问题 linux 繁体 汉字输入法 问题
  • Linux 下c++开发error while loading shared libraries问题解决
  • 先安装linux,后安装winxp,能否解决正常启动linux的问题不?(初学者问题,很容易回答)
  • 弱弱的一问,linux下的中文问题及网络问题,分不是问题
  • Linux新手问,Linux安装问题。
  • linux下游戏问题。(菜鸟问题)
  • 初学Linux,发现Linux下的版本问题很头痛。【系列问题】
  • 高深问题:有了linux内核源代码如何做成一个linux操作系统
  • 一个很菜的问题,关ARM与linux内核裁剪的问题!
  • vmware装的linux,通过win2000访问linux的web服务器有问题
  • 初次接触linux,关于linux 用户权限问题请教!
  • Linux下是否存在磁盘碎片问题和内存碎片问题?
  • linux开发的应用程序部署到其他linux的问题
  • vmware上装LINUX的问题,WIN7可以拼的通linux的IP,linux拼不通win7的IP
  • Linux互ping在局域网内大量丢包,但是linux和windows互ping就没问题。
  • 最菜的问题—关于linux“动态库”的问题
  • linux下挂载linux分区的问题
  • 一个小问题。Linux下编程语言的问题。
  • linux问题 secureCRT连接的问题 在线等急!~~
  • Linux下环境变量问题以及FLEX安装问题
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • 最菜的问题—关于linux“动态库”的问题 iis7站长之家
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3