版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、嵌入式系统实验报告指导教师:陆勤姓名:程少锋学号:139074366班级:物联网131班实验一B 熟悉实验开发环境一、实验目的熟悉ADS1.2 开发环境,学会ARM 仿真器的使用。使用ADS 编译、下载、调试并跟踪一段已有的程序,了解嵌入式开发的基本思想和过程。二、实验内容本次实验使用ADS 集成开发环境。新建一个简单的工程文件,并编译这个工程文件。学习ARM 仿真器的使用和开发环境的设置。下载已经编译好的文件到嵌入式控制器中运行。学会在程序中设置断点,观察系统内存和变量,为调试应用程序打下基础。三、预备知识C 语言的基础知识、程序调试的基础知识和方法。四、实验设备及工具(包括软件调试工具)硬
2、件:ARM 嵌入式开发平台、用于ARM7TDMI 的JTAG 仿真器、PC 机Pentium100 以上、串口线。软件:PC 机操作系统win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成开发环境、仿真器驱动程序、超级终端通讯程序。五、实验步骤1)建立工程(1)运行ADS1.2 集成开发环境(CodeWarrior for ARM Developer Suite)。选择FileNew菜单,在对话框中选择Project,如图1B-1 所示,新建一个工程文件。图中示例的工程名为Exp6.mcp。点set按钮可为该工程选择路径如图1B-2 所示,选中CreatFo
3、lder 选项后将以图1B-1 中的ProjectName 或图1B-2 中的文件名为名创建目录,这样可以将所有与该工程相关的文件放到该工程目录下,便于管理工程。 设置完成后,可以将该新建的空工程文件作为模板保存以便以后使用。将工程文件名改为44B0 ARM Executable.mcp。然后在ADS1.2 软件安装目录下的Stationery 目录下新建名为44B0 ARM Executable Image 的模板目录,再将刚设置完的44B0 ARM Executable.mcp工程模板文件存放到该目录下即可。这样以后新建工程的时候就能看到以44B0 ARM Executable Image
4、 为名字的模板了。新建工程后,可以执行菜单Project | Add Files 把和工程相关的所有文件包括init和startup 子目录加入到工程中。ADS1.2 不能自动按文件类别对这些文件进行分类,需要的话用户可以执行菜单Project | Create Group 创建文件组,然后分别将不同类的文件加入到不同的组,以方便管理。如图1B-12 所示。更为简单的办法是,在新建工程时ADS 创建了和工程同名的目录,在该目录下按类别创建子目录并存放工程文件。选中所有目录拖动到任务栏上的ADS 任务条上,不要松开鼠标当ADS 窗口恢复后再拖动到工程文件窗口,松开鼠标。这样ADS 将以子目录名建
5、立同名文件组并以此对文件分类。双击Main.c 打开该文件,可以看到Main()函数的内容,可以发现 ADS 的文本编辑器已经有了很大的改善,文本按语法分颜色显示,读者可以根据喜好在Edit 菜单下的Preferences窗口中进行设置。并可以很好的支持中文注释。2) 进行程序的在线仿真、调试(1)回到工程窗口选中Debug 版本,执行菜单Project | Make 对工程进行编译连接。在出现的错误/警告窗口中选择某错误/警告信息,ADS 会自动打开相应源文件并用箭头指向出错的文本行。如果某个源文件被修改,重新编译时ADS 会自动同步各文件的日期信息。(2)在ADS 中执行菜单Project
6、 | Debug 启动ADS1.2 的调试工具AXD。(5)等待程序装载完毕以后,通过Execute | Go 菜单以及Execute | Stop(或者工具栏中的相应按钮)运行或暂停程序。程序暂停后在窗口中将显示出程序暂停的位置。(6)通过Execute | Step 菜单(或者工具栏中的相应按钮)可以单步运行程序。也可以使用Step In、Step Out 菜单命令进入或者跳出函数的调用。Run To Cursor 命令运行到光标位置。(7)程序停止后可以通过Processor Views | Sources 菜单查看源文件,并可在适当位置按F9 设置端点。(8) 使用在Processor
7、 View 菜单下的Registers、Variables 和Memory 命令可以查看工作寄存器或者内存变量。读者可以逐一地尝试,为以后调试程序打下基础。【注意事项】在进行调试时在 ADS 中必须选择当前工程的 Debug 版本,如果选择 Release 版本则无法正常调试程序。但在调试通过后就必须选择 Release 版本进行编译连接并将生产的 system.bin 文件复制到开发板的 Flash 中。将开发板上的 Flash 激活并使 Windows 认其为一个U盘的操作在下节中描述。实验一 C:超级终端设置及BIOS 功能使用1、运行Windows 系统下的超级终端(HyperTerm
8、inal)应用程序,新建一个通信终端。如果要求输入区号、电话号码等信息请随意输入,出现如图1C-1 所示对话框时,为所建超级终端取名为arm,可以为其选一个图标。单击“确定”按钮。3、完成新建超级终端的设置以后,可以选择超级终端文件菜单中的保存,将当前设置保存为一个特定超级终端到桌面上,以备后用。用串口线将PC 机串口和平台UART0 正确连接后,就可以在超级终端上看到程序输出的信息了,比如本实验的“Hello world!”。4、启动开发板,按住开发板上键盘的任意按键,使开发板进入BIOS 设置状态。5、该画面上提示了该BIOS 的版本等信息。Shell Menu 是平台的检测菜单,每个条目
9、的最左边字母是该功能的快捷键,按PC 机键盘相应键将执行对应功能。注意操作时保持超级终端处于激活状态,并且PC 机键盘必须为小写。7、按PC 键盘的u 键(要使超级终端处于活动状态),这时超级终端上会显示所示的信息 8、这时,在“我的电脑”中可以发现多了一个“可移动磁盘”,这就是开发板的海量存储器16M 非线性Flash。开发板就像一个U 盘,可以通过“我的电脑”进行操作。把上两节内容中生成的 system.bin 文件通过USB 下载到嵌入式开发板中,复位系统,运行并检查输出结果。【注意事项】system.bin 文件是系统通过BIOS引导以后,装入内存中运行的默认文件名。所以上文中对工程的
10、设置都使用该文件名作为编译最终文件。SDT 环境中,system.bin 文件 产生在工程路径下的 Debug 和 Release 目录下;ADS 环境中,该文件产生在工程路径ProjectName_DataDebug 和 Release 目录下。建议将Release下的 system.bin 文件拷贝到U盘。实验二 ARM串口实验一、实验目的掌握ARM 的串行口工作原理。学习编程实现 ARM 的UART 通讯。掌握 CPU 利用串口通讯的方法。二、实验内容学习串行通讯原理,了解串行通讯控制器,阅读ARM 芯片文档,掌握ARM 的UART相关寄存器的功能,熟悉ARM 系统硬件的UART 相关接
11、口。编程实现ARM 和计算机实现串行通讯:ARM 监视串行口,将接收到的字符再发送给串口(计算机与开发板是通过超级终端通讯的),即按PC 键盘通过超级终端发送数据,开发板将接收到的数据再返送给PC,在超级终端上显示。三、预备知识1、用ARM SDT 2.5 或ADS1.2 集成开发环境,编写和调试程序的基本过程。2、ARM 应用程序的框架结构。3、了解串行总线四、实验设备及工具硬件:ARM 嵌入式开发平台、用于ARM7TDMI 的JTAG 仿真器、PC 机Pentium100 以上、串口线。软件:PC 机操作系统win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2
12、 集成开发环境、仿真器驱动程序、超级终端通讯程序。五、实验原理及说明1异步串行IO异步串行方式是将传输数据的每个字符一位接一位(例如先低位、后高位)地传送。数据的各不同位可以分时使用同一传输通道,因此串行IO 可以减少信号连线,最少用一对线即可进行。接收方对于同一根线上一连串的数字信号,首先要分割成位,再按位组成字符。为了恢复发送的信息,双方必须协调工作。在微型计算机中大量使用异步串行IO 方式,双方使用各自的时钟信号,而且允许时钟频率有一定误差,因此实现较容易。但是由于每个字符都要独立确定起始和结束(即每个字符都要重新同步),字符和字符间还可能有长度不定的空闲时间,因此效率较低。给出异步串行
13、通信中一个字符的传送格式。开始前,线路处于空闲状态,送出连续“1”。传送开始时首先发一个“”作为起始位,然后出现在通信线上的是字符的二进制编码数据。每个字符的数据位长可以约定为5 位、6 位、7 位或8 位,一般采用ASCII 编码。后面是奇偶校验位,根据约定,用奇偶校验位将所传字符中为“1”的位数凑成奇数个或偶数个。也可以约定不要奇偶校验,这样就取消奇偶校验位。最后是表示停止位的“1”信号,这个停止位可以约定持续1 位、1.5 位或2 位的时间宽度。至此一个字符传送完毕,线路又进入空闲,持续为“1”。经过一段随机的时间后,下一个字符开始传送才又发出起始位。每一个数据位的宽度等于传送波特率的倒
14、数。微机异步串行通信中,常用的波特率为50,95,110,150,300,600,1200,2400,4800,9600 等。接收方按约定的格式接收数据,并进行检查,可以查出以下三种错误:1)奇偶错:在约定奇偶检查的情况下,接收到的字符奇偶状态和约定不符。2)帧格式错:一个字符从起始位到停止位的总位数不对。3)溢出错:若先接收的字符尚未被微机读取,后面的字符又传送过来,则产生溢出错。每一种错误都会给出相应的出错信息,提示用户处理。串行接口的物理层标准六、实验步骤1新建工程,将“Exp2 ARM 串口实验”中的文件添加到工程中,这些是启动时所需要的文件。2定义与UART 有关的各个寄存器地址和一
15、些特殊的位命令。3编写串口驱动函数(MyUart.c)4在主函数中实现将从串口0 接收到的数据发送到串口0(Main.c): 7、 问题讨论【1】232串行通讯的数据格式是什么RS-232属于“异步传输”,在传送数据时,并不需要另外使用一条传输线来传送同步信号,不过必须在每一组数据的前后都加上同步信号,把同步信号与数据混和之后,使用同一条传输线来传输。从低位到高位的一帧数据格式为:-起始位(Start)+数据位(Data)+奇偶校验位(Parity)+停止位(Stop)-其中起始位固定为一个比特,停止位则可以是1、1.5或者是2比特(传送与接受一致),数据位可以设置为7、8或者9,奇偶校验位可
16、以设置为无(N)、奇(O)或者偶(E),奇偶校验位可以使用数据中的比特。【2】串行通讯最少有几根线,分别如何连接最少2根线,一个接收一个发送,电脑端9针接口,2接收(RXD),3发送端(TXD),最好再加一个5接地端(GND)【3】ARM的串行口有几个,相应的寄存器是什么?ARM有三个UART端口,寄存器有:(1) UART线性控制寄存器(ULCONn)(2) UART控制寄存器(UCONn)(3) UART FIFO控制寄存器(UFCONn)(4) UART MODEM控制寄存器(UMCONn)(5) UART接收发送状态寄存器(UTRSTATn)(6) UART错误状态寄存器(UERSTA
17、Tn)(7) UART FIFO状态寄存器(UFSTATn)(8) UART MODEM状态寄存器(UMSTATn)(9) UART发送缓存寄存器(UTXHn)(10) UART接收缓存寄存器(URXHn)(11) UART波特率除数寄存器(UBRDIVn)实验三 ARM的A/D转换实验一、实验目的1熟悉ARM 本身自带的八路十位A/D 控制器及相应寄存器。2编程实现ARM 系统的A/D 功能。3掌握带有A/D 的CPU 编程实现A/D 功能的主要方法。二、实验内容学习A/D 接口原理,了解实现A/D 系统对于系统的软件和硬件要求。阅读ARM 芯片文档,掌握ARM 的A/D 相关寄存器的功能,
18、熟悉ARM 系统硬件的A/D 相关接口。利用外部模拟信号编程实现ARM 循环采集全部前4 路通道,并且在超级终端上显示。三、预备知识1、用ARM SDT 2.5 或ADS1.2 集成开发环境,编写和调试程序的基本过程。2、ARM 应用程序的框架结构。3、能够自己完成在LCD 上显示指定参量。四、实验设备及工具硬件:ARM 嵌入式开发平台、用于ARM7TDMI 的JTAG 仿真器、PC 机Pentium100 以上、模拟电压信号源。软件:PC 机操作系统win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成开发环境、仿真器驱动程序、超级终端通讯程序1A/D 转换
19、器A/D 转换器是模拟信号源和CPU 之间联系的接口,它的任务是将连续变化的模拟信号转换为数字信号,以便计算机和数字系统进行处理、存储、控制和显示。在工业控制和数据采集及许多其他领域中,A/D 转换是不可缺少的。A/D 转换器有以下类型:逐位比较型、积分型、计数型、并行比较型、电压频率型,主要应根据使用场合的具体要求,按照转换速度、精度、价格、功能以及接口条件等因素来决定选择何种类型。3ARM 自带的十位A/D 转换器ARM S3C440BX 芯片自带一个路10 位A/D 转换器,该转换器可以通过软件设置为Sleep 摸式,可以节电减少功率损失,最大转换率为500K,非线性度为正负位,其转换时
20、间可以通过下式计算:如果系统时钟为66MHz,比例值为9,则为66MHz/2 (9+1)/16 (完成转换至少需要16 个时钟周期)=205.25KHz(相当于4.85us)ARM 芯片与A/D 功能有关的引脚为以下几个,其中AIN7:0为8 路模拟采集通道,AREFT 为参考正电压,AREFB 为参考负电压,AVCOM 为模拟共电压。4AD 转换器在开发平台的接法如下:即前四路通过分压电位器接到2.5v 电源上。六、实验步骤1新建工程,将“Exp5 ARM A/D 接口实验”种的文件添加到工程。2编写获取转换结果函数(main.c)3主函数(main.c)7、 实验问题【1】逐次逼近型的 A
21、/D 转换器原理是什么?转换过程:(1)首先发出“启动信号”信号S。当S由高变低时,“逐次逼近寄存器SAR”清0,DAC输出Vo=0,“比较器”输出1。当S变为高电平时, “控制电路”使SAR开始工作。(2)SAR首先产生8位数字量的一半,即10000000B,试探模拟量的Vi大小,若VoVi,“控制电路”清除最高位,若VoMessageOSM_KEY,参数 pMsg-WParam 则是按键的键码(pMsg 是指向该消息结构体的指针)。键盘中断服务程序只向键盘邮箱(邮箱是uCOS-II 的另一种通信机制)中发送一个消息,通知键盘扫描任务发生按键事件:void ISR_Key()OSMboxPo
22、st(Key_MailBox, (void*)1);当键盘扫描任务等到该邮箱的消息后就会从键盘扫描芯片读取扫描码,继而将该扫描码对应的键码用键盘消息发送到消息队列:void Key_Scan_Task(void *Id)/键盘扫描任务U32 key;INT8U err;POSMSG pmsg;Uart_Printf(begin key task n);for (;)OSMboxPend(Key_MailBox, 0, &err);key=ZLG7289_ReadKey();if(key=64)continue;pmsg=OSCreateMessage(NULL, OSM_KEY,KeyBoar
23、d_Mapkey,0);if(pmsg)SendMessage(pmsg);应用程序在 Main_Task 任务中等待消息,并对该消息进行判断和处理,如果是键盘消息则提取出键码,变换为对应字符,然后将其显示到液晶屏上。在图形模式下,液晶屏的文字输出函数是 TextOut(),实际是通过在图形方式下绘图完成文字显示的。此函数输出的字符数组必须是基于双字节 Unicode 编码的。在程序中可以使用 Int2Unicode()和 strChar2Unicode()两个函数分别将整形数或 ASCII 字符转换为 Unicode 字符串。这部分内容请参考附录 API 函数,在 Ustring.h 定义。
24、六、实验步骤1、新建工程,将“Exp15 系统的消息循环”中的文件加入工程。2、编辑 Main_Task 任务中的代码,理解如何实现消息循环。即:等待消息、处理(响应)消息、删除消息。提示:1)使用 WaitMessage(0)接收消息,通常等待时间设置为无限长。2)系统的消息循环是一个无限循环。3)收到消息以后(即 WaitMessage()函数返回后),通过判断消息结构中 Message成员来判断消息类型。如果是键盘消息,则 Message 的值为 OSM_KEY,WParam 参数存储的是按键的键码,LParam 参数存储的是同时按下的功能键(如果没有,则为 0)。4)开始等待下一条消息
25、之前必须使用 DeleteMessage 删除消息,释放系统的内存空间。3、编写键盘消息响应函数 onKey(),处理键盘的消息。当有键盘消息收到的时候,把按键字符显示在液晶屏上,同时,发送给 PC 机的终端。提示:1)通过 Uart_Printf()函数向串行口发送键面字符串。5、用 ARM SDT 2.5 或 ADS1.2 编译、下载并调试上述程序,检查运行结果。6、生成发行版本的.bin 文件,通过 USB 下载到嵌入式开发板中,运行并检查输出结果。【实验问题讨论】【1】怎样通过消息循环实现两个用户任务之间的同步?通信的双方相互制约,生产者通过“提供消息”来同步消费者,消费者通过“回复消
26、息”来同步生产者,即生产者必须得到消费者的回复后才能进行下一个消息的生产。这种运行方式称为”双向同步“。【2】多任务系统中还有哪些机制实现任务间的通信与同步?信号量,消息队列,管道,事件,加入邮箱。实验六 文件操作一、实验目的学习使用文件相关的API 函数,了解在uCOS-II 操作系统上扩展文件系统的情况。二、实验内容通过使用开发平台提供的API 函数,打开一个保存在FLASH 海量存储器中的英文文本文件,将其文件内容输出显示在液晶屏上。三、预备知识1、用ARM SDT 2.5 或ADS1.2 集成开发环境,编写和调试程序的基本过程。2、基于uCOS-II 操作系统的应用程序的框架结构。3、
27、操作系统原理中有关文件系统的知识,了解文本文件以及字符串的处理方法。4、使用LCD_printf 向液晶屏输出字符。四、实验设备及工具(包括软件调试工具)硬件:ARM 嵌入式开发平台、用于ARM7TDMI 的JTAG 仿真器、PC 机Pentium100 以上。软件:PC 机操作系统win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成开发环境、仿真器驱动程序、超级终端通讯程序五、实验原理uCOS-II 操作系统本身并没有文件系统,不支持文件相关的管理功能。在将uCOS-II 操作系统移植到ARM 嵌入式开发平台时参考FAT16 为该系统扩展了一个简单的文件系
28、统,从而使该操作系统功能更强大,也符合实际嵌入式产品开发的需要。开发平台的硬件中有一片容量至少16M 的NAND FLASH 存储芯片作为嵌入式设备的固态数据存储器,或称为电子硬盘。该存储器由文件系统管理,在文件系统的功能函数与FLASH 芯片之间有相关驱动程序实现高层系统功能和底层具体硬件的数据交换。嵌入式系统经常使用的存储介质 FLASH 芯片具有和磁盘完全不同的结构特点,开发平台上的K9F2808U0A 芯片具有1024 个Block,每个Block 有32 个Page,每个Page 有51216528 个Byte。这种芯片的读写操作具有以下特点:1)必须以Page 为单位进行读写;2)
29、写之前必须先擦除原有内容;3)擦除操作必须对Block 进行,即一次至少擦除一个Block 的内容。另外可以用OpenOSFile()函数以指定模式打开文件;用ReadOSFile()函数读取已打开文件数据到指定缓冲区; 用WriteOSFile() 函数将指定缓冲区的数据写入到文件; 用LineReadOSFile()函数读取文本文件的一行字符;用CloseOSFile()函数关闭文件,释放文件缓冲区;用SeekOSFile()函数定位文件指针;用DeleteOSFile()函数删除指定文件。六、实验步骤1、进入嵌入式开发平台的BIOS,连接USB 电缆并激活U 盘,在PC 机上向开发平台的
30、FLASH 存储器复制一个小体积文本文件。2、新建工程,将“Exp16 文件的使用”中的文件加入工程。3、打开Main.c 文件,编辑Main_Task 任务中的代码,打开上述的文本文件,逐行读取文件,并显示在液晶屏上。具体的流程如图所示:4、用ARM SDT 2.5 或ADS1.2 编译、下载并调试上述程序,检查运行结果。5、生成发行版本的.bin 文件,通过USB 下载到嵌入式开发板中,运行并检查输出结果。【问题讨论】【1】PC 机上的文件系统原理是怎样的?PC 机的启动过程是怎样的?一 从按下Power Button到CPU Reset这一阶段是通过硬件逻辑电路来完成CPU Reset,
31、并且台式机与笔记本又有所区别。二 BIOS引导阶段(从CPU Reset到操作系统引导) 这一阶段完全在BIOS的控制之下,由BIOS完成微机硬件的自检(POST)与初始化,BIOS还提供BIOS设置和Runtime Service服务(微机原理课学过的BIOS中断服务),最后BIOS将从可引导介质上引导操作系统。三 操作系统引导阶段【2】如何在应用程序中把采集的数据用文件形式保存到 FLASH?有一种方法是将sys_parameter类的文件以二进制的形式写入flash分区5的映射的设备文件。实验七 UDP通讯实验一、实验目的1学习UDP 通讯原理。2掌握Socket 编程方法。二、实验内容
32、编程实现嵌入式开发平台和计算机之间的UDP 通讯。通过触摸屏进行画图,使其在液晶屏上显示,同时通过网络传输数据,使其在计算机屏幕上显示;由计算机控制清除液晶屏上的图形。三、预备知识1用ARM SDT 2.5 或ADS1.2 集成开发环境,编写和调试程序的基本过程。2基于uCOS-II 操作系统的应用程序的框架结构。3系统消息循环和触摸屏消息的处理。4绘图API 函数的使用4UDP 通信原理和网络相关知识。四、实验设备及工具硬件:ARM 嵌入式开发平台、用于ARM7TDMI 的JTAG 仿真器、PC 机Pentium100 以上、交叉序网线。软件:PC 机操作系统win98、Win2000 或W
33、inXP、ARM SDT 2.51 或ADS1.2 集成开发环境、仿真器驱动程序、超级终端通讯程序。五、实验原理及说明1UDP 协议简介1)UDP 协议简介UDP 协议是英文User Datagram Protocol 的缩写,即用户数据报协议,主要用来支持那些需要在计算机之间传输数据的网络应用。包括网络视频会议系统在内的众多客户/ 服务器模式的网络应用都需要使用UDP 协议。UDP 协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但即使是在今天,UDP 仍然不失为一项非常实用和可行的网络传输层协议。2)UDP 和TCP 协议的主要区别UDP 和TCP 协议的主要区
34、别是两者在如何实现信息的可靠传递方面不同。TCP 协议中包含了专门的传递保证机制,当数据接收方收到发送方传来的信息时,会自动向发送方发出确认消息;发送方只有在接收到该确认消息之后才继续传送其它信息,否则将一直等待直到收到确认信息为止。3)UDP 协议的应用也许有的读者会问,既然 UDP 是一种不可靠的网络协议,那么还有什么使用价值或必要呢?其实不然,在有些情况下UDP 协议可能会变得非常有用。因为UDP 具有TCP 望尘莫及的速度优势。虽然TCP 协议中植入了各种安全保障功能,但是在实际执行的过程中会占用大量的系统开销,无疑使速度受到严重的影响。反观UDP 由于排除了信息可靠传递机制,将安全和
35、排序等功能移交给上层应用来完成,极大得降低了执行时间,使速度得到了保证。2SOCKET 简介1)什么是SocketSocket 接口是TCP/IP 网络的API,Socket 接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP 网络上的应用程序。要学Internet 上的TCP/IP 网络编程,必须理解Socket接口。2)Socket 建立为了建立 Socket,程序可以调用Socket 函数,该函数返回一个类似于文件描述符的句柄。socket 函数原型为:int socket(int domain, int type, int protocol);3)Socket 配置通过 so
36、cket 调用返回一个socket 描述符后,在使用socket 进行网络传输以前,必须配置该socket。面向连接的socket 客户端通过调用Connect 函数在socket 数据结构中保存本地和远端信息。无连接socket 的客户端和服务端以及面向连接socket 的服务端通过调用bind 函数来配置本地信息。4)连接建立面向连接的客户程序使用 Connect 函数来配置socket 并与远端服务器建立一个TCP 连接,其函数原型为:int connect(int sockfd, struct sockaddr *serv_addr,int addrlen);5)数据传输Send()和
37、recv()这两个函数用于面向连接的socket 上进行数据传输。Send()函数原型为:int send(int sockfd, const void *msg, int len, int flags);6)结束传输当所有的数据操作结束以后,你可以调用 close()函数来释放该socket,从而停止在该socket 上的任何数据操作:close(sockfd);六、实验步骤1新建工程,将“Exp20UDP 通讯实验”中的文件加入工程。2在main.c 文件中编辑初始化网络函数。3定义计算机端套接字,全局变量。struct sockaddr_in servaddr;4编写Main_Task
38、任务及消息循环主要负责响应触摸屏消息,在屏幕上画图,然后将数据传输到计算机上。5编写Receive_Task 任务主要负责接收计算机发出的清屏控制命令,来执行清屏操作。同时在计算机端设置开发平台IP 时负责接收数据包来获得计算机端IP。6用ARM SDT 2.5 或ADS1.2 编译、下载并调试上述程序,检查运行结果。7打开VC 目录下的上位机控制程序,点菜单“控制设置IP”并在对话框中输入开发平台的IP(确定后控制程序只是向开发平台发送一个数据,使其获得计算机的IP 及端口)。8用手指在触摸屏上轻轻的画图,在计算机控制软件的窗口中显示相应的图形。9通过菜单“控制清屏”命令可以清除计算机和触摸
39、屏上的图形,重新绘图。【注意】 1)由于 Main_Task 任务和 Receive_Task 任务属于不同的进程所以要制定不同的端 口进行通信。 2)UDP 是无连接的传输协议,可能会出现数据丢失和数据顺序不正确的现象,所 以计算机上显示的可能和液晶屏上显示的有些不同。 3)ARM 开发平台的 IP 地址在 BIOS 中设置,请参考实验一中相关内容。这里注意 开发平台和计算机应在同一个网段,即 IP 地址只有最后三位不同。设置后的 IP 地址和 触摸屏校正参数等保存在电子硬盘中固定的位置,函数 LoadConfigSys()将读取这些参数 并存储在全局数组 ConfigSysdata 中,以
40、供程序使用。 【实验问题讨论】【1】如何利用 UDP 通信在开发平台和计算机之间传输一段数据,比如文本文件?原理图如下:服务器:1. (客户端)用FILE指针以“只读“的方式打开一个本地文件,作为发送的数据源,通过文件游标来获取文件的大小,并设置数据包号的初值为1,通过QUdpSocket指针来邦定服务器回馈信息的端口号(9001)。2. (客户端)通过一个按钮点击来触发一个发送文件的槽函数,这个槽函数完成发送文件(sendfile()),并且在每个数据包前面加上验证码(4个字节)数据包号(4个字节)。读取文件时判断文件是否读完了,如果读完了改变验证码数字,只发送验证码数据包号,如果没有读完就
41、把原来的验证码数据包号文件中的内容发送给服务器,文件内容是从文件中通过fread读取的,然后用数组存储起来的,再放在QByteArray类型的数据中,其中部分代码是进度条显示发送进度的。3. (服务器)用FILE指针以”写追加”的方式打开一个文件,这个文件必须于客户端的源文件的文件类型相同,创建一个QudpSocket类型的指针邦定客户端发送数据包的端口(即9000),并通过这个指针来接受一个readyRead()信号来触发接受文件这个槽函数(recievefile())。4. 接受文件这个槽函数具体功能是通过监听这个端口判断是否有数据包发送过来,如果有数据包,那就读取这个数据包,并且通过指向
42、这个数据包的int指针获取其中的验证码,通过验证码来判断客户端的数据报是否发送完成,如果正在发送过程中,就获取其中的数据包号数据包中的内容(存储在数组中),再通过数组中的内容fwrite到服务器打开的文件中去并回馈给客户端一个验证码数据包号,告诉客户端接受到数据包,如果发送完成关闭服务器以打开的文件。5. (客户端)通过监听readyRead()这个信号来触发接受服务器回馈信息的函数(answerserver())。通过QudpSocket指针来判断是否有数据包,如果有数据包,再用指向数据包的int指针来获取数据包中的验证码数据包号,用if判断这是不是服务器回馈过来的数据包,如果是,那再判断获
43、取得到的数据包号是否等于发送的数据包号,是的话,把数据包号1,继续发送文件,不是的话说明数据包丢失重发文件,如果不是,说明数据包丢失,重发文件。实验八 模拟电子画板实验触摸屏应用一、实验目的1进一步了解触摸屏的工作原理。2学习在uCOS-II 操作系统下对触摸屏的编程。3进一步熟悉绘图API,图形控件,消息循环等内容。二、实验内容在液晶屏上设置四个按钮控件,表示四种画板功能:画直线、画圆、画任意折线以及清除图形。在触摸屏上单击一个按钮后,即可以开始在触摸屏上画图或清除原来的图形。三、预备知识1、用ARM SDT 2.5 或ADS1.2 集成开发环境,编写和调试程序的基本过程。2、基于uCOS-
44、II 操作系统的应用程序的框架结构。3、触摸屏的驱动程序原理。4、系统消息循环、图形API 函数以及控件的使用。四、实验设备及工具(包括软件调试工具)硬件:ARM 嵌入式开发平台、用于ARM7TDMI 的JTAG 仿真器、PC 机Pentium100 以上。软件:PC 机操作系统win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成开发环境、仿真器驱动程序、超级终端通讯程序五、实验步骤1、新建工程,将“Exp22 模拟电子画板”中的文件加入工程。2、打开main.c 文件,编辑Main_Task 任务中的代码。定义控件及绘图的矩形区域,创建按钮控件并显示每个按钮代表的功能。启动消息循环,响应触摸屏消息。3、用ARM SDT 2.5 或ADS1.2 编译、下载并调试上述程序,检查运行结果。4、生成发行版本的.bin 文件,通过USB 下载到嵌入式开发平台中,运行并检查输出结果。提示:1)用CreateButton()函数创建按钮控件,其参数Caption 即要
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- DSA护理中的儿科护理与护理
- 孕期乳房护理与母乳喂养准备
- 护理教学中的学生主体性发挥
- 九年级上册语文期末作文押题常考主题范文6篇
- 第二章第三节河流第1课时
- 地址识别与反欺诈系统设计
- 房地产 -日内瓦办公室2025年第三季度 Snapshot Office Geneva Q3 2025
- 城市发展戏剧影响
- 2026 年中职康复治疗技术(言语治疗)试题及答案
- 办公楼网络升级服务协议2025
- 2025-2026学年教科版小学科学新教材三年级上册期末复习卷及答案
- 中投公司高级职位招聘面试技巧与求职策略
- 2026中国大唐集团资本控股有限公司高校毕业生招聘考试历年真题汇编附答案解析
- 2025福建三明市农业科学研究院招聘专业技术人员3人笔试考试备考题库及答案解析
- 统编版(部编版)小学语文四年级上册期末测试卷( 含答案)
- 养老金赠予合同范本
- 2025年南网能源公司社会招聘(62人)考试笔试参考题库附答案解析
- 2025年河南中原国际会展中心有限公司社会招聘44名笔试备考题库附答案解析
- 推广示范基地协议书
- 消防员心理健康教育课件
- 2025年服装行业五年发展时尚产业与可持续发展报告
评论
0/150
提交评论