《现代电子技术》2006年第16期摘录:《现代电子技术》2006年第1
-
如发现有乱码,请点击下面链接浏览原文
正文摘录:
《现代电子技术》2006年第16期总第231期胗嵌入式与单片机q此端口的“控制终端”,如果没有强调这一点,那么任何输入(例如键盘的中断信号等)都会影响程序的执行;()N【)El,AY标志告诉I。inux,该程序并不关心DcD信号线所处的状态,即不管另外一端的设备是在运行还是被挂起,如果没有指定该标志,那么程序就会被设置为睡眠状态,直到DCD信号线为低电平为止。在本系统中使用cfsetospeed()和cfsetispeed()函数在termios结构中设置波特率。下面是设置串口参数函数setparms()中设置波特率的部分代码,在此设置了9600,57600,115200三种波特率,其他的波特率可以根据用户的需要添加。tty一一oflagl=CL()CAI。lCREAI-);tcflush(fd,TCIt?L【JSFI);tcsetattr(fd,TCSANOW,&tty);efsetispeed(&.tty,speed)将波特率填入串口输入端,cfsetospeed(8Ltty,speed)将波特率填入串口输出端。ccflag成员包含了2个必须时刻保持使能状态的参数:CI。()CAI。和CREAD,确保了程序在突发的作业控制和挂起信号到来时,不会成为端口的占有者,同时串行口的接口驱动会读取输入的数据。tcflush(fd,TCIFl.LJSt_I)中TCIFLLISt_I表示溢出的数据可以接收,但不读,这个函数用来防止数据溢出时程序崩溃。tcsetattr()函数把对串行口的当前设置赋予termios数据结构,在设置好波特率.并使能本地状态和串行数据接收后,使用tcset。attr()函数选择新的设置。TCSAN()W常数表示,无需等待数据发送或接收结束,所有的改变必须立即生效。当然,还有别的常数可完成等待数据发送或接收结束的功能。绝大多数系统并不支持不同的输入和输出速率,要确保将输入和输出设置一致。1.2奇偶效验位、数据位和停止位设置奇偶效验位、数据位和停止位设置方法很相似,但同波特率设置不同,不能很方便地用函数设置他们,只能使用一些掩码方法实现设置。主要使用tty.ccflag,tty.ciflag,tty.coflag定义各参数量,tty.ccflag用来设置端口控制模式,tty.ciflag控制对于在端口接收到的所有字符的输入处理过程,tty.coflag控制对于在端口接收到的所有字符的输入处理过程。最后在控制串口函数中调用::setparms(comfd,Baud—Box一>CUrrentItem(),8,ParityBox一>CUT_rentItem(),Stop—Box一>currentItern()+1)语句来完成对串口参数设置。串口驱动程序流程图如图2所示。图2串口驱动程序流程图2串口调试助手界面的设计串口调试助手界面是在:Red}tad9.O下的Qt【)esig—ner编程环境下设计的。Qt是由挪威Trolltecl,公司开发的面向对象、高度封装的跨平台C”图形用户界面应用软件框架,他能提供一个开发商业级别、多平台应用的软件环境。在Qt环境下编程如果对C”语言非常熟悉可以直接着手编写源代码;如果只具备一定的cjC”基础,则可以从Qt的GUI工具Qt【)esigner设计人手,再在需要的时候将图形界面生成源代码,在生成的源代码中添加需要添加的程序。本串口凋试助手的设计是从Qt的GUI工具Qt七)esigner设计人手的。该界面主要涉及到4种类:QPushButton,QTextI牙bel,QComboBox,QTextEdit。这4种类也是最常用的类,与其他组件组合就可以执行相应的动作。该串口调试助手的基本流程图如图3所示。首先新建一个工程,然后生成一个Form面板,调整到适当的大小,再在其上放置TextI。abel控件、PushButton控件、ComboBox控件、TextEdit控件。TextLabel控件实现对PushButton控件和ComboBox控件的注释说明;89;O02州;h”∞%¨锨m妯㈣一一邮眦枷删吨一~一一~一~~~~~一一一~舨一一一一~一一。弧~妇一。∞∞。_罟,妇妇~
阅读此文(图):
点击此处在线翻阅