系统总体设计流程系统总体设计流程主要做的是软件的设计,其中有驱动程序和应用程序的编写,以完成短信的接收,然后根据接收到的内容控制步进机,在反馈信息给用户[11][12]。设计流程如图5-2图5-2 系统总体设计流程图 本文来自辣.文~论^文·网原文请找腾讯324-9114
第6章 系统软件设计
6.1串口通信模块
在嵌入式Linux中,串口是一个字符设备,串口编程与操作文件类似,只需要先打开串口设备文件,再设置相关的参数与属性[7][15],串口流程如图6-1所示。
图6-1 串口通信流程图
要对串口操作还需要以下头文件:
#include <stdio.h> //标准输入输出定义
#include <stdlib.h> //标准函数库定义
#include <unistd.h> //Unix标准函数定义
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h> //文件控制定义
#include <termios.h> //POSIX中断控制定义
#include <errno.h> //错误号定义
在Qt 开发软件中,没有专门用于对终端设备进行操作的类或控件,为了对终端设备进行操作,一种方法就是利用Linux 底层终端函数直接在应用程序中对终端设备进行编程操作,但这样编程比较麻烦,而且无法实现代码重用。另一种方法就是将终端设备的操作函数封装成类的形式,这样不仅编程方便而且可以实现代码重用。所以本系统采第二种方法将串口封装成类,类名为MySerial,它包含了3个函数,分别是:
1.static int set_opt(int fd,int nSpeed, int nBits, char nEvent, int nStop);
该函数实现了设置串口的一些参数,fd是用open()打开的串口设备文件标句柄,nSpeed是波特率,nBits是数据位,nEvent是奇偶效验,nStop是停止位。若失败则返回0。
把三个函数都设置成为静态函数就可方便的进行调用或者设置。
串口能否通信的关键问题是串口属性的设置,在linux中对底层终端操作中有一个用于查询和操作终端的标准接口结构体 termios,所以设置串口属性也就是设置该结构体的各成员值:
struct termio{
struct termios{
tcflag_t c_iflag; /* 输入模式标志 */
tcflag_t c_oflag; /* 输出模式标志 */
tcflag_t c_cflag; /* 控制模式标志*/
tcflag_t c_lflag; /* 本地模式标志*/
tcflag_t c_lflag; /* 行规程类型,一般应用程序不使用*/
cc_t c_cc[NCCS]; /* 控制字符*/
};
设置串口的步骤如下:
(1) 在Linux中,串口以串行终端的方式进行处理,因而,可以使用tcgetattr()函数获取串口的参数
tcgetattr( fd,&oldtio );
(2) 控制模式标志选项有CLOCAL和CREAD,用于不适用MODEM或者是抽口没有
论文网http://www.751com.cn/ CD脚和启用接收装置。
newtio.c_cflag | = CLOCAL | CREAD;
(3) 使用cfsetispeed()/cfsetospeed()函数设置波特率,他们分别用于在termios结构体重设置输入和输出的波特率。
cfsetispeed(&newtio, B9600);
cfsetospeed(&newtio, B9600);
(4) 关闭字符长度掩码,设置8位数据位标志
newtio.c_cflag &= ~CSIZE; 本文来自辣.文~论^文·网原文请找腾讯3249'114
newtio.c_cflag |= CS8;
(5) 如下设置奇偶校验位。
<< 上一页 [11] [12] 下一页
XScale的远程步进机控制系统+GSM短信系统 第11页下载如图片无法显示或论文不完整,请联系qq752018766