西南林业大学
《测绘软件开发与应用》
实 验 报 告
测绘工程系制
实验一 开发平台常用部件的使用
实验日期_ 20##年5月3日 _
得 分______ _______
1.1 实验项目
在窗体上放置一个标签、一个文本框和一个命令按钮,单击命令按钮,则在标签上显示“大家好!”,在文本框显示“欢迎来到这里!”。
1.1.1 界面设计
1、界面设计截图
2、界面设计属性表
1.1.2算法描述及代码
Command1的单击事件进行编程,输入如下代码:
Private Sub Command1_Click()’更改文本框内容
Label1.Caption = "大家好!"
Label1.FontName = "宋体"
Label1.FontSize = 15
Label1.FontBold = True
Text1.Text = "欢迎来到这里!"’更改文本框内容
Text1.FontName = "黑体"’设置文本框字体
Text1.FontSize = 16’设置文本框字体大小
Text1.FontBold = True
End Sub
1.1.3 调试过程及实验结果
1、实验结果截图如下:
1.1.4 总结
本次实验主要练习了标签、文本框和命令按钮的显示,本次实验比较简单,用时也较短,中间没有出现什么问题。通过本程序,掌握了利用VB进行程序设计的整个流程。本次实验附件包括:程序源代码、可执行文件。
1.2 实验项目
熟悉新建工程和窗体
1.2.1 界面设计
实验结果截图如下:
1.2.2用三种除法运算(/,\,mod)做计算
实验结果截图如下:
Dim beichushu, chushu As Single
beichushu = Val(Text1.Text)
chushu = Val(Text2.Text)
Text3.Text = beichushu / chushu
Text4.Text = beichushu \ chushu
Text5.Text = beichushu Mod chushu
1.2.2 熟悉多窗体的操作
实验结果截图如下:
Private Sub Cmdexit_Click()
Unload Me
End Sub
Private Sub Cmdok_Click()
If txtname.Text = "lx" And txtpassword.Text = "1234" Then
Form2.Show
Me.Hide
Else
Form3.Show
Unload Me
End If
End Sub
Private Sub Command1_Click()
Form1.Show
Unload.Show
End Sub
Private Sub Text1_Change()
Text1.Text = "软件资源" & vbCrLf & "软件资源"
End Sub
Private Sub Form_Load()
Unload Me
End Sub
1.2.4 简易计算器的程序设计
实验结果截图如下:
Private Sub Command1_Click()
Dim num1, num2, result As Single
Dim op As String
num1 = Val(Text1.Text)
num2 = Val(Text3.Text)
op = Trim(Text2.Text)
Select Case op
Case "+"
result = num1 + num2
Case "-"
result = num1 - num2
Case "*"
result = num1 * num2
Case "/"
If num2 = 0 Then
MsgBox ("运算符不能为0,请重新输入第二个数")
Text3.Text = ""
Text4.Text = ""
Text3.SetFocus
Exit Sub
Else
result = num1 / num2
End If
Case Else
MsgBox ("运算符不符合要求,请重新输入运算符!")
Text2.Text = ""
Text4.Text = ""
Text2.SetFocus
Exit Sub
End Select
Text4.Text = result
End Sub
Private Sub Label2_Click()
Dim num1, num2, result As Single
Dim op As String
num1 = Val(Text1.Text)
num2 = Val(Text3.Text)
op = Trim(Text2.Text)
If op = "+" Then
result = num1 + num2
ElseIf op = "-" Then
result = num1 - num2
ElseIf op = "*" Then
result = num1 * num2
ElseIf op = "/" Then
If num2 = 0 Then
MsgBox ("运算符不能为0,请重新输入第二个数")
Text3.Text = ""
Text4.Text = ""
Text3.SetFocus
Exit Sub
Else
result = num1 / num2
End If
Else
MsgBox ("运算符不符合要求,请重新输入运算符!")
Text2.Text = ""
Text4.Text = ""
Text2.SetFocus
Exit Sub
End If
Text4.Text = result
End Sub
1.2.5 单按钮和复按钮的使用
实验结果截图如下:
Private Sub Command1_Click()
Dim zihao As Integer
Dim ziti As String
If Option1.Value = True Then
zihao = 16
Else
zihao = 20
End If
If Check1.Value = 1 Then
Text1.FontBold = True
Else
Text1.FontBold = False
End If
If Check2.Value = 1 Then
Text1.FontItalic = True
Else
Text1.FontItalic = False
End If
If Option3.Value = True Then
ziti = "宋体"
Else
ziti = "黑体"
End If
Text1.FontSize = zihao
Text1.FontName = ziti
End Sub
1.2.5 总结
本次实验主要练习了界面设计、多种除法运算、简易计算器的制作、多窗体的运用和单选复选框的运用,中间没有出现什么问题。通过本程序,掌握了利用VB进行程序设计的部分过程。
第二篇:实习报告
\.
一、前言
随着信息化技术的发展和数字化产品的普及,以计算机技
术、芯片技术和软件技术为核心的嵌入式系统再度成为当前研究和应用的热点,通信、计算机、消费电子技术(3C)合一的趋势正在逐步形成,无所不在的网络和无所不在的计算(everything connecting, everywhere computing)正在将人类带入一个崭新的信息社会。
二、实习目的
作为还没有踏入社会的大学生,面对自己未来的生活和工作,我们是迷茫的,心中有很多疑问,特别是需要到真正的工作环境中去感受一下自己几年后会从事的工作。因此学校为我们安排了毕业实习,主要是让我们较深层次接触社会,运用所学的专业知识认识企业实践活动,了解企业运行环境,认识企业企业管理业务流程,为将来走上工作岗位打下基础。
关于本次实习的目地,大可分为以下几点:
(1)此次实训是由学校发起,学生自行寻找工作,利用有限的时间来加强学生对于专业知识的掌握与运用。学生在实习期间,可以与工作上的小组成员相互协作,完成项目。以此来加强每个人之间的交流能力、互相帮助、互相协作,也可提高自身的专业技能。实习可以学到在课堂上学不到的只是,可以将学到的只是灵活运用起来。
(2)在实习过程中,让我们树立明确的学习态度,拥有良好的职业素养,锻炼扎实的职业技能,塑造坚定的职业人格。实训也可锻炼同学的积极性,开放性。由于家庭的影响,学生之间性格迥异。在处理事情是,有事只会一味的逃避,而有的却不管不顾的向前冲。实训是一个很好的平台用于加强学生的表达能力,交流技巧。在小组内互帮互助,组与组之间相互竞争,在竞争中前进。
(3)实训锻炼了学生的故障分析能力,结合理论找出故障的原因,并且加以排除和修改。只有在错误中改进,才不会重复错误。只有互相之间有过交流讨论,才会发现自身的不足之处,学习他人的优点。
(4)对于程序设计人员,要具备良好的团队协作和沟通能力;有良好的自我管理能力和一定的项目管理能力;较强的沟通学习能力,对技术有热情,有能力直接跟踪和学习最新的软件技术;有较强的系统分析能力等等。很显然,对于这些,我们的实训是必然存在的。
同时,在实训的时候打好基础,也对于以后的共工作有着很大的帮助。所以对于这样一个好的平台,我们一定要好好的利用!
在大学期间,实训的次数屈指可数,大学毕业后就直接投奔于事业中。在以后的生活中,事业上,我们少不了与他人进行合作,交流。现在的实训是为了以后更好的立于社会之中。所以现在努力一些,将来就可以轻松一些;现在细心一些,将来就可以 少一份担心;现在磨平自己的菱角,将来就可以在人与人之间相处占据主导地位。
二、实习时间
三、实习地点 浙江 杭州市 江干区 天城东路下沙创意大厦
公司简介:
杭州炽鸟科技有限公司主营wifi摄像头等。公司秉承“顾客至上,锐意进取”
的经营理念
岗位介绍: 我在杭州吃鸟科技实习期间的岗位是C语言软件开发。实习期间参与wifi设置视频传输的开发,根据开发规范和流程独立完成模块设计、编码、测试。编写相关应用系统的开发文档、数据库设计文档等。较为详细和系统的掌握了软件开发的知识体系。把所学知识与解决实际问题相联系,培养了自己发现问题、分析问题和解决问题的能力,从而提高了自己从事实际工作的能力。
四、实习内容
4.1开发工具介绍
4.1.1rt5350开发板
4.1.2 C语言:C语言是一门高级计算机编程语言,设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。C语言也很适合搭配汇编语言来使用(往往可以通过内联汇编语言或与汇编语言目标文件一起连接。对于任何一种操作系统环境,C函数的ABI(Application BinaryInterface)与汇编语言的子过程(routine/procedure)的ABI一定是完全兼容的)。尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
4.1.3 vmware workstation:VMWare虚拟机软件是一个“虚拟PC”软件,它使你可以在一台机器上同时运行二个或更多Windows、DOS、LINUX系统。与“多启动”系统相比,VMWare采用了完全不同的概念。多启动系统在一个时刻只能运行一个系统,在系统切换时需要重新启动机器。
4.1.4 Source Insight:Source Insight是一个面向项目开发的程序编辑器和代码浏览器,它拥有内置的对C/C++, C#和Java等程序的分析。能分析源代码并在工作的同时动态维护它自己的符号数据库,并自动显示有用的上下文信息。
4.1.5SecureCRT: SecureCRT是一款支持SSH(SSH1和SSH2)的终端仿真程序,简单地说是Windows下登录UNIX或Linux服务器主机的软件。
Secure[1] CRT支持SSH,同时支持Telnet和rlogin协议。SecureCRT是一款用于连接运行包括Windows、UNIX和VMS的理想工具。通过使用内含的VCP命令行程序可以进行加密文件的传输。有流行CRTTelnet客户机的所有特点,包括:自动注册、对不同主机保持不同的特性、打印功能、颜色设置、可变屏幕尺寸、用户定义的键位图和优良的VT100,VT102,VT220和ANSI竞争.能从命令行中运行或从浏览器中运行.其它特点包括文本手稿、易于使用的工具条、用户的键位图编辑器、可定制的ANSI颜色等.SecureCRT的SSH协议支持DES,3DES和RC4密码和密码与RSA鉴别。
4.2实习用到的部分知识点:
4.2.1 tcp编程和udp编程:TCP (Transmission Control Protocol)和UDP(User Datagram Protocol)协议属于传输层协议。其中TCP提供IP环境下的数据可靠传输,它提供的服务包括数据流传送、可靠性、有效流控、全双工操作和多路复用。通过面向连接、端到端和可靠的数据包发送。通俗说,它是事先为所发送的数据开辟出连接好的通道,然后再进行数据发送;而UDP则不为IP提供可靠性、流
控或差错恢复功能。一般来说,TCP对应的是可靠性要求高的应用,而UDP对应的则是可靠性要求低、传输经济的应用。TCP支持的应用协议主要有:Telnet、FTP、SMTP等;UDP支持的应用层协议主要有:NFS(网络文件系统)、SNMP(简单网络管理协议)、DNS(主域名称系统)、TFTP(通用文件传输协议)等。
4.2.2 pthread线程的应用:POSIX线程(POSIX threads),简称Pthreads,是线程的POSIX标准。该标准定义了创建和操纵线程的一整套API。在类Unix操作系统(Unix、Linux、Mac OS X等)中,都使用Pthreads作为操作系统的线程。Windows操作系统也有其移植版pthreads-win32。
4.2.3 v4l2视频采集:V4L2有一段历史了。大约在1998的秋天,它的光芒第一次出现在Bill Dirks 的眼中。经过长足的发展,它于20xx年x月,发布
2.5.46 时,融入了内核主干之中。然而直到今天,仍有一部分内核驱动不支持新的API,这种新旧API 的转换工作仍在进行。同时,V4L2 API也在发展,并在
2.6.18 版本中进行了一些重大的改变。支持V4L2的应用依旧相对较少。V4L2在设计时,是要支持很多广泛的设备的,它们之中只有一部分在本质上是真正的视频设备:
使程序有发现设备和操作设备的能力.它主要是用一系列的回调函数来实现这些功能。像设置摄像头的频率、帧频、视频压缩格式和图像参数等等。当然也可以用于其他多媒体的开发,如音频等。
但是此框架只能运行在Linux操作系统之上。
4.3 实习过程
怀着对IT行业的憧憬,我进入了杭州吃鸟科技有限公司实习,我在公司所从事的工作是C语言软件开发。在实习之前,我特地重新温习了C语言和linux操作。实习开始后前辈教给了我们一些软件开发的基础知识,使我对软件开发有了一定的认识,也更想探寻一下真正的软件开发工作。在我真正投入工作之前,我在网上查询了许多程序员的相关要求,了解了作为一个开发人员必须耐心,细心和平和的心态,,提高产品的质量,降低维护的成本,尽可能的达到客户的需求
4.3.1 学习开发操作流程
1、首先制定项目计划,最初计划是里程碑性质的。可以先按瀑布模型设置,里程碑点主要为需求评审、设计评审、经过代码开发和单元测试后进行集成测试、部署上线是一个很重要的里程碑,一般用户会期望系统何时能使用进入试运行期(也可以称为用户测试阶段)
2、需求开发阶段:怎么样写好需求很关键,如何学会进行需求开发可以去看下经典的《需求工程》这个翻译的书,不是很厚,但需要能理解为什么那样做更好,这个需要实践经验锻炼自己。如果有项目成员,可以一起做需求,这个阶段对于业务理解、分析、如何开展调研以及文字表述、业务流程图描述还有文档编辑能力都有不少要求。一般分为《用户需求说明书》和《需求规格说明书》,小项目可以写一个《需求分析报告》,《用户需求说明书》是用用户的语言进行描述,让用户和开发团队对于需求的达成一致的理解,《需求规格说明书》,则是对用户需求的分析,形成系统要具有的功能,这个是真正提供用户可交互操作的文档,也就是后期设计和代码开发的重要基线。 另外,作为了解需求,拿出用户UI和用户交流也是一项比较重要的需求获取手段,虽然这个属于设计的范畴
3、系统设计阶段: 系统总体架构,结合用户对系统环境、开发语言以及运行的网络硬件等要求,确定开发工具等,对应用系统关系进行架构性设计,通过需求阶段对用户的分析归类,用图的方式描述出用户和各子系统或模块的全局视图,以及和其他系统的关系。也就是搞清楚系统的边界问题。 概要设计中除了高层架构设计,还需要设计网络拓扑图,以及系统部署图。概要设计比较重要的还有就是子系统、模块进行合理的划分。模块的名称很大程度上会成为用户的主要菜单,如何用用户的角度去取比较清楚的子系统和模块是很重要的。
4、代码开发和单元测试阶段:这个阶段一般来说需要改进瀑布模型,类似跌代开发,把模块进行合理划分,把项目总体计划的代码开发测试阶段划分为多个时间段,每个时间段都包括代码开发、单元测试和集成测试,这个阶段还需要对需求变更进行跟踪控制,如果需求有变更,那么要把需求文档、设计文档都重新跟上。跌代开发的好处就是不让代码开发阶段拉的过程,没有进行及时的自我检查,不小心到了提交时间,却不是用户想要的,还有可能都不是自己想要的。 项目经理重要的责任是控制好进度,能及早发现风险,并能拿出好的预防和解决办法的措施。合理安排好开发团队的任务,合时的任务安排和衔接,你会觉得非常有艺术感,这个要自己体会了。另外,关注项目团队各人员的状况,保持高的战斗力,及时发现并能鼓励团队共同朝一个目标前进。
6、测试工作,测试是项目的很重要的环节,怎么测试,怎么准确测试,怎么有效测试,怎么覆盖测试,时间、人手、经验扽个方面都会有制约。高级测试人员能够分析系统各测试要点,在需求、设计阶段都要参与,提早了解如何去测试,能写出测试用例。
7、文档工作,文档在项目开发中也占有重要位置,除非你觉得代码是项目唯一的成果,那么你把文档抛掉吧,什么都在你的脑子里,团队中人员一走,项目的一部分也就带走了。代码开发其实也需要文档,代码是成果,代码注释是成果,模块开发卷宗也是重要的成果,因为程序员在开发时候的逻辑是怎么样的,对于今后查问题很有作用。除非你的系统设计程度到了方法、类,把代码逻辑也都设计好了,那么程序员就CODEING去吧。
4.3.2tcp开发总结
复用和分用:在TCP/IP协议族中只有一个TCP协议,但是却可能有多个应用程序需要使用TCP的服务。要处理这种情况,TCP使用复用和分用。
急迫数据:TCP可以处理这种情况。在发送端的应用程序可请求急迫(push)操作。这就表示发送端的TCP不必等待窗口被填满。
紧急数据:但是,在某些情况下,应用程序需要发送紧急字节。这表示发送应用程序希望某一块数据由接收应用程序不按序读出。
TCP协议端口号的分配:在本地计算机上运行的客户程序定义它自己是使用端口号,它由运行在本地主机上的TCP软件随即选取。这叫做短暂端口号。
4.3.3 v4l2开发总结
操作系统一般把系统使用的内存划分成用户空间和内核空间,分别由应用程序管理和操作系统管理。应用程序可以直接访问内存的地址,而内核空间存放的是供内核访问的代码和数据,用户不能直接访问。v4l2捕获的数据,最初是存放在内核空间的,这意味着用户不能直接访问该段内存,必须通过某些手段来转换地址。 一共有三种视频采集方式:使用read、write方式;内存映射方式和用户指针模式。
read、write方式:在用户空间和内核空间不断拷贝数据,占用了大量用户内存空间,效率不高。
内存映射方式:把设备里的内存映射到应用程序中的内存控件,直接处理设备内存,这是一种有效的方式。上面的mmap函数就是使用这种方式。
用户指针模式:内存片段由应用程序自己分配。这点需要在v4l2_requestbuffers里将memory字段设置成V4L2_MEMORY_USERPTR。
处理采集数据
V4L2有一个数据缓存,存放req.count数量的缓存数据。数据缓存采用FIFO的方式,当应用程序调用缓存数据时,缓存队列将最先采集到的 视频数据缓存送出,并重新采集一张视频数据。这个过程需要用到两个ioctl命
令,VIDIOC_DQBUF和VIDIOC_QBUF
五、实习总结
通过这次实习机会,我主要学习了以上这些C语言编程和linux开发的技术,同时也明白了身处公司中如何更好地与同事配合,毕竟在软件开发中,你不可能一个人干完一个系统,大家都是通过svn等团队管理工具互相配合完成编程任务。在实习之前,我对软件开发的过程只有一个模糊地印象,以为只要把代码编写完之后就算
基本上一个项目开发完毕了。然而通过这次实习,彻底颠覆了我的认知,我当时的认知无疑是非常幼稚和可笑的,完全的软件开发过程不只只是编写代码,在编写代码之前还有好多的事情要做,比如文档的编写、对项目进行需求分
析、数据库设计等等。代码编写完成之后还要进行测试,以及人员的培训,这些都是必须做,也是必不可少的项目,甚至比代码的编写还重要。
我在开发期间遇到很多问题,但是我会试着到网络去找答案,如果实在找不到我会试着问问我的上级,或者跟一些朋友讨论一下,如果发现了这个问题的答案我会及时把它记录下来,方便以后遇到问题可以随时翻阅,我相信好记性不如烂笔头这句话,我也相信如果一个程序员写的代码没有错误那只能证明他没写过代码,虽然我比较懒,但我现在有空的时候都会对着电脑敲代码,我相信手感是敲出来的,你看10遍都不如你敲一遍来得印象深刻。
通过这次实习,我认识到了一个软件开发的完整的过程,为我今后进行实际的工作奠定了坚实的基础。首先,进入公司,你就是一名职业人,不再是一名学生,你要具备一名职业人应具备的素养,不迟到不早退是必然的,而且还要时刻严格要求自己,公司的规定要严格遵守。然后,在技术上也有了很大的提高,学习了很多公司自己的框架和工具,这都是一些前辈的宝贵经验。而且所作的软件应用性更强。所以,在今后的学习中我会严于律己,认真学习有关软件编程的课,为以后的工作打好坚实的基础。