您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 第10章 串行口通信编程
第10章串行口通信编程目前主流的PC机尤其是笔记本电脑,串口已经很少见到了,但是串口却是嵌入式开发中最常用的硬件接口。串口有驱动简单的特点,几乎所有的嵌入式开发板和设备都提供了串口。在嵌入式开发中,串口通常用来打印设备状态信息和命令行,甚至于有的时候只能通过串口得到设备状态(如设备刚启动的时候)。本章介绍串口基本的软硬件知识,以及如何在应用程序中利用串口收发数据,主要内容如下:串口硬件介绍常见的串口协议串口应用程序入门利用串口通过手机发送短信10.1串口介绍在计算机领域,串口可以说是历史悠久而且应用广泛。从最早的PC机到目前工业控制领域广泛应用的工业计算机、以及嵌入式系统等,都提供了串口。串口有功能简单、成本低、便于连接等优点,是许多嵌入式系统必备接口之一。10.1.1什么是串口串口是串行接口(SerialPort)的简称,是计算机一种常用的接口,由于连线少、通讯控制简单而得到广泛的使用。串口有几种标准,常见的一种称作RS232接口的标准是在1970年由美国电子工业协会(EIA)和几家计算机厂商共同制定的。RS232标准应用广泛,其全称是“数据终端设备(DTE)和数据通讯设备(DCE)串行二进制数据交换接口”,该标准定义了串口的电气接口特性和各种信号电平等。标准串口协议支持的最高数据传输率是115Kbps。一些改进的串口控制器支持更高甚至460Kbps的数据传输率,如增强型串口ESP(EnhancedSerialPort)和超级增强型串口SuperESP。RS232串口使用D型数据接口,最初有9针和25针两种连接方式。随着计算机技术的不断进步,25针的串口连接方式已经淘汰,目前所有的RS232串口都使用9针连接方式。10.1.2串口工作原理串口通过直接连接在两台设备间的线发送和接收数据,两台设备通信最少需要三根线(发送数据、接收数据和接地)才可以通信。以最常见的RS232串口为例,通信距离较近时(12m),可以用电缆线直接连接标准RS232端口。如果传输距离远,可以通过调制解调器(MODEM)传输。因为串口设备工作频率低且容易受到干扰,远距离传输会造成数据丢失。10.1.2串口工作原理针号功能说明缩写1数据载波检测DCD2接收数据RXD3发送数据TXD4数据终端准备DTR5信号地GND6数据设备准备好DSR7请求发送RTS8清除发送CTS9振铃指示BELL10.1.3串口流量控制常见的串口工具软件都提供了RTS/CTS与XON/XOFF选项。这两个选项对应RS232串口的两种流量控制方式。串口流量控制主要应用于调制解调器的数据通讯,对于普通RS232串口编程,了解一点流量控制方面的知识是有好处的。1.什么是串口流量控制2.硬件流量控制3.软件流量控制10.2开发串口应用程序Linux操作系统对串行口提供了很好的支持。Linux系统中串口设备被当做一个字符设备(第22章详细讲解)处理。PC机安装Linux系统后在/dev目录下有若干个ttySx(x代表从0开始的正整数)设备文件。ttyS0对应第一个串口,也就是Windows系统下的串口设备COM1,以此类推。10.2.1操作串口需要用到的头文件在Linux系统操作串口需要用到以下头文件:#includestdio.h#includestdlib.h#includeunistd.h#includesys/types.h#includesys/stat.h#includefcntl.h#includetermios.h#includeerrno.h10.2.2串口操作方法操作串口的方法与文件类似,可以使用与文件操作相同的方法打开和关闭串口、读写以及使用select()函数监听串口。不同的是,串口是个字符设备,不能使用fseek()之类的文件定位函数。此外,串口是个硬件设备,还可以设置串口设备的属性。10.2.3串口属性设置10.1节讲解串口的基本知识,提到串口的基本属性包括波特率、数据位、停止位和奇偶校验等参数。Linux系统通常使用termios结构存储串口参数,该结构在termios.h头文件定义如下:structtermios{unsignedshortc_iflag;unsignedshortc_oflag;unsignedshortc_cflag;unsignedshortc_lflag;unsignedcharc_line;unsignedcharc_cc[NCC];};10.2.4与Windows串口终端通信本节给出一个和Windows串口终端通信的例子。两台PC通过串口相连,其中一台PC运行Windows系统,通过XShell软件(5.5.3节介绍)打开COM1;另一台PC运行Linux系统。10.3串口应用实例-手机短信发送手机是目前使用最广泛的通信设备之一,许多手机都提供了与PC互联的功能,其中最重要的一个接口就是串口(一些提供USB接口的手机指令收发是把USB设备虚拟一个串口设备进行通信的)。在GSM(全球数字移动电话网络)协议中规定了一组AT指令用于手机与其他设备通信,其中提供了发送短信的方法。本节讲解如何利用手机发送短信并且给出了实例。10.3.1PC与手机连接发送短信的物理结构在进行本章的试验之前需要建立一个手机和PC机之间的连接。10.3.2AT指令介绍AT指令集是GSM网络中网络设备之间发送控制信息的标准指令集。GSM网络终端设备(TE)或者数据终端设备(DTE)可以向终端适配器(TA)发送AT指令。使用AT指令,用户可以控制DTE发送短信息、呼叫电话、读写电话本、发送传真等。AT指令由手机制造商诺基亚、爱立信、摩托罗拉等共同研制,其中包括了短消息(SMS)控制功能。对SMS的控制有Block模式、文本模式和协议数据(PDU)模式三种。目前主要使用PDU模式,其它两种模式逐步被淘汰。10.3.3GSMAT指令集GSM07.05协议中定义了一组与SMS(短消息)有关的指令。AT指令功能AT+CMGC向DTE发送一条短消息AT+CMGD删除存储在SIM卡中指定的短消息AT+CMGF发送短消息模式:0-PDU模式;1-文本模式AT+CMGL打印存储在SIM卡中的短消息AT+CMGR读取短消息内容AT+CMGS发送短消息AT+CMGW把准备发送的短消息存储在SIM卡AT+CMSS发送存储在SIM卡的短消息AT+CNMI显示接收到的短消息AT+CPMS短消息存储设备选择AT+CSCA设置短消息中心号码AT+CSCB使用蜂窝广播消息AT+CSMP设置文本模式参数AT+CSMS选择短消息服务方式10.3.4PDU编码方式通常发送短信使用PDU模式,在GSM协议中对PDU模式发送短信的数据做了规范。使用PDU模式发送短信需要接收号码、短消息中心号码和短消息内容三个数据。这三个数据的定义方法如下:1.接收号码生成方法2.短消息中心号码生成方法3.短消息内容生成方法4.组合成完整的消息格式10.3.5建立与手机的连接PC与手机通过串口进行连接,早期的手机提供了数据线。手机串口数据线一端连接到手机上,另一端可以直接连接到PC的串口,这种方式不需要额外的驱动。最近几年生产的手机大多数都提供了USB接口,通过手机的USB驱动程序在手机与PC之间建立一个虚拟的串口设备。通常手机厂商提供的是适合Windows系统的驱动程序,Linux系统可以使用一个名为Gnokii的手机驱动软件。本节以NOKIA6300手机为例,讲解在Linux下如何对手机编程发送短消息。提示:NOKIA6300使用S40系统,提供USB接口,其他使用类似系统的手机也可以采用采用类似的方法驱动手机。NOKIA早期的有些手机(比如NOKIA1110)提供了串口数据线,可以直接操作。10.3.6使用AT指令发送短信10.3.4节讲解如何生成PDU模式的数据,在生成符合PDU模式的数据后,可以通过AT+CMGF指令和AT+CMGS指令发送一条短信。以10.3.4节的内容为例,使用AT指令发送短消息过程如下:AT+CMGF=0回车OKAT+CMGS=msg_len回车entire_msgCtrl+Z发送10.4小结本章讲解串口组成和工作原理、编程方法,并在最后给出一个操作手机发送短信的实例。串口的工作原理简单,是两台计算机设备之间传递数据的简单方式。串口编程入门比较容易,读者可以在自己的计算机上进行串口编程试验。第11章介绍Linux嵌入式系统的图形界面开发。
本文标题:第10章 串行口通信编程
链接地址:https://www.777doc.com/doc-318996 .html