易截截图软件、单文件、免安装、纯绿色、仅160KB

LINUX串口简明解析[修正版][0919]

LINUX串口简明解析[修正版][0919]
09-14
上周的时候,发了篇文章,关于linux串口的【当然程序师转别人的(还是发布在IBM开发者社区的嘞)】,
虽然当时能跑的通,但这周在用的时候却发现不行了,于是决定仔细研究下linux下串口这东西!
当然那个程序有问题,就要自己重新写啦。。。。。。OTZ 。。。。饿。。。我向来比较懒。。。。
当然研究过程中还是明白了不少东西的
1,解决minicom启动后才能正常读取数据的问题
2.  解决读取数据缺失的问题
3.  学习使用select函式检测串口状态信息
。。。。。。。。。。。。。。。。。。。。。。
当然这次顺带加点自己的分析
串口的配置一般也就是波特率,数据格式这些东西,而linux环境下则通过一名为termios的结构体对其进行配置
其成员如下
                     Termios Structure Members
MemberDescription
c_cflag
Control options
c_lflag
Line options
c_iflag
Input options
c_oflag
Output options
c_cc
Control characters
c_ispeed
Input baud (new interface)
c_ospeed
Output baud (new interface)
看英文就很容易明白了,所以我也不多说啥了。
这个结构体其实很简单,但其中每一项的配置却要复杂的多,实际上我也没有逐项的学习
只是捡有用的看了下,而下面就是关于这些知识的记录。
1.打开串口
const char * serial_port[]={
"/dev/ttyS0",
"/dev/ttyS1",
"/dev/ttyS2",
"/dev/ttyS3",
"/dev/ttyS4"
};
int serial_open(int port)
{
int fd = open(serial_port[port], O_RDWR|O_NONBLOCK);
if (-1 == fd)
{
perror("Can't Open Serial Port");
exit (-1);
}
else
{
fcntl(fd, F_SETFL, 0);
}
return fd;
}
打开时一般可以用O_RDWR ,O_NOCTTY , O_NDELAY这三个参数的组合
分别代表读写[当然有对应只读,只写的,猜都猜到了],第二个告诉系统该串口不被用来作控制终端【没弄明白,反正一般我是不用,见过跟modem通信的程序会用到】
最后那个就是不要等的意思啦。。。。。。
2.配置串口
 typedef
enum { SERIAL_8N1=0, SERIAL_7E1=1, SERIAL_7O1=2, SERIAL_7S1=3 }serial_format;
voi


相关文档:

Linux 下使用命令行发送邮件最简实例

网上的文章可能过于深入,不太适合新手看,这里介绍最简单的几条SMTP指令,仅需要输入很少的命令即可成功发送一封邮件。
其中粗体部分为输入的命令,蓝色部分为可变内容,灰色为服务器应答内容──
[root@localhost ~]# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Esc ......

Linux下如何用语句杀死某个程序运行的所有进程

如何用语句杀死所有oracle带(LOCAL=NO)的进程?
方法一:(进入oracle用户下)
$ a=`ps -ef |grep oracle$ORACLE_SID|grep LOCAL=NO |awk '{print $2}'`
或者 (去除当前grep进程)
$ a=`ps -ef |grep oracle$ORACLE_SID|grep LOCAL=NO |grep -v grep|awk '{print $2}'`
$ echo $a
$ kill -9 $a
方法二:(直接杀)
$ p ......

Linux网络驱动程序编写(三)

 2.4 常用的系统支持
  2.4.1 内存申请和释放
  include/linux/kernel.h里声明了kmalloc()和kfree()。用于在内核模式下申请和释放内存。
  void *kmalloc(unsigned int len,int priority);
  void kfree(void *__ptr);
  与用户模式下的malloc()不同,kmalloc()申 ......

Linux系统的头文件和库文件搜索路径

Include的header文件,连结数据库,系统定义,总共有下列来源指定gcc去那找。
当初在编译时指定的(在~gcc/gcc/collect2.c:locatelib()
写在specs内的
后来用-D -I -L指定的
gcc环境变量设定(编译的时候)
ld.so的环境变量(这是run time的时候)
一、头文件
gcc 在编译时如何去寻找所需要的头文件 :
※所以header fil ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号