版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、*实践教学*兰州理工大学计算机与通信学院2013年春季学期嵌入式系统开发技术课程设计题 目: 嵌入式串口通信的设计 专业班级: 通信工程(1)班 姓 名: 学 号: 指导教师: 成 绩: 25目 录摘 要1前 言2一、串口通信概述31.1通信方式31.2串口通信31.3串口通信的原理41.4串口通信的基本任务41.5串口通信的开发工具41.5.1开发平台2410F的硬件简介51.5.2 ARM简介51.5.3 Linux系统简介51.6系统硬件结构原理61.7串口通信协议及实现71.8串行接口标准7二、串口通信程序设计流程92.1总体程序设计流程图92.2串口操作需要的头文件102.3打开串口
2、102.4串口设置102.5串口读写132.6关闭串口15三、设计结果与测试163.1编写串口通信的程序serial_com.c163.2硬件配置163.3串口通信测试17总 结19参考文献20致 谢20附 录22摘 要嵌入式系统(Embedded System)在于结合微处理器或微控制器的系统电路与其专用的软件,来达到系统运作效率成本的最优化。本课程设计就是基于2410F 的嵌入式串口通信的实现,按照嵌入式系统的软、硬件结构组成,较为详细地介绍了串口通信的硬件电路和软件实现方法,并分析了串口驱动的开发方法。该系统的硬件主体设计以三星S3C2410 处理器为核心控制器件,实现连接PC机、ARM
3、9-2410开发板、仿真器,实现串行通信,传输速率为115200bps, 接收来自串口(通过超级终端)的字符并将接收到的字符发送到超级终端,实现在ARM 平台上与外部设备进行串口通信的基本功能。关键词:嵌入式系统;串口通信;Linux系统前 言在通信领域内,有两种数据通信方式:并行通信和串行通信。并行通信:在计算机和终端之间的数据传输通常是靠电缆或信道上的电流或电压变化实现的;如果一组数据的各数据位在多条线上同时被传输,这种传输方式称为并行通信。串行通信:串行通信是指使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度;其只需要少数几条线就可以在系统间交换信息,特别适用于
4、计算机与计算机、计算机与外设之间的远距离通信。 嵌入式系统以其小型、专用、易携带、可靠性高的特点,已经在各个领域得到了广泛的应用,如军事国防、消费电子、通信设备、工业控制等。在嵌入式系统的开发中,串口通讯的设计是一个非常重要的部分,虽然通用的串口驱动可以满足很多系统的需要,但在一些工业控制中,对串口信号的数据格式,波特率等都有着严格的限制,这就要求针对系统需求对串口进行重新开发本课题的目的就是研究适用于学校教学的嵌入式系统平台,这对于提高对嵌入式系统的理解具有重要意义。串行通信串口的数据传输是以串行方式进行的,所以数据传输不容易受到外部干扰。串口按位发送和接收字节。节省传输线,这是显
5、而易见的。尤其是在远程通信时,此特点尤为重要,这也是串行通信的主要优点。尽管比并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。 一、串口通信概述1.1通信方式在通信过程中,如果通信仅在点对点之间进行,或者点对多点之间进行,那么,按消息传输的方向和时间的不同,可以将通信分为单工通信、全双工通信以及半双工通信。发送方和接收方每次都只发送和接收一位数据的通信方式称为串行通信方式。也就是说,在任意一个时刻,数据线上仅有一位数据。在传输数据过程中,双方需要协商时钟信号,即规定什么时候发送数据和接收数据,以及每位数据所占用的时间宽度。根据双方接收和发送数据所采用的时钟信号是
6、否是同一个时钟源而分为串行异步通信方式和串行同步通信方式。串行异步通信方式中,通信双方采用自己的时钟信号,根据信号的起始位等判断信息,因此接收和发送仅需要两根信号线分别用来传送和接收信号。串行端口的本质功能是作为CPU和串行设备间的编码转换器。当数从CPU经过串行端口发送出去时,字节数据转换为串行的位。在接收数据时,串行的位被转换为字节数据。串口是系统资源的一部分,应用程序要使用串口进行通信,必须在使用之前向操作系统提出申请要求(打开串口),通信完成后必须释放资源(关闭串口)。1.2串口通信所谓串口通信,是指外设和计算机间使用一根数据信号线(另外需要地线),数据在一根数据信号线上一位一位地进行
7、传输,每一位数据都占据一个固定的时间长度。串口传输是二进制代码序列在一条信道上以位(元码)为单位,按时间顺序且按位传输的通信方式。串行传输时,发送端按位发送,接收端按位接受,同时还要对所传输的位加以确认,所以收发双方要采取同步措施,否则接受端将不能正确区分出所传输的数据。串口通信不但能实现计算机与嵌入式开发板之间的数据传输,而且还能实现计算机对嵌入式开发板的控制。1.3串口通信的原理串行端口的本质功能是作为CPU和串行设备间的编码转换器。当数从CPU经过串行端口发送出去时,字节数据转换为串行的位。在接收数据时,串行的位被转换为字节数据。串口是系统资源的一部分,应用程序要使用串口进行通信,必须在
8、使用之前向操作系统提出申请要求(打开串口),通信完成后必须释放资源(关闭串口)。1.4串口通信的基本任务(1)实现数据格式化:因为来自CPU 的是普通的并行数据,所以,接口电路应具有实现不同串行通信方式下的数据格式化的任务。在异步通信方式下,接口自动生成起止式的帧数据格式。在面向字符的同步方式下,接口要在待传送的数据块前加上同步字符。(2)进行串-并转换:串行传送,数据是一位一位串行传送的,而计算机处理数据是并行数据。所以当数据由计算机送至数据发送器时,首先把串行数据转换为并行数才能送入计算机处理。因此串并转换是串接口电路和的重要任务。(3)控制数据传输速率:串行通信接口电路应具有对数据传输速
9、率-波特率进行先择和控制的能力。(4)进行错误检测:在发送接口电路对传送的字符数据自动生成奇偶校验位或其他校验码。在接收时,接口电路检查字符的奇偶校验或其他检验码,确定是否发生传送错误。(5)进行TTL 与EIA 电平转换:CPU 和终端均采用TTL 电平及正逻辑,它们与EIA 采用的电平及负逻辑不兼容,需在接口电路中进行转换。1.5串口通信的开发工具本次开发采用的硬件平台是ARM920T处理器的2410F,开发系统平台是Linux系统。1.5.1开发平台2410F的硬件简介2410F 是基于三星(samsung)ARM9 嵌入式处理器 S3C2410 处理器的一款开发平台,“F”指基于241
10、0 的第六代开发套件。系统运行在 202M 的主频下发挥出色的性能。可以完成MP3,MPG,VOIP 等工作。2410 资源丰富适合 ARM 处理器的初学者学习使用。2410F 上面使用的核心模块体积小资源丰富,IO 充足还可以应用在二次开发的产品当中。这款设备主要包括核心板与底板两个部分,核心板采用6 层PCB 设计、底板采用2 层PCB 板设计,核心器件是基于目前业内主流使用的SAMSUNG ARM9S3C2410 处理器,主频202MHz,配套的存储器,网卡等设备;底板主要是各类型的接口。1.5.2 ARM简介ARM(Advanced RISC Machines),既可以认为是一个公司的
11、名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。1991 年ARM 公司成立于英国剑桥,主要出售芯片设计技术的授权。目前,采用ARM 技术知识产权(IP)核的微处理器,即通常所说的ARM微处理器,已遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统、军用系统等各类产品市场,基于ARM 技术的微处理器应用约占据了32 位RISC 微处理器70以上的市场份额,ARM 技术正在逐步渗入到我们生活的各个方面。ARM 微处理器一般具有如下特点: (1)体积小、低功耗、低成本、高性能; (2)支持 Thumb(16 位)/ARM(32 位
12、)双指令集,能很好的兼容8/16 位器件; (3)大量使用寄存器,指令执行速度更快; (4)大多数数据操作都在寄存器中完成; (5)寻址方式灵活简单,执行效率高; (6)指令长度固定。1.5.3 Linux系统简介Linux是一类Unix计算机操作系统的统称。Linux操作系统也是自由软件和开放源代码发展中最著名的例子。Linux 一般有四个主要部分:内核、Shell、文件结构和实用工具。(1)Linux 内核内核是系统的心脏,是运行程序和管理像磁盘和打印机等硬件设备的核心程序。它从用户那里接受命令并把命令送给内核
13、去执行。(2)Linux ShellShell 是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。实际上Shell 是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,Shell 有自己的编程语言用于对命令的编辑,它允许用户编写由shell 命令组成的程序。Shell 编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell 程序与其他应用程序具有同样的效果。(3)Linux 文件结构文件结构是文件存放在磁盘等存储设备上的组织方法。主要体现在对文件和目录的组织上。目录提供了管理文件
14、的一个方便而有效的途径。我们能够从一个目录切换到另一个目录,而且可以设置目录和文件的权限,设置文件的共享程度。使用Linux,用户可以设置目录和文件的权限,以便允许或拒绝其他人对其进行访问。(4)Linux 实用工具标准的 Linux 系统都有一套叫做实用工具的程序,它们是专门的程序,例如编辑器、执行标准的计算操作等。用户也可以产生自己的工具。实用工具可分三类: 编辑器:用于编辑文件。 过滤器:用于接收数据并过滤数据。 交互程序:允许用户发送信息或接收来自其他用户的信息。1.6系统硬件结构原理在串口通信的实现过程中,要保证数据传输的可
15、靠性和稳定性, 其硬件设计是必不可少的, 本文中选用S3C2410 芯片作为核心器件。S3C2410 芯片是SAMGSUNG公司16/ 32 位的RISC 处理器,采用ARM920 T 内核,内部具有2 个独立的UART 控制器以及分开的16 kB的指令Cache 和16 kB 数据Cache ,每个控制器支持的最高波特率可达到230. 4 kb/ s 。S3C2410 芯片的这些特点,为实现在Linux 操作系统下计算机与开发板间的串口通信提供了可靠的保证。基于S3C2410 的嵌入式串口通信的硬件结构原理如图1-1所示:图1-1 系统硬件结构原理图1.7串口通信协议及实现串行端口的本质功能
16、是作为CPU 和串行设备间的编码转换器,一般微机内都配有通信适配器,使计算机能够与其他具有RS-232C 串口的计算机或设备进行通信。本系统主要目的是实现宿主机与目标机之间的近距离串行通信, 采用的宿主机是Intel Centrino架构的Red Hat Linux 9.03 环境PC机, 而目标机是ARM 架构的开发板。本系统中目标机开发板的内核采用的是三星的S3C2410 ,该开发板采用核心板加底板的模式, 核心板接口采用DIMM200 标准连接器,工作非常可靠,可稳定运行在203 MHz 的时钟频率下。其外设非常丰富,功能强大,完全可以满足设计需要。串口线采用常用的RS-232C 型接口
17、模式,能实现计算机与开发板间的数据传输与控制。嵌入式串口通信采用EIA RS-232C标准。1.8串行接口标准根据连接器(含电平转换器)的不同,串行接口标准最常用的有RJ-232、RS-422A、RS-232C标准。RS-232C是1969年由电子工业协会(EIA)公布的标准。该标准的用途是定义数据终端设备DTE(Data Terminal Equipment)与数据通信设备DCE(Data Communication Equioment)的接口特性。数据终端设备就是连接通信两端设备的连线(如空MODEM)或其他设备。RS-232C标准的构架如图1-2所示。图1-2 RS-232C标准的构架二
18、、串口通信程序设计流程由于嵌入式系统是一个受资源限制的系统,因此不能直接在嵌入式系统硬件上进行编程。作为一个完整的嵌入式系统,其软件设计也是一个很重要的方面。本系统软件的实现是通过串口设置和读写串口等操作来完成宿主机与目标机间的串口通信。结束开始系统时钟初始化串口初始化串口发送数据将收到的数据通过串口发送串口是否收到数据NOYES2.1总体程序设计流程图 图2-1 串口通信程序设计流程图2.2串口操作需要的头文件在开发嵌入式Linux串口驱动程序时,需要以下头文件:#include <stdio.h> /*标准输入输出定义*/#include <stdlib.h> /*
19、标准函数库定义*/#include <unisted.h> /*UNIX标准函数定义*/#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h> /*文件控制定义*/#include <termios.h> /*POSIX终端控制定义*/#include <errno.h> /*错误号定义*/2.3打开串口在嵌入式Linux系统中,打开一个串口设备和打开普通文件一样。嵌入式Linux系统下的串口文件通常位于/dev下:串口一为/dev/ttyS0;串口二为/
20、dev/ttyS1。打开串口时通过使用标准的文件函数open( )来进行操作的,下面假设以读写方式打开串口一。int fd;/文件描述符fd=open(“/dev/ttyS0”,O_RDWR);/以读写方式打开串口if(fd=-1)/如果不能打开串口一 perror(“提示错误!”); 2.4串口设置在Linux 系统中,设备都是以文件的形式表示的,串口参数一般包括波特率、起始位数量、停止位数量等。下面对这些串口参数进行详细说明。(1)起始位通信线路上没有数据被传送时,处于逻辑“1”状态。当发送字符数数据是首先发送一个逻辑“0”信号,这个逻辑低电平就是起始位。起始位通过通信线路传输到接收端,接
21、收端检测到这个低电平之后,就开始准备接收数据位信号。起始位所起的作用就是使通信双方同步。(2)数据位当接收端收到起始位后,开始接收数据位。数据位的个数可以是58位。在数据传送过程中,数据位从最低有效位开始传送,接收端收到数据后,依次将其转换成并行数据。(3)奇偶校验位数据位发送完后,为了保证数据的可靠性,还要传送一个奇偶校验位。奇偶校验用于差错检测。如果选择偶检验,则数据位和奇偶位的逻辑“1”的个数必须为偶数,相反,如果是奇检验,则数据位和奇偶位的逻辑“1”的个数为奇数。(4)停止位在奇偶位或数据位(当无奇偶校验时)之后发送停止位。停止位表示一个数据的结束。它可以是12位的低电平。接收端收到停
22、止位后,通信线路便恢复逻辑“1”的状态,直到下一个数据的起始位到来。(5)波特率通信线路上传输的位(码元)信号都必须保持一致的信号持续时间,单位时间内传送码元的数目称为波特率。对大多数嵌入式设备来说,其波特率都设置为115200。访问串行口通过对设备文件的访问来实现,仅需打开相应的设备文件。串口的设置主要是设置struct termios 结构体中的各成员值。#include<termios.h>struct termiounsigned short c_iflag; /*输入模式标志*/unsigned short c_oflag; /*输出模式标志*/unsigned shor
23、t c_cflag; /*控制模式标志*/unsigned short c_lflag; /*本地模式标志*/unsigned char c_line; /*线路规范*/unsigned char c_ccNCC; /*控制特征值*/波特率设置:struct termios option;tcgetattr(fd,&option);cfsetispeed(&option,B115200);/*设置为115200Bps*/cfsetospeed(&option,B115200);tcsetattr(fd,TCANOW,&option);检验位设置:无校验 8 位:
24、options.c_cflag &=PARENBoptions.c_cflag &=CSTOPB;options.c_cflag &=CSIZE;options.c_cflag=CS8;奇效验(Odd)7 位:options.c_cflag=PARENB;options.c_cflag &=PARODD;options.c_cflag &=CSTOPB;options.c_cflag &=CSIZE;options.c_cflag=CS7;偶校验(Even)7 位:options.c_cflag &=PARENB;options.c_cf
25、lag=OARODD;options.c_cflag &= CSTOPB;options.c_cflag &=CSIZE;options.c_cflag=CS7;Space 校验7 位:options.c_cflag &= PARENB;options.c_cflag &=CSTOPB;options.c_cflag &=&CSIZE;options.c_cflag=CS8;停止位设置:1位: options.c_cflag &=CSTOPB;2位: options.c_cflag=CSTOPB;模式设置:需要注意的是,如果不是开发终端之
26、类的,只是串口传输数据,而不需要串口来处理,那么使用原始模式(Raw Mode)方式来通讯。options.c_lflag &=(ICANONECHOECHOEISIG);/*Input*/options.c_oflag &=OPOST;/*Output*/2.5串口读写在Linux 系统中,对设备和目录的操作都等同于文件的操作,这样大大简化了系统对不同设备的处理,提高了效率。在程序中,设备和文件都是使用文件描述符来进行操作的。文件描述符是一个非负的整数,是一个索引值,并指向内核中每个进程打开文件的记录表。当打开一个现存的文件或者是创建一个新文件时,内核就向进程返回一个文件描述
27、符;当需要读写时也需要将文件描述符作为参数传递给相应的函数。在Linux 系统中,所有的设备文件都位于“/ dev”下,其中串口对应的设备名为“/ dev/ ttyS0”,因此对串口的读写就可以像读写(“read”和“write”) 普通文件一样来读写设备文件,所不同的是需要对串口的其他参数另做配置。打开串口之后,读写串口就很容易了,把串口当作文件读写就可以了。(1)发送数据char butter1024;int Length=1024;int nByte;nByte=write(fd,buffer,Length);(2)读取串口数据使用文件操作read 函数读取,如果设置为原始模式(Raw
28、Mode)传输数据,那么read 函数返回的字符数是实际串口收到的字符数。读取数据时比较需要技巧的。char buff1024;int Len=1024;int rdadByte=read(fd,buff,Len);也可以使用操作文件的函数来实现异步读取,如fcntl,或者selectt 等来操作。fd_set rfds;struct timeval tv;int retval;/*下面几行设置要监视进行读写操作的文件集*/FD-ZERO(&rfds); /文件集清零FD_SET(portsportNo.handle,&rfds); /向集合中添加一个文件句柄tv.tv_sec
29、=Timeout/1000; /设置等待的时间tv.tv_usec=(Timeeout%1000)*1000;retval=select(16,&rfds,NULL,NULL,&tv;) /文件所监视的文件集准备好.if(rdtvel) /文件集中有文件在等待时间内准备好了.actuaIRead=read(portsportNo.handle,buf,maxCnt); /读取数据下面两个实例给出了串口读和写两个程序部分代码。写串口的程序将在宿主机上运行,读串口程序将在目标板上运行。写串口部分程序:doprintf(“Input some words(enter quit to
30、exit):”);memset(buff, 0,BUFFER_SIZE);if(fgets(buff,BUFFER_SIZE,stdin)=NULL)perror(“fgets”);break;write(fd,buff,strlen(buff);whie(strncmp(buff,”quit”,4);读串口部分程序:domemset(buff,0,BUFFER_SIZE);if(read(fd,buff,BUFFER_SIZE)>0)printf(“The received words are:%s”,buff);while(strncmp(buff,”quit”,4);2.6关闭串口
31、在Linux 系统中,对设备和目录的操作都等同于文件的操作, 关闭串口就是关闭文件,而设备和文件都是使用文件描述符来进行操作的。文件描述符是一个索引值,指向内核中每个进程打开文件的记录表,因此关闭文件就只要关闭文件描述符就可以了。close(fd);三、设计结果与测试以下是本次实验的具体实现过程:3.1编写串口通信的程序serial_com.c(1)在PC机上安装虚拟机Vmware,在虚拟机中加载Red Hat Linux 9.03系统,建立交叉编译环境。(2)在Linux系统下编写串口通信的程序serial_com.c,先用gcc编译,确认无误后,用arm-linux-gcc进行交叉编译,生
32、成可执行文件serial_com,如下图3-1所示:图3-1 gcc编译生成可执行文件serial_com3.2硬件配置(3)硬件连接:将电源线分别连接2410F 开发板与电源插座。用一根串口线将宿主PC 机的串口与2410F型板的串口0(UART0)相连。用一根交叉对接网线将宿主PC 机的网口与2410F开发板的网口(NET)相连。(4)在宿主机上建立一个ftp服务器:即运行一个简单的ftp服务器软件ftpserver.exe,然后对服务器的IP地址,服务器的端口,根目录文件夹等进行相关的配置,启动服务,如图3-2所示。图3-2 建立一个ftp服务器并配置3.3串口通信测试(5)通过ftp文
33、件传输协议把宿主机上的可执行文件serial_com下载到开发板上。要把传输方式设置为二进制传输,即b模式。(6)在开发板上运行serial_com。(7)在宿主机上运行一个串口软件sscom32.exe,配置串口号,波特率,数据位,停止位,校验位,如图3-3所示。图3-3 配置配置串口号,波特率,数据位,停止位,校验位(8)宿主机与开发板之间开始通信,如图3-4所示。图3-4 通信过程(9)观察通信过程,确认不出现错误。(10)通信完成。总 结本文介绍了一种基于嵌入式的串口通信系统,采用S3C2410 芯片作为串口通信的控制核心器件,实现了在Linux 操作系统下宿主机与目标机间串口通信的基
34、本功能。在系统的结构实现上,给出了系统的硬件实现原理,并详细介绍了其软件实现过程,比如设置串口、读写串口等。该系统操作方便,实现容易,在此基础上进一步改进,可以在基于Linux 操作系统的ARM 平台上实现更多的嵌入式功能。通过本次嵌入式系统课程设计,加深了我对所学过的各种理论的认识和理解,并在一定程度上掌握并会运用。我还学会了把学到的知识用于解决实际问题,培养、加强锻炼了我的动手实践能力。更为难得的是,在这次课程设计过程中,屡屡碰见一些问题,在解决这些问题的过程中,不断加强了我对嵌入式系统各方面知识的理解。对于一些自己不清楚,不明白但平时又很难发现的知识点有了一次全面的巩固与复习。总之,这次
35、课程设计中我学到了很多知识,拓展了我的思维,而且让我明白了怎样理论联系实际,在实践过程中遇到的问题怎样用理论来解决,为以后的工作积累了经验,增强了信心。参考文献1张思民编著.嵌入式系统设计与应用M. 北京:清华大学出版社, 2008:30-452ARM Limited. ARM Developer Suiter (Version 1.2) , Assemble Guide, ARM DUI 0068A, 2000:78-903熊茂华、杨震伦主编. ARM9嵌入式系统设计与开发应用M.北京:清华大学出版社,2008:67-734刘彦文主编.基于ARM TDMI的S3C44BOX嵌入式微处理器技术
36、M.北京:清华大学出版社,2009:45-565徐磊编著.Linux系统下C程序开发详解M. 北京:电子工业出版社,2008:60-776华清远见嵌入式培训中心编著. 嵌入式Linux系统开发标准教程(第2版)M. 北京:人民邮电出版社,2009:55-617罗苑棠编著.嵌入式Linux驱动程序和系统开发实例精讲M.北京:电子工业出版社,2009:43-50 9华清远见嵌入式培训中心编著. Linux设备开发详解(第2版)M. 北京:人民邮电出版社,2010.致 谢通过本次的课程设计,使我将嵌入式课堂上学到的东西用到实践中,同时我也学到了许多东西,对嵌入式的设计与开发有了更深的了解,对CC25
37、30以及2410芯片也有了一定的认识,对于ARM芯片和PC机间的串口通信,我更是在这次课设中掌握了许多。不仅是知识方面,在编程能力方面我也有了很大的提高,我们一次又一次的修改调试所设计的程序,不断研究那些代码,不懂的地方就查阅网上和图书馆的资料,最终成功运行,使我的编程能力得到锻炼。同时,和班里同学一起讨论,共同解决问题,查到了有用的资料,就大家一起分享,我们合理的分工,才能高效的完成这次课设,而且促进了同学之间的相互了解,加深了我们的友谊,提高了我们的团队协作精神。经过这次课程设计,我深深体会到了从书本学习与实际应用中的不同,这种感同身受必将对我们今后的学习与生活带来很大的帮助。在大学阶段,
38、理论的学习和实践是密不可分的。离开了实践的理论是没有任何意义可言的,理论是需要伴随着实践才能完善。在这段时间里,谢谢张玺君老师时时在我们的身旁引导我们,帮助我们,对我们的任何疑惑都悉心解答,用心血让我们学会从理论走向实践。我们不会忘记他为了我们紧缩的眉头,焦急的眼神,疲倦的笑容,忙碌的身影。同时也感谢给予我帮助的同学们,我们一起商讨、解决问题的时光会成为我永远的记忆。附 录源程序代码如下/*serial_com.c*/#include <string.h>#include <unistd.h>#include <fcntl.h>#include <er
39、rno.h>#include <termios.h>#include <sys/types.h>#include <sys/stat.h>#include <stdlib.h>#define MODEMDEVICE "/dev/ttyS0"#define _POSIX_SOURCE 1#define FALSE 0#define TRUE 1volatile int STOP=FALSE;main() int fd,n=0,c,BAUDRATE,i,BUFNUMBER=32,READNUMBER=32; char rec
40、eivebufBUFNUMBER; struct termios oldtio,newtio; struct stat st; errno=0; fd=open(MODEMDEVICE, O_RDWR|O_NOCTTY/*|O_NDELAY|O_NONBLOCK*/);/*打开串口*/ if (errno) perror(MODEMDEVICE); printf("Error in open COM1n");errno=0; exit(-1); tcgetattr(fd,&oldtio); bzero(&newtio,sizeof(newtio); BAUDRATE=B9600; cf
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版米厂水稻种植与电商平台合作销售合同4篇
- 2025年度智慧城市基础设施承包安装服务协议4篇
- 2025年度房地产交易会参展商服务保障协议3篇
- 2025版1A13365国际贸易实务操作手册授权合同3篇
- 2024-2030年中国耐磨陶瓷涂料行业市场深度分析及发展趋势预测报告
- 二零二五版海外科技园区劳务派遣与研发支持协议2篇
- 2025年房屋代持合同样本与资产评估协议4篇
- 个性化私人借贷合同(2024版)版B版
- 2025版国家级屠宰场高品质牛肉供货合同范本下载3篇
- 2025年离职后研发成果保密及竞业限制协议
- 中国成人暴发性心肌炎诊断和治疗指南(2023版)解读
- 新生儿低血糖课件
- 自动上下料机械手的设计研究
- 电化学储能电站安全规程
- 幼儿园学习使用人民币教案教案
- 2023年浙江省绍兴市中考科学真题(解析版)
- 语言学概论全套教学课件
- 大数据与人工智能概论
- 《史记》上册注音版
- 2018年湖北省武汉市中考数学试卷含解析
- 《肾脏的结构和功能》课件
评论
0/150
提交评论