Linux串口编程分析Linux认证考试

文章作者 100test 发表时间 2010:03:26 16:34:03
来源 100Test.Com百考试题网


  这个话题,大家可能再熟悉不过了,网上资料很多,因为这是linux下编程比较重要的一个方面,懂这方面的人很多;这里我只是想给初学者简单的介绍下这方面的知识:

  串口编程其实说白了, 是拿根串口线把电脑和所要控制的机器连接起来,然后在通过编程的方式对下位机进行发送指定的数据或进行控制,或进行传输,然后在接受下位机反馈回来的信息提示是否已经正确。是不是好俗!

  串口是计算机上一种非常通用设备通信的协议,常用PC机上包含的是RS232规格的串口,当然,除了RS232 ,还有RS485和RS422两种规格,用于不同的设备通信;这里主要是介绍RS232串口编程。

  在串口编程中,比较重要的是串口的设置,我们要设置的部分包括波特率,数据位,停止位,奇偶校验位;要注意的是,每台机器的串口默认设置可能是不同的,如 果你没设置这些,仅仅按照默认设置进行发送数据,很可能出现n 多异想不到而又查不出来的情况;所以,在真正通讯前,我们必须设置这些:

  下面就开始介绍这些基本设置的函数,(其实都是些固定框架,程序中稍微改改就行)~o~

  1.设置波特率

  注意每台机器都有输出和输入接受信息的速度 ,所以用cfsetispeed 和cfsetospeed来分别设置;注意到struct termios 这样一个结构,它包括了串口端所有的设置,下面还要用到。它在termios.h中被定义。。还有一个地方比较难以理解,为什么设置了speed_arr 和name_arr两个数组,这是因为在linuxe 下,系统为波特率专门准备了一张表用B38400,B19200......代替,而我们实际上传进去的只能是38400,19200这些值,所以我们拿我们传进去的和name_arr进行比较,如果相等则从系统对照表中取出相应值进行设置,如果不等证明传的值在系统对照表中没有,则不进行设置。

  int speed_arr[] = { B38400, B19200, B9600, B4800, B2400, B1200, B300, //

  B38400, B19200, B9600, B4800, B2400, B1200, B300, }.

  int name_arr[] = {38400, 19200, 9600, 4800, 2400, 1200, 300,

  38400, 19200, 9600, 4800, 2400, 1200, 300, }.

  void set_speed(int fd, int speed)

  {

  int i.

  int status.

  struct termios Opt. //定义了这样一个结构

  tcgetattr(fd,


相关文章


两台linux文件拷贝Linux认证考试
一个硬盘上安装两个Linux操作系统方法Linux认证考试
linuxttyptyptstts概念区别Linux认证考试
FreeBSD_Linux检测硬盘坏道Linux认证考试
Linux串口编程分析Linux认证考试
linux光盘镜像文件制作攻略Linux认证考试
美国虚拟主机linux系统下的安全设置Linux认证考试
Linuxfaxrunqd文件创建问题导致拒绝服务攻击Linux认证考试
Linux操作系统安装GlassfishLinux认证考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛