精华内容
下载资源
问答
  • 如何写项目设计方案

    千次阅读 2012-04-01 16:13:07
     一份成功安防监控工程设计方案是赢得单子的重要砝码,如何写一份令客户心动的安防监控工程设计方案则需要下苦功夫。监控系统是属于弱电系统中的一种安防范系统,它集微机自动识别技术和现代安全管理措施为一体,是...

    如何写安防监控工程设计方案书

    (其他项目也适用)

        一份成功安防监控工程设计方案是赢得单子的重要砝码,如何写一份令客户心动的安防监控工程设计方案则需要下苦功夫。监控系统是属于弱电系统中的一种安防范系统,它集微机自动识别技术和现代安全管理措施为一体,是一种先进的、防范能力极强的综合系统,它可以通过遥控摄像机及其辅助设备(镜头、云台等)直接观看被监视场所的一切情况,可以把被监视场所的情况一目了然。同时,电视监控系统还可以与防盗报警系统等其它安全技术防范体系联动运行,使其防范能力更加强大。

        一个好的监控系统方案对项目的投标起着重要的作用,由于监控系统涉及电子,机械,光学,计算机技术,通讯技术,生物技术等诸多技术,需要在方案里详细配置好。监控系统是弱电、综合布线、系统集成中一个较新的项目,也越来越成为智能化大厦的必选配置,虽然并不复杂 , 但是很多工程师还是对怎样配置和编写监控方案显得非常陌生,下面我就手把手教大家如何制作监控系统方案。  

     

        首先要一条因素是方案书涵盖的内容要全,包含整个项目实施的所有环节甚至是一些细微的小事情也不要放过,都要用文字的形式描述出来,描述时不要用专业技术用语去阐述这个安防工程的主要特点,这样客户看不懂,专业技术用语可以用在介绍产品上一定要显得规范和权威,通过专业参数的描述 , 引用相关标准等来突出规范 .

     

        这样总的下来有个几十页上百页的施工方案交给客户以后,客户通过方案书中对产品和工程实施细致的描写就能对你公司实力佩服无体投递了,这样给竞争对手也是一个打击

    注意的是:

              方案书的的书写格式一定要按照先项目后产品的方式来进行,千万不可把方案书内容排序的乱七八糟,一定要富有逻辑性实用性可靠性,客户看完后,能通俗易懂,容易理解。描述要直观采用是图文并茂的形式, 过于抽象的文字描述 , 只会增加客户烦躁的心理 , 特别是软件功能 , 一定要有界面的图片来佐证


    制作监控系统方案的几个要点:

     

    要点1: 介绍监控系统

     

        应该简明扼要地介绍所实施的监控系统特点, 要让客户明白什么是监控系统实施后有什么优点, 监控系统的主要组成部分运行流程, 监控系统的功能和作用,以上各部分一定要配上监控系统的拓扑联网示意图,介绍安防产品时先图片后安防产品的详细参数, 安防产品图片不可马虎一定要精心制作,美观大方,配上专业术语加技术标准。

     

    要点2: 公司简介和资质证书

     

        公司简介要突出公司在安防监控方面的优势,扬长避短地将公司的实力和特长表现给客户,再加上客户比较认同的经营理念的描述 . 资质证书好歹要有几个,客户不是一定要你有什么证书,只是客户习惯了, 方案中怎么都要有证书 , 最好将复印件附在方案后面 , 包括彩页显得厚厚的 .

     

    要点3: 监控系统项目的计划和施工细节

     

        这节的重点是要对客户的需求非常了解,写计划书前一定要对施工场地进行仔细的现场勘察,并对这些特点讲述清楚, 也要有图 , 客户会通过你的周密的计划 , 来判断你是否专业 , 是否规范 , 是否有实力 . 施工周期一定要给自己留有余度 , 万一有个什么事情也可以如期完成 . 


    要点4: 监控方案设计原则和设计依据规范

     

        阐述监控系统设计原则时 , 要从客户角度出发 , 要有侧重点 . 因为客户的选型取向是不同的 , 有的看重品质 有的看重先进性 有的看重功能强大有的看重性价比 , 描述时一定要投其所好 . 设计依据往往是一些标准的名称 , 也许你自己也不明白是怎么一回事 , 不过你还是把他们罗列出来 . 以示权威和规范 .

     

    要点5: 典型客户名单和样板工程

     

        中国人有这么一个消费心理 , 大家都用的东西 , 应该不会差到哪里去 . 去餐馆吃饭也是 , 如果这个餐馆没人你肯定不敢进去 . 所以典型客户的名单越多越好 , 如果你自己的不够 , 就借用厂家的客户名单来凑 , 如果客户是特定行业的客户 , 该行业的其他客户名称就要放在显眼的地方 . 样板工程最好是根据客户的配置来展示 , 如果客户是大型的监控系统 , 样板工程一定要是大型的 . 如果客户是小型的监控系统 , 则样板工程大型小型都要 , 让客户产生你既然能做大型的做我的小型的监控应该没有问题 , 不要让客户产生你是做大型监控的 会不会我的小型监控你反而做不好的心理 .

     

    要点6: 监控系统设备清单和价格

     

        监控系统设备清单一定要明细 , 每一项 , 为什么要用 , 要用多少 , 要讲得清清楚楚 , 不要企图多报配置 , 或者蒙混过关 , 你诚实 , 客户才会更相信你 . 价格可以根据客户的消费习惯适当报高一点 . 不要报得太高 , 太高会把客户吓跑的 , 如果报了实价 , 客户一还价 , 你不答应就显得没有诚意了 . 此外 , 一定要把工程施工费用 , 耗材等其他费用考虑在内 . 并进行合理预算 .

     

       要给自己留有余度 , 万一有个什么事情也可以如期完成 .

     

    要点7: 具体系统设备设计配置情况

     

        要根据客户醒目具体情况,有针对做系统配置,对机房设备,设备接口,与其他系统接口,均详细描述,让客户感觉你针对该项目做过很详细设计,要有系统结构图,不要太详细,给客户大概结构就可以;

     

    要点8:系统的扩展性

     

        计划书中要对产品后期的扩展给出一定的计划范围,让客户了解现在将要安装的设备,在不远的将来还有什么作用,需要配置什么设备才会达到这样的功能。并对系统目前在行业中技术地位给与说明。

     

        要想拿到工程项目单子只靠计划书写的好还是不够了,如果再加上良好的人格魅力,这样就可以万无一失了。


    展开全文
  • 如何项目规划和方案设计文档

    万次阅读 多人点赞 2018-07-27 09:49:14
    问题可大可小,形式上是否叫它为一个项目并不重要,重要的是为了解决这个问题,项目规划和方案设计的流程是一致的。就大数据平台构建的语言环境来说,它可以是整个平台体系的搭建方案,也可以是具体某个组件如调度...

     

    在工作中,很多时候,我们都需要就一个问题提出一个解决方案,这时候,我们很可能需要产出一个文档来供大家讨论,并指导下一步工作计划。

    问题可大可小,形式上是否叫它为一个项目并不重要,重要的是为了解决这个问题,项目规划和方案设计的流程是一致的。就大数据平台构建的语言环境来说,它可以是整个平台体系的搭建方案,也可以是具体某个组件如调度系统的建设,还可以是某个具体的功能点或问题改进比如用户任务脚本的依赖关系分析,系统稳定性的提升等等。

    一篇项目规划和设计文档的好坏,往往决定了一个项目整体的调性和可预期的产出结果。但是,这么重要的文档,真正能写好的同学却并不多,很多同学甚至可能都没有意识到它的重要性,而仅仅是把它当作领导要求的一个软件流程的规范来简单应付,怎么快怎么来。

    事实上,撰写项目规划和设计文档,最重要的不是文档的模版和格式,而是里面的具体内容,它往往需要结合实际客观环境因素来综合考虑,平衡取舍,是一个需要充分脑力活动的工作。尽管如此,在大多数情况下,还是有一些相对通用的指导原则可以帮助我们更好的完成这项工作。

    本文侧重于方案的需求分析到概要设计部分,因为这部分内容通常是最容易被大家忽视,也最需要方法论和“端正的思想”来指导的 ;)而详细设计相关内容,考验更多的是技术的深度,以及如何做到全面周到,我计划在后续文章中另行阐述。

    总体原则和目标:

    首先,需要有明确项目背景,目标,以及核心需求分析

    方案规划设计文档的好坏,几乎完全取决于这一部分内容。但多数同学在这一部分内容身上,往往花费的时间却是最少的,常见的方式,就是“直奔主题”,上来就写具体要做的事

    项目背景和目标

    项目背景不是让你写一堆无关痛痒的铺垫材料。实际上,项目背景的作用是:

    Why?为什么要在这个时候做这个项目?

    换句话说,就是这个项目从产品或业务的角度,最核心的推动力是什么?再换句话说,痛点是什么?

    有痛点自然就有目标,你希望项目最终以什么方式解决问题,能达成什么目标。

    背景和目标的阐述,必须要能够自然合理的推导出下一部分内容:项目的核心需求/功能是什么。

    如果项目背景,目标的描述不能起到这个作用,那这一节内容就没写好,因为项目方案文档就缺乏了根本的出发点,后续的内容都没有了好坏对错判断的基本依据。

    项目核心需求

    项目核心需求和项目目标有什么区别?实际上没有严格的区别,只是对需要解决的问题的概括抽象程度的不同,或者描述角度的不同。

    目标可以理解为希望达到的一个状态,是抽象的,和技术方案无关的偏结果角度的表述方式。

    而项目核心需求,可以理解为了解决背景描述的问题,为了实现那几个目标,进一步推导出来的,在当前系统环境或方案框架体系中:必须要提供的产品功能形态,或者是必须满足的关键特性,又或着是不能违背的约束条件。你也可以理解为用更技术的语言进行细化描述的项目目标。因为目标和背景的不同,可能同一件事推导出来的核心需求也不同。

    这么说比较抽象。举个例子,如果我想构建一个数据交换服务或ETL系统,那么上述各环节的内容可能是(简化的写):

    • 背景 : 当前数据ETL链路极端难用,效率低下,稳定性差,维护代价高,用户抱怨多等等。
    • 目标 : 用户全自助,简单易用;可维护性好;性能高;可靠性好。
    • 核心需求 :比如针对“用户全自助,简单易用”这点(其它目标可以类似分析推理),可能是:
      • 提供统一的,标准化的配置后台:用配置的形式表达ETL业务语意,屏蔽下层实现细节。
      • 提供完善的错误反馈信息/机制:让用户能自助解决使用中遇到的问题。
      • ETL业务流程标准化:将最佳实践沉淀下来,通过配置的方式让用户选择,减少重复工作,降低用户开发的难度,规避使用姿势错误可能造成的问题。

    讲完区别,继续回来讲,这部分内容的要求。很多同学在写这部分方案的时候,很容易把需求和实现手段混为一谈。所以:

    核心需求的重点是:本质上需要提供什么能力,而不是具体实现上要做什么

    换个角度说,核心需求的描述方式是:要做成什么样,是功能目标而不是实现手段。

    在完整的项目文档中,显然目标和手段都需要,但是

    目标必须先于手段,而非相反

    原因也很简单,脱离了目标谈手段是没有意义的,很容易导致方向做偏,使得最终的结果产出背离了项目最初真正的需求出发点。

    实践中,做成什么样和怎么做有时候很难绝对分开。一句话的描述方式可能既包含了目标需求也包含了实现手段。那么,怎么判断这部分内容写得是否满足要求呢。

    • 如果你描述的侧重点只是需求的一种实现方式,而这个需求可能还有更多的其它实现方式,或者即使真的只有一种实现方式,你所描述的内容的也只是因果关系中,间接的因而非直接的果,那么很可能你描述的就只是手段而非目标。
    • 如果看文档的同学看完只知道你要做什么,而不知道做这些是为了什么?是否做这些就足够了,还应该做点别的?是否有别的解决方案,又或者做完了到底有什么用。那么也很可能是因为你把需求和实现手段混为一谈了。
    • 核心需求必须是本质的,一定要实现的功能,它是一个原则,不是工作列表。不要事无巨细,凡是想做的都列在上面,那样反而淡化了项目最根本的诉求。但它也必须足够全面,要能确实解决项目目标中所提出的要求,应该用适当抽象的语言概括一个完整的事项。

    总结一下,核心需求的根本目标是,让参与项目的同学有方向感,能够知道这个项目最终想要通过提供哪些能力,满足哪些约束条件来解决问题,至于怎么实现,具体要做哪些事,那是下一步才需要回答的问题,简单来说:先选择做正确的事,再考虑怎么把事做正确。

    其次,需要对现状和问题进行充分的收集和分析

    这一部分内容,从实际操作的先后顺序来说,未必是第二步,很可能在我们总结前面的背景,目标,核心区需求的时候,就需要加以收集和分析。

    不过,从方案文档的角度来说,放在这里,是为了进一步细化问题,分析目标,核心需求与当前现状的差距在哪里,具体有哪些实际问题需要解决。为后续具体的实现方案,准备必要的输入信息,确定工作的优先级,重要性,项目迭代的步骤等等。

    需要强调的是,现状和问题分析,要围绕前面的核心需求的条目展开,两者是强关联的,不要相互脱节,各讲各的

    这块内容本身没有太特别的地方,就是现在实际情况如何,有什么问题,关键是如何把问题收集完整。

    所以这部分内容,难的是如何发现问题,很多做技术的同学往往容易陷入只关心技术难点,只能看到技术问题的局面中,而实际上,更多的问题往往是整体流程如何设计更加合理的问题,而不是技术方案绝对对错的问题。

    尽管行文上不难,但它的重要性,也往往容易被忽略,很多情况下被简单对待。实际的情况是,很多项目的方案计划往往是在对现状问题相关信息没有充分收集和分析的基础上就做出来的。导致项目方案后期不断调整,或者一期一期的总是在小步迭代,甚至不断推翻重来。而最终使用方真正关心的问题却一直没有得到重视和解决。

    最后,是输出解决方案

    定完需求目标,分析完问题和现状,接下来才是规划具体做什么,怎么做,什么时候做。

    这部分内容,强依托前面的核心需求和问题分析工作,没有做好前面的准备工作,千万不要着急开始动手“规划”方案!!!

    那么具体写的时候有哪些注意事项呢?

    做什么:

    • 做什么和前面项目目标的要求刚好皆然相反,需要输出明确的可执行的事项,而不是模糊的不可执行的要求。
    • 具体做的每一件事情,都要和前面的核心需求和现状问题对应上。如果你发现有些工作,和前面的目标没有任何关联性,那么考虑一下目标是否需要再评估调整,或者这件事情根本就是不重要的。
    • 要做的事项列表,是一个经过归纳思考以后的总结,而不只是一个个零散的事情的随机列表。需要有重点和优先级。如果有必要,以归类,分组等形式结构化的组织相关联的事项。
    • 完整的事项列表,应该是一个和最终目标对应的完整解决方案,而不仅仅只是完成目标工作中的某一个环节。
      • 比如面向用户的终端产品项目,需要包括整个产品的交互逻辑,业务流程的规范设计等等,而不仅仅是对底层系统实现和后台功能点的设计。
      • 这点很多同学也很容易忽略,总觉得功能和架构的实现才是有挑战,需要规划的内容,而产品的形态并没有花心思去琢磨,事后开发前端时才来考虑。实际上后者可能才是真正影响项目成功的关键,也很可能会影响到底层架构的设计和取舍。类比一下,好比一个用户产品都开发完了,才来考虑埋点,数据采集和数据分析的工作,这时候就很被动了。

    怎么做:

    • 前期方案文档,没有必要列出详细的技术方案细节,只需要一个整体的技术方向选型和初步的架构设想。但是,如果是涉及到核心需求能否有效满足的关键的技术点,有可能影响整体的架构或产品实现的,那就有必要就可能的方案的进行详细的评估并得出初步的结论。
    • 无关架构或进度安排的方案细节,没有必要写太多,可以后续再补充。
    • 方案中有不明确的地方,即使没有时间调研,也不要简单的略过不写,要在文档中明确的把问题写出来,给出下一步调研的方向计划等。归根到底,方案文档中,对每一个已知重要的问题,都需要一个明确的结论或者可以后续跟进的计划,以免事后遗漏。

    再强调一下,做什么和怎么做就是手段,既然是手段,就要写得足够具体,具体到有明确的可落地实施的事情,有明确可以衡量的标准,或者针对当前存在的一个具体问题,不要在这个地方又写得像目标,没有明确的可执行的点。

    继续举上文数据交换服务的例子,针对其中的一个核心需求:

    • ETL业务流程标准化:将最佳实践沉淀下来,通过配置的方式让用户选择,减少重复工作,降低用户开发的难度,规避使用姿势错误可能造成的问题。

    这个内容要写具体的要做的事项。以下方式来写可能就是不合格的,因为不够具体,还没有足够思考:

    • 总结最佳实践
    • 生成标准的流程
    • 总结常见的错误

    以下内容可能就更加明确,更加可落地一些:

    • 统一当前增量数据导入的存储,合并,归档方案
    • 将常见合并,去重逻辑标准化,通过配置自动生成任务脚本
    • 制定ODS快照表生命周期管理方案,规范存储路径和命名方式,定期清理过期数据。

    什么时候做,谁来做:

    • 这是做什么和怎么做的进一步延伸,需要强调的是整个项目如何实施的整体步骤计划,而不仅仅是简单的列一下每项工作的人员和排期,
    • 需要分析系统可能的迭代步骤(包括可能的短期应急和长期解决方案),上下游依赖梳理,需要协同进行的工作,最终项目上线时可能的业务迁移,数据迁移,系统集成等等外围工作的安排。

    如果不是工期严格要求,deadline为导向的项目,整体的依赖和步骤往往才是在项目规划阶段需要重点阐述的内容,也是有可能对整体产品的进度,风险产生影响的事项

    而具体工作工期的安排,说实话,多数情况下,反到没有那么重要。如果整体工作和步调没考虑周全,工期排得再科学,再精细,也毫无意义。

    总结一下,什么时候做什么事,最重要的目的,不在于工期的计算,甚至也不是人力资源的安排,而是为了理顺事情依赖关系,控制可能的意外风险,提升项目开发进度的可控性。

    小结

    方案规划设计文档,绝对不是为了满足流程需要凑数的文档,也不是头脑风暴式的简单记录。它的根本目标,抽象来说是:明确问题,圈定范围,确定重点,阐明路径。本质是为了统一认识,控制风险。它应该是一个问题经过思考以后的输出的答案,而不是问题的调查报告,笔记或备忘录。

    它很像一个议论文体裁,事实,分析,结论缺一不可。所以,无论你的方案文档写的多么翔实,如果只是相关内容细节的罗列,只议不论,缺乏抽象总结,还需要阅读文档的同学再去揣摩项目意图,或者看完以后对项目所要做的工作为什么要做,重不重要,要做成什么样都不明确的话。那它就只是一个不合格的半成品,不能对后续的项目开发工作发挥实质的指导和规划作用。

    结论列表

    上面花了大量篇幅展开讨论,目的是说服你接受我的看法。

    如果你只需要明确的结论,那么再总结一下:

    总体原则:

    • 项目方案规划文档的根本目标是统一认识:明确问题,确定重点,阐明路径,控制风险。
    • 文档的撰写方式,是目标和需求先行,围绕出发点,逐步递进展开。
    • 文档的基本要素:背景,目标,核心需求,现状问题分析,关键方案难点解析,总体实施路径,工作事项列表,进度计划安排。

    再细化到一些注意事项:

    • 核心需求,必须是核心的,一定要实现的内容!不能缺,也不能滥。
    • 问题现状,工作事项,必须呼应核心需求,要有明确的相关性,不要无的放矢。
    • 围绕最终目标,输出完整的端到端的解决方案,而不是局部环节的方案。需要从最终产品/功能形态的角度考虑要做的事,而不是仅仅考虑底层技术实现。
    • 事项目标列表,不要仅仅罗列要做什么事,更重要的是说明想要得到的结果,而不仅仅是描述实现手段。
    • 所有工作事项,需要明确思考过实施步骤,重要性和优先级,结合目标和需求,进行抽象归纳,而非简单随机罗列。
    • 要有明确的计划排期,但更重要的是,要完整的分析思考可能的上下游和周边工作依赖。排期只是结果,完整的梳理才是关键。

    两条辅助判断依据:

    • 如果开发同学看完文档,无法根据后续开发过程中遇到的实际情况,调整工作事项和优先级,完善和改进这个文档,那么大概率这个项目方案文档是没有写好的。因为这个文档可能只起到了事项罗列和工作安排的作用,却没有起到指导思考,授人予渔的作用
    • 如果看完文档,这个项目的最终产出你无法预见,你对项目的目标最终能否实现无从判断,那么这个项目方案文档大概率也是没有写好的。因为这个文档自身的归纳总结可能还没做到位,风险和问题可能还没有评估清楚,还需要走一步看一步。

    提示

    写项目方案文档,不是八股文,所以本文的内容并非绝对的教条,你当然可以根据项目的实际情况和复杂程度自行调整,但前提是你真的知道你为什么要这么做,而不仅仅是为了偷懒

    本文多数内容是各种观点,注意事项,结论和目标,具体如何做到这些,每个同学都可以自行思考。当然除了思想和目标端正,每个环节,其实也有一些具体Tips和checklist可供参考。下一次再说,下一次再说吧。。。

    软广

    本文写的各项原则,在我们之前的项目实践上实际都有体现,有兴趣结合实例比对参考的同学,我再厚脸皮再推一下这本书 《大数据平台基础架构指南》

    京东,淘宝,中亚有售,JD购买链接 : https://item.jd.com/29923944547.html ;)


    常按扫描下面的二维码,关注“大数据务虚杂谈”,务虚,我是认真的 ;)

    展开全文
  • 如何做一个软件项目经理?----给公司所有的开发人员


    注:文本中的“我”,均是网上作者(前三部分来自网络文章,第四部分除外)。

    第一部分:软件项目经理的要求

    首先是一个管理者,其次熟悉某些工具,某几种语言,行业背景,项目管理技能。

    软件项目经理面临的恶劣环境,我们绝大部分软件企业运行在相对混乱的状态(CMM一级),组织不大可能对项目以及项目经理的责任做出明确、合适的界定,所以,影响项目成功的一切因素都是项目经理的责任,包括客户、环境、考核、激励等等。

    一、责任心。取得项目的成功无疑是项目经理的责任。项目经理只有把客户的满意和企业长期利益作为自己的责任,项目成功才有可靠的基础,对于公司的战略性项目尤其如此。

    二、常识和直觉。大多数有违常识和直觉的做法最终会被证明为错误的,项目经理要积累足够多别人已犯的错误充实自己的常识。如果发现项目中有违反常识的现象,应该把它作为一个问题来解决,看一看是自己的常识需要改变还是这个现象需要改变。项目经理要尽量使项目按照常规运作,不要故弄玄虚,或过多使用程序员不熟悉的新名词来表现自己的水平,这样不仅无助于程序员形成良好的心态,而且无谓增加了项目的混乱。项目经理面对的是不断变化的环境和未知的将来。早上去上班,也许某个关键程序员要辞职,客户的需求发生了重大的变化,或是老板又有了什么让你头疼的新主意。面对这样的环境,项目经理必须保持敏锐的嗅觉,准备弹性较大的项目计划和设计方案,在大部分变化到来之前有所准备,以免项目受到重大的打击。

    三、学习的心态。软件技术的发展日新月异,项目经理必须了解最新的发展方向,如:JEE或 .NET,UML等等,看看能否应用于项目之中。而且项目经理还得学习管理方面的知识,CMM,PMBOK或是RUP,学习这些理论体系对于国内的大部分小企业来说,最重要的不是完全的导入,首先应该从这些先进思想中看到差距,在关键问题上做好改善工作,逐步推动项目管理和技术的进步。每个程序员都有其独到之处,项目经理应承认程序员有强于自己之处,并尽力促进成员间知识、技能的交流。

    四、尽一切力量去维护项目团队。国内的软件企业一般没有很好的文化和管理去构造一个富有凝聚力的团队。维持项目团队的稳定和战斗力更多成为项目经理的责任。项目经理必须关心程序员:1、尽力让程序员专注于自己的工作,杂事造成的影响远比这些事本身花的时间多。相对说来,程序员在处理杂事的时候效率会比一般人更低,也更容易犯错误,从而导致情绪变坏,影响工作。项目经理有时候应勇于承担勤杂工作。 2、要有宽容的心态,特别是对程序员。现在的程序员都比较年轻,自己觉得有点骄傲的资本,又处在一个浮燥的环境中,所以,有时候会做出一些过分的行为,项目经理千万不能太过在意。3、甘做幕后英雄,不斤斤计较。项目经理经常要在技术上支持程序员,但不能到处宣扬,而要把成绩更多归功于程序员。在项目紧张的时候,项目经理有时间的话要参与到繁琐的测试和调试工作中,或做一些代码工作。 4、维护公平原则。项目经理在分配工作、对项目成员进行考核评估时必须做到公平合理,让大家心悦诚服。

    五、沟通与交流。项目经理应该了解参与系统设计开发的成员,他们的特长和兴趣在哪里,以便更好地进行交流,这种非正式的项目外的交流对于团队的建设是至关重要的。此外,成功的项目经理也要善于与公司领导层的沟通,这是获得必要的资源支持的保证。有些优秀的软件项目经理可以与项目成员、相关部门或客户进行很好的交流,但没能与上级进行良好的沟通,他们在领导一个或几个项目取得成功之后,却发现在新的项目中缺少了基本的来自领导的支持。最终,有些项目经理选择了离开公司,而另一些则不得不放弃项目经理的角色。沟通与交流能力基本上是技术出身的大部分项目经理的致命伤。十年前,软件界最需要的是天才的开发人员,最近几年管理的重要性日益凸现,软件公司开始寻找优秀的天才项目经理。事实证明,天才总是可遇不可求的,而管理系统不能建立在小概率的基础上。解决软件企业的问题最终将依赖于组织管理水平的提高,比如说薪酬与激励政策、开发流程的优化、完善的培训制度,在一个管理良好的组织环境中,项目经理的责任以及履行责任的难度会大大降低,企业将不必再寻找天才的项目经理,相反,企业会成为优秀项目经理成长的基地。

    也有人这样说的:

    首先,了解项目管理的相关领域知识吗?你知道PMP的九大知识领域吗?你清楚CMMI、ISO对项目流程控制的各项要求吗?如果你有肯定的回答,那么恭喜你,你向项目经理的路上前进了20%。项目管理的知识领域越来越广,项目计划、时间管理、资源管理、成本控制、风险管理、质量管理乃至对供应商的管理等,每一块内容都有大量的知识需要学习和掌握,而且需要参与其中的实践经验。这么重要的内容,为什么只占了20%,你肯定很奇怪。没有错,即使你对项目管理知识掌握的了如指掌,那也只能有20%的加分。因为,这些知识仅仅是书本上的内容,通过学习大家都能掌握;即使不能全部记在脑海中,都可以边做项目边照着书上说的流程进行工作。如果每个项目照着流程按部就班地走下去都可以顺利完成,那还要项目经理干什么呢?所以,除了知识之外,另外80%的东西才是重点。

    协调能力!这是一个合格的项目经理必须具备的能力

    什么叫协调能力?就是与各色人等打交道的能力。项目经理的职位,其实是没有行政管理的权力的,就是对项目内的成员没有管理的权力,更多的时候做的工作是一个项目协调人。一个项目启动后,项目的成员可能都是临时从各个部门调来的,作为项目经理,需要与各个部门的人去协调每个成员的参与项目的时间期限。项目经理需要安排工作与每个项目成员,人都是一个个体,各种性格都有,如何与不同性格的人交道,这可不是一时半会儿能学得会的。项目经理也需要与上层领导协调,当项目推迟了,如何向领导解释原因,如何向领导申请更多的资金与资源,如何说服领导更加支持这个项目,这都是协调能力的体现。除此之外,项目经理还需要与客户协调,面对客户漫无边际的需求要求,如何加以限制,面对客户的种种苛求,如何一一化解,当最终产品提交给客户后,如何减少客户的抱怨,尽早的签收,这些都需要项目经理有非常强的,把与项目相关的所有shareholder全部摆平的能力。这一点,应该占到40%的比例,也就是说,如果达到上面两条,你就可以做一个及格的项目经理了。但这还是远远不够的。

    文笔!

    项目经理几乎可以不用写代码,但更多的工作是写文档以及报告。这几乎占据了项目经理大半的工作时间。

    从合同到项目计划再到项目报告,项目经理都需要极强的文笔写作功底。清晰,明确是文档的基本要求,更多的时候,项目经理需要从不同的角度解析同一个问题,而让人得到不同的结果。当然,如果你能把死的写成活的,黑的写成白的,那恭喜你,这20%你可以拿满分。

    沟通能力!

    不仅仅是语言沟通能力,还包括察颜观色的能力。项目经理未必需要口若悬河,出口成章,但说出的话一定让人清楚的明白;同时,也要通过表情,动作等身材语言,了解对方的内心想法。这一点,真得很难,有的人一辈子未必学得会与别人沟通。所以,只能看你的天份了。这一点,应该点到10%。

    最后10%,就是抗压能力

    作为项目经理,一定要能承受常人不能承受的巨大压力。尤其在项目遇到问题,进展不顺的时候,在成本上升和面临着最终期限快到的时候,如何承受并缓解那种压力,不是每一个人都能够做到的。如果你遇到一点事就郁郁寡欢,放不下,那在项目的重压之下,会是对你精神与身材的双重折磨。

     

    第二部分:软件项目经理的职责

    1、不断地识别项目干系人,并管理好项目干系人的期望。

       比如一个软件产品开发项目,可能的干系人包括但不限于:

       投资方希望通过产品赚钱

       产品用户希望产品好用、能给自己带来使用价值和良好的使用体验

       项目团队希望通过该产品体现自己的创造力、成就感,并收获劳动回报和能力提升

       政府机构希望该产品有着良好的社会效应

       ……

    项目干系人不是一开始就能完全识别出来的,所以需要不断识别

    要管理好项目干系人的期望,需要良好的沟通技能,要能换位思考,充分从对方的角度去理解与认识

    注:项目干系人,其实就是项目相关的人员。这是项目管理理论中的术语。

    2、组建和建设一支强有力的项目团队。

    项目团队是项目成功的关键要素,组建团队、激励并持续建设团队、协调好团队内部的关系和任务分配、充分沟通,是项目经理必须一直要做的事情。

    建设项目团队,包括了招募、培训、调配、指导等各方面的工作。

    3、做好项目管理计划,充分管控项目的范围、进度、成本、质量、风险等要素。

    项目的范围、进度、成本、质量、风险管控是项目管理的基本要素,也是项目经理要做的事情之一。当然,具体的需求调研及确认、系统架构设计、详细设计、开发、测试、变更、风险、文档、验收、交付、培训等等,甚至包括项目进度计划,都可以分解给项目团队成员来做,但项目经理要负责总体的管理和掌控,协调各方面的资源。

    4、总结项目。

    项目结束、产品验收交付后,项目经理的一个重要工作就是总结和分析项目的成败得失,尤其是充分总结经验和教训,作为自己、团队、所在的企业组织以后项目的借鉴和参考。

     

    注:软件项目经理,如果过多地深入到产品设计、开发过程,而或多或少地忽略其真正应该专注和关注的职责,对项目有害无益。我们目前项目多,人少,每个项目经理都要参与到自己项目或者别人的项目中担负相应的工作,需要高效调整自己的工作计划,并每天执行和修正工作计划。

     

    第三部分:如何做一个成功的项目经理

    软件项目管理是“以过程为核心、以度量为基础、以人为本”的,在此过程中需要充分地集成技术方法、工具、过程、资源(人力、资金、时间等)等要素,谁来领导这个集成工作呢?是项目经理。项目经理是项目组的灵魂,是项目组中很重要的一个角色,无论是对于个人英雄的时代,还是基于过程的管理时代,都必须依靠人来实现管理,这就是“以人为本”。无论管理多么正规,过程是对形式的管理,而内容的管理必须依靠个人的能力。

    项目经理,是大多数软件公司中最难选的人。为什么呢?有实践经验又有理论知识的项目经理少之又少,而且即使有身价也比较高,所以在软件公里面"勉强的项目经理比比皆是",有一定的开发经验,程序写的很好,有一定资历,虽然没有受过正规训练,也可能没有做过管理人员,但是没有办法,公司缺人,只好选他做项目经理了。当然,也不排除不具备上面的条件就做的很好的。99年我主管过1个成功的项目,该项目是为我们的一个老用户开发一块外围的采购模块,挂接在财务系统中。该项目组的成员都是刚参加工作的本科毕业生,他们是第一次用DELPHI开发应用软件,项目经理也是他们其中一个比较有管理思想的员工,在上学时是学生干部,比较有组织能力,我做为项目主管,对项目组进行管理的指导,因为我也从未用DELPHI做过开发,可想而知,该项目的人员风险有多大!项目的需求分析请了一位有经验的老员工来做,并由该员工做出概要设计,详细设计、实现与实施都是由项目组来做,他们竟然在规定的时间里按照需求完工了!在去现场实施之前我都以为不应该这么顺利,结果在他们实施完毕的几个月里面,用户用的很好,只有几个小的地方对界面进行了调整,没有进行软件的正确性维护!真是难以置信。为什么呢?在事后进行总结时,大家得出得结论是:我们是严格按照公司的软件工程规范做的。并非有经验的员工才可以做项目经理!新手一样可以成功!

    那么,究竟如何来选择一个项目经理呢?我们先看一下项目经理的来源。

    (1)专职的项目经理,比如说在公司里有项目管理部,专门是项目经理的派出机构,项目经理经过专业的培训与认证。

    (2)兼职的项目经理,来源于某一个技术部门,如开发部或事业部,同时可以兼任其他岗位。

    对于专职的项目经理,如果项目组中的成员有兼职的情况,即同一个项目成员可能同时参与多个项目,这时就存在资源竞争的问题,需要项目组之间进行协调,由于组员与项目经理没有行政的隶属关系,因而项目的协调很成问题。对于第二种方式,往往项目经理只会对他熟悉的作业内容、熟悉的人员进行管理,名义上是项目经理,实际是个局部经理。因此在选择设置公司的组织结构时,在选择项目经理时要充分考虑上述的两种情形。

    一个合格的项目经理,下面的要求是必须的:

    要公正无私

    99年我主管过一个项目,该项目的项目经理在分配奖金时论资派辈,不按业绩,使得项目组中资历浅但是干活多的员工怨言很大,导致整个项目的积极性很差,最后不得不由我出面制定新的业绩评估办法。如果一个项目经理不能做到公正无私,他就难以服众,无法带好项目团队。

    要有良好的职业道德

    2002年在我经手主管的一个项目中,由于项目经理蓄意隐瞒了项目的真实进展情况,对用户的承诺没有兑现,而导致用户不信任他,向公司提出了撤换项目经理的要求。用户对于项目有知情权,给用户暴露出问题不一定是坏事,因为只要大家能够互相理解,才能保证项目的顺利进展。如果明知完不成进度,而故意隐瞒了真相,当然是要受到惩罚的。

    要具有管理的基本技能与知识

    要做一个好的项目经理,他肯定要好好的学习一些关于项目管理的基础知识,进行项目管理的技能训练,既要有管理意识,还要有管理的基本技能,要"心有余且力也有余"。

    要具有很好的沟通与表达能力

    项目经理要和方方面面的人员沟通,包括项目组内的人员、市场人员、用户、上级主管,也要和各个层次的人员打交道,为了项目的成功要通过沟通交流消除来自各方面的阻力。譬如,一个系统集成的项目,在用户现场布线时,你可能要和用户的工程主管、电工、施工队等各种角色沟通,否则,可能因为很小的问题,你的系统就要失败。

    要有很强的分析问题解决问题的能力

    项目经理要能够通过现象看到本质,通过细节发现大问题,发现问题后要果断采取措施,而不是延误时机。如果一个项目经理对问题比较麻木,不能防微杜渐,那么就谁都可以做项目经理了!

    要懂技术,不要求精通,但是要全面

    这可能是争议比较大的一个原则,因为如果按此原则执行,那些拿到PMP证书的专职项目经理如何找工作?使用不懂技术的项目经理我也曾经尝试过,用过一个不懂开发的人来做项目经理,他主要对项目的进度负责,进行项目组内外的协调,但是为了弥补其不足,必须还要给他配一个助手专门负责技术。对于大的项目这种方式是可以的,对于小的项目而言肯定不能这样做,否则就会出现资源浪费,项目经理的工作量不饱满。所以我的意见还是要使用懂技术的项目经理,这样他能清楚地知道组员在做什么、做的怎么样,能够发出正确的方向性指令,而不是瞎指挥,外行领导内行。

    要谦虚,不能不懂装懂

    有的项目经理搞一言堂,听不进去大家的意见,而且不懂装懂。有一位软件公司的人力资源部经理向我诉说了他们公司由于软件项目经理选择不当而带来的烦恼。2001年他们公司聘用了一位项目经理,该项目经理被程序员们冠以"外行领导内行"的帽子,团队中绝大多数成员对他非议很多,他也听不进去别人的意见,从而使项目团队的效率很低,项目的质量很差,系统开始实施后,就陷入到大量的纠错改错的泥潭中。

    要平易近人,不要摆架子

    如果你的项目经理不能做到这一点,你肯定会对这样的项目经理很反感的!你也不会去和他很好地沟通的,当然项目组的效率也不会很高的。

    以上是对项目经理的基本要求,如果他能够在此基础上还有其他更好的优点,当然应该选中他。

    给项目经理充分授权

    在软件企业里面,一般有2种类型的组织结构:

    (1)事业部制:在事业部里面包含一个产品生命周期的所有职责:产品开发、产品客户化、项目实施、产品的售后服务、市场、渠道等。

    (2)功能部门制:即将市场、销售、产品开发、项目开发、实施服务、研发管理、测试的职能分散在不同的部门中,按功能划分部门。

    无论是哪种组织结构,对于项目组而言一般都需要采用动态的项目组方式,即项目组的成员是由不同部门的人员抽调到一个项目组中来,当项目完成后,项目组的成员就再回到各自的部门中。对于静态的部门它的职责是提供合适的人员,培养人员的专业技能,进行专业职能的标准化工作,各职能部门就象人才的蓄水池,而项目组简单来讲就是用人。在动态组织的项目组中很容易出现的问题是项目经理的权力不够或者项目经理的权威不够,所以一定要充分授权。

    不要轻易撤换项目经理

    2002年初,我接手了一个项目,该项目已经换了3任项目经理,导致该项目的工期一拖再拖,每换一次项目经理就要和用户协调一次,每换一次项目经理,用户就要将项目的需求重新讲一遍,用户何其无辜!

    所以在项目执行过程中,不要换项目经理。但是,换项目经理的情况在企业里是比较常见的,有时候企业也确实是不得已而为之,如项目经理离职了或者生病了。在项目初期要识别出这一风险,为了规避此风险在项目组内部可以实行AB角的方法,即有一个组员,他能够和项目经理一样熟悉项目的整体进展情况,一旦项目经理离开了,他随时可以补上。如果必须换项目经理时,也要选择一个恰当的时机,比如说系统开发完了,进入了实施阶段,可以将项目经理换成善于做实施工作的项目经理,再比如说在需求调研完了,可以换项目经理。

    牢记上面的原则,相信您的项目的成功概率会大大提高!

     

     

     

    展开全文
  • 项目设计完结总结

    千次阅读 2020-08-31 19:12:36
    2018级西电通院微控制项目设计

    1. 简要说明

    项目设计是西电通院的特色课程,自从16级首次开始做这个,到我们18级现在已经是第三代了。
    这个项目是以小组为单位的,一般是5-6人小组,全院打乱随机分组(据说是会按成绩区间分配)。由于工作量特别大,所以是要给每个人分配工作,然后最后再完成成品(今年是交的报告和视频成果)。

    2.项目内容

    2.1项目要求

    要求如下
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    刚开始看这个项目:wdnmd,这也太难了吧,爷要挂科了。
    之后赶紧联系了学长,学长大概和我解释了下这个项目是如何云云,我稍微对项目该如何完成稍微有一点了解了。然后又仔细看了项目设计的设计指南好几遍,总结出了一下几个工作:
    1.电子:STM32以及传感器编程
    2.数字电路设计:verilog,主要是驱动伺服电机
    3.软件设计:java语言,做程序的主界面以及里面的操作内容
    4.文案:最终报告整合、专利申请书等文案工作
    5.网页设计:做一个静态web介绍你的公司和产品
    6.组装:应该是所有人一起做,但是今年没有
    7.机械设计:画机械图,一共三个,工作大不大
    总的来说,前三项任务是比较重的,其他的相对压力较轻。在第一次会议时,我主动承担了电子设计以及经理的任务。接下来组里其他同学也确认了自己的任务。

    2.2我的想法

    作为经理,我当时构思的产品,如下:
    1.模块化功能:即触摸界面显示几个按键,表示不同的功能。
    在这里插入图片描述
    2.具体功能:(中英双语)
    2.1学科:语数外物化等,分为网课学习,教材查看,习题练习等
    2.1.1网课学习:视频(缓存到本地,点开可以放)
    2.1.2教材查看:内容意思一下
    2.1.3习题练习(重点):全是选择题,通过不同色块代表选项,用RGB颜色检测器探测,与真实答案比较。成功了发语音(交互),失败了机械臂挥动
    2.2外语:可添加口语功能(如果可实现):用户可跟读单词
    2.3学习监督:设置开启和关闭,自主设定学习时长,若在规定时长内离开(激光测距仪检测),则机器人挥手,发出警告
    2.4智能护眼:设置开启和关闭,超过限定学习时间,亮灯,发出休息提醒
    3.维护模式:
    3.1验证管理员账号
    3.2验证机器人的各部分是否可以正常工作
    3.2.1指定部位机械臂转动
    3.2.2指定部位亮灯
    3.2.3读取激光测距仪数据
    3.2.4读取颜色传感器数据

    网页设计相关:
    1.总体框架按xxx的想法,基本是把内容都填充进去就好
    2.需要美工,设计logo,海报,视频剪辑

    FPGA:
    主要是舵机控制,即机械臂挥动
    FPGA (XC7A35T-1CSG324C)

    关于非接触验证:
    使用多个光敏传感器和卡插,卡插带缺口,嵌到传感器上,缺口可以将光遮挡住,从而输出0,反之输出1。由0,1的组合可以确定不同玩家或管理员,0000~1111
    这个东西套件里没有,但是必要,去年不少组都采用此种方式
    (我已购买)
    关于答题:
    选项ABC对应RGB三种色块,我不太清楚具体如何操作啊。选某个选项肯定是在上位机的屏幕上操作,那么直接在上位机上进行结果判定并反馈不就可了么?(最后压根没用这个)

    关于交互:
    1.stm32给fpga “go”指令,控制电机运行的模式(IO口电平控制)
    相当于fpga作用是驱动电机做任意角度转动(自定),在vivado中封装好固定的运行状态,通过stm32电平的组合控制选择电机运行状态
    DigitalOut(选电机,选模式)
    2.stm32给上位机反馈传感器结果
    上位机给stm32输入指令(COM串口通讯)
    3.颜色、距离传感器都接I2C(I2C通讯)
    4.光敏传感器接AO(数字信号)
    DigitalIn(判断身份)
    5.串口助手(USART)

    而我技术部分负责的是电子设计,下面我来详细说明这部分

    2.3电子设计

    电子设计分为两部分,一个是STM32,另一个是传感器设计

    STM32

    本次项目中使用的是STM32L476单片机,是一款低功耗型的单片机
    其中接口如下
    在这里插入图片描述
    1.有两类接口,一类是arduino配套的,一类是一般的,到时候需要哪个管脚就直接用杜邦线连接
    2.所有管脚都有其相对应的功能,例如串口收发/AO/DO/电源等,按照要求连接即可
    接着给出微控制器总体运行流程
    在这里插入图片描述
    主函数编写规范:
    int main(){1
    中断
    while(1){2
    while(1){3
    插卡检测
    if 失败:返回检测
    if 成功:继续执行
    while(1){4
    if 学习模式 :
    while(1){5
    switch(各种功能)
    5}
    else if 维护模式:
    while(1){6
    switch(各种功能)
    6}
    else
    4}
    3}
    2}
    1}
    调用函数:
    颜色判断函数
    颜色返回函数
    距离返回函数
    选项判断函数
    插卡识别函数
    电机控制函数

    传感器

    传感器分为三种,分别为:光敏、距离、颜色传感器

    光敏传感器

    光敏电阻是用硫化隔或硒化隔等半导体材料制成的电阻器,其工作原理是基于内光电效应。随着光照强度的升高,电阻值迅速降低,由于光照产生的载流子都参与导电,在外加电场的作用下作漂移运动,电子奔向电源的正极,空穴奔向电源的负极,从而使光敏电阻器的阻值迅速下降。其在无光照时,几乎呈高阻状态,暗电阻很大。
    在这里插入图片描述
    用这个传感器,主要是把它作为插卡来进行身份识别的

    测试结果如下:
    在这里插入图片描述
    在这里插入图片描述
    注意:光敏传感器输出的是光强度数值,所以接支持模拟输出的AO口

    距离传感器

    VL6180是飞行时间测距传感器。传感器包含一个非常小的激光源和一个匹配的传感器。VL6180X可以检测飞行时间,或激光恢复传感器所需的时间从而计算出距离。因此VL6180X的准确度高。由于传感器模块体积小,易于在任何机器人或交互式项目中使用。可以将它与任何3-5V电源或逻辑微控制器一起使用。
    在这里插入图片描述
    用它来检测用户距离机器人的距离,若距离适当且超过一定时间,则开启身份识别界面

    颜色传感器

    TCS34725芯片提供红、绿、蓝(RGB)以及明光感应的数字返回值。TCS34725彩色传感器有着广泛的应用,包括RGB LED背光控制、固态照明、健康产品、工业过程控制和医疗诊断设备等。

    传感器返回四个参数值,分别为颜色参数中的 R, G, B 以及 C 值,根据说明以及我们的测试,由于距离,环境光线,测量物体的放反光程度等细微差异,输出的数据会产生一定量的误差或者偏差,因此在使用本传感器的过程中,需要对使用环境和处理数据的过程进行一定的调整及优化,以保证最后识别的结果有较高的精度保证。
    在这里插入图片描述
    测试结果如下:
    在这里插入图片描述
    在这里插入图片描述

    身份识别(非接触识别)

    在这里插入图片描述
    机器人拥有非接触验证身份功能,故身份识别全部采用硬件完成。

    需要使用VL6180x距离传感器、一个TCS34725颜色传感器以及四个光敏传感器组合完成。

    我们使用专用的卡插和颜色挡板,光敏传感器检测到遮挡物时返回为0,未检测到时为1,从而不同卡插可以代表不同身份的用户。为了验证管理员身份,我们使用红色挡板遮盖颜色传感器,否则其余时刻用蓝色遮挡

    进行身份验证时,用户首先将代表身份的卡插和颜色挡板插入机器人指定位置,然后等待距离传感器判断用户是否在机器人面前,等待3s后,微控制器根据传感器读取的数据进行身份验证,从而进入应用界面(学习界面/维护界面)。

    下面给出微控制器布线结果:
    在这里插入图片描述
    距离传感器和颜色传感器连线图
    在这里插入图片描述
    光敏传感器连线图

    维护模式

    当成功验证管理员身份后,用户可以进入维护模式,检验各传感器、led灯、伺服电机的运转情况。对于fpga,是由微控制提供指令驱动的,故我们给出fpga不同功能对应的电平组合。

    对应指令如下:
    a:颜色传感器读取
    b:距离传感器读取
    c:光敏传感器读取
    d:led闪烁
    e:fpga“00”控制电平
    f:fpga“01”控制电平
    g:fpga“10”控制电平
    h:fpga“11”控制电平

    该部分代码如下:

    #include "mbed.h"
    #include "stdint.h"
    #include <VL6180x.h>
    #define VL6180X_ADDRESS 0x29
    VL6180xIdentification identification;
    // mbed uses 8bit addresses shift address by 1 bit left
    VL6180x sensor(A4, A5, VL6180X_ADDRESS<<1);//距离传感器
    
    Serial pc(SERIAL_TX, SERIAL_RX);
    AnalogIn switch1(PA_0); //光敏传感器
    
    I2C i2c(I2C_SDA, I2C_SCL); //颜色传感器
    int sensor_addr = 41 << 1;
    DigitalOut green(LED1);
    
    void ret_rgb(int r,int g,int b) //该函数用于返回颜色值
     {
     
     if (r > g*1.3 && r > b*1.3)
     {
     pc.printf("red\n");
     }
     else if (g > r*1.3 && g > b*1.3)
     {
     pc.printf("green\n");
     }
     else if (b > r*1.3 && b > g*1.3) 
     {
     pc.printf("blue\n");
     }
     else
     pc.printf("no\n");
     wait(0.1);
     }
     
     void color_read()
     {
      //打开颜色传感器
        int r,g,b;
        green = 1; // off
        pc.baud(9600);
        // Connect to the Color sensor and verify whether we connected to the correct sensor. 
        
        i2c.frequency(100000);
        
        char id_regval[1] = {146};
        char data[1] = {0};
        i2c.write(sensor_addr,id_regval,1, true);
        i2c.read(sensor_addr,data,1,false);
        
        if (data[0]==68) {
            green = 0;
            wait (2); 
            green = 1;
            } else {
            green = 1; 
        }
        
        // Initialize color sensor
        
        char timing_register[2] = {129,0};
        i2c.write(sensor_addr,timing_register,2,false);
        
        char control_register[2] = {143,0};
        i2c.write(sensor_addr,control_register,2,false);
        
        char enable_register[2] = {128,3};
        i2c.write(sensor_addr,enable_register,2,false);
        
        // Read data from color sensor (Clear/Red/Green/Blue)
        
        while (true) { 
            char clear_reg[1] = {148};
            char clear_data[2] = {0,0};
            i2c.write(sensor_addr,clear_reg,1, true);
            i2c.read(sensor_addr,clear_data,2, false);
            
            int clear_value = ((int)clear_data[1] << 8) | clear_data[0];
            
            char red_reg[1] = {150};
            char red_data[2] = {0,0};
            i2c.write(sensor_addr,red_reg,1, true);
            i2c.read(sensor_addr,red_data,2, false);
            
            int red_value = ((int)red_data[1] << 8) | red_data[0];
            
            char green_reg[1] = {152};
            char green_data[2] = {0,0};
            i2c.write(sensor_addr,green_reg,1, true);
            i2c.read(sensor_addr,green_data,2, false);
            
            int green_value = ((int)green_data[1] << 8) | green_data[0];
            
            char blue_reg[1] = {154};
            char blue_data[2] = {0,0};
            i2c.write(sensor_addr,blue_reg,1, true);
            i2c.read(sensor_addr,blue_data,2, false);
            
            int blue_value = ((int)blue_data[1] << 8) | blue_data[0];
            
            // print sensor readings
            
            //pc.printf("Clear (%d), Red (%d), Green (%d), Blue (%d)\n", clear_value, red_value, green_value, blue_value);
            wait(0.5);
        
             //颜色传感器显示数据
             r = red_value;
             g = green_value;
             b = blue_value;
             pc.printf("R %d G %d B %d\n ",r,g,b);
             //ret_rgb(r,g,b);
       }   
         }
    
    void light_read(){
        float s1; 
        pc.baud(9600);   
        while(1) 
        {
            
            s1 = switch1.read(); 
            s1 = s1*5000;       
            pc.printf("measure = %.0f\n",s1);        
            wait(0.3);
                
        }
        }
        
    void distance_read(){
      uint8_t retaddr;
      pc.baud(9600);
      wait_ms(100); // delay .1s
      sensor.getIdentification(&identification); // Retrieve manufacture info from device memory
        if(sensor.VL6180xInit() != 0) {
            printf("FAILED TO INITALIZE\n"); //Initialize device and check for errors
        };
    
        sensor.VL6180xDefautSettings(); //Load default settings to get started.
    
        wait(1);
        retaddr=sensor.changeAddress(0x29,0x27);
        sensor.getIdentification(&identification); // Retrieve manufacture info from device memory
    
        wait(1);
        retaddr=sensor.changeAddress(0x27,0x29);
        sensor.getIdentification(&identification); // Retrieve manufacture info from device memory
    
        while(1) {
    
     
      //Get Distance and report in mm
          printf("Distance measured (mm) = ");
          printf("%d\n", sensor.getDistance() ); 
     
          wait_ms(500); 
     
        }
        
        }
    
    int main(){
    char order = pc.getc();
        printf("welcome to the matainance system :\n");
        switch(order){
            case 'a'://颜色传感器
            color_read();
            break;
            
            case 'b'://距离传感器
            distance_read();
            break;
            
            case 'c'://光敏传感器
            light_read();
            break;
            
            case 'd'://led闪烁
            for(int p=0;p<10;p++){
                green = ~green;
                }
            break;
            
            case 'e':
            pc.printf("00\n");
            break;
            
            case 'f':
            pc.printf("01\n");    
            break;
            
            case 'g':
            pc.printf("10\n");
            break;
            
            case 'h':
            pc.printf("11\n");    
            break;
            
            }
    }
    

    代码思路比较简单,主要是定义几个传感器如何读取,并将数据显示(print)出来,然后主函数用case调用即可。FPGA与的stm32交互是用电平控制的,而我们是线上完成,所以无法与FPGA连接,用输出电平代替给的指令。

    当然驱动传感器这方面有一些麻烦的驱动函数,不过网上都有库,如看懂函数输入输出,直接调用即可,自己写应该不太可能。。。

    3.补充知识

    3.1串口通信

    上位机与微控制器的交互使用串口通信,本项目使用USB转串口,即用微控制器上的那根USB线与上位机连接,有如下优点:
    (1) USB采用单一形式的连接头和连接电缆,实现了单一的数据通用接口。USB统一的4针插头,取代了PC机箱后种类繁多的串/并插头,实现了将计算机常规I/O设备、多媒体设备(部分)、通信设备(电话、网络)以及家用电器统一为一种接口的愿望。
    (2) USB采用的是一种易于扩展的树状结构,通过使用USB Hub扩展,可连接多达127个外设。USB免除所有系统资源的要求,避免了安装硬件时发生端口冲突的问题,为其它设备空出硬件资源。
    (3) USB外设能自动进行设置,支持即插即用与热插拔。
    (4) 灵活供电。USB电缆具有传送电源的功能,支持节约能源模式,耗电低。USB总线可以提供电压+5v、最大电流2A的电源,供低功耗的设备作电源使用,不需要额外的电源。
    (5) USB可以支持四种传输模式:控制传输、同步传输、中断传输、批量传输,可以适用于很多类型的外设。
    (6)通信速度快。USB支持三种总线速度,低速1.5Mbps、全速12Mbps和高速480Mbps。
    (7)数据传送的可靠性。USB采用差分传输方式,且具有检错和纠错功能,保证了数据的正确传输。
    (8)低成本。USB简化了外设的连接和配置的方法,有效地减少了系统的总体成本,是一种廉价的简单实用的解决方案,具有较高的性能价格比。

    3.2 i2c通信

    I²C (Inter-Integrated Circuit),拥有一根数据线SDA和一根时钟线SCL。其总线通过上拉电阻与电源相连接。每个接到I2C总线上的器件都有唯一的地址。其中,主动发起操作的一方为主机,另外一方为从机。

    展开全文
  • 微信小程序 谈谈在大学初次写项目的体验

    万次阅读 多人点赞 2020-03-20 09:34:59
    已经近三周没写博客了,最近一直在忙着写一个项目,趁现在项目所用的服务器申请还在审核备案,写一篇博客,谈谈我在大学第一次写正规付费项目的体验哈哈。
  • 项目结案报告

    千次阅读 2019-07-15 20:29:41
    项目结案报告项目管理过程中一项重要的活动。与开工会类似,形式大于内容,但对于项目具有极大的意义。虽然系统上线1-2月后,项目型转运维型...相当于把一个项目当做PDCA,结案报告就是在做CA汇报、迭代改进的过程...
  • 项目总结报告

    千次阅读 2011-11-30 22:35:04
    项目开发总结报告,以方便我们在以后的项目开发中来更好的实施项目的订制开发; 让我在今后的项目开发中有更多的有据的资料来规范我们的开发过程和提高我们的开发效率,从而创造更多公司效益。 1.2背景项目名称...
  • 之前说道测试报告,是一周的总结报告,那么如果在整个项目测试结束或者说,一个客户新的需求开发完成-测试完成后,上线,这个时候我们需要做的是什么呢?是更新测试用例,更新测试报告,这两者主要针对的是更新的...
  • 网页设计课程设计报告

    万次阅读 多人点赞 2019-03-01 21:45:11
    学号 课 程 设 计 课程名称 网页设计 题 目 鑫晨之家特效网站设计 专 业 软件工程 ...
  • 、 引言(Introduction) 3 1. 背景(Background) 3 2. 开发计划的目的 3 3. 项目开发参考资料(References) 4 4. 涉及名词(Related Noun) 4 二、 项目概述 5 1. 项目目标 5 2. 功能模块列表 5 三...
  • 炸裂!手摸手教你如何吃透一个 Java 项目,yyds

    万次阅读 多人点赞 2021-06-11 08:24:07
    先说一下大多数新手的情况:就是对着视频敲 Java 项目,其中遇到的 BUG 还能解决,但就是每次敲完一个项目,就感觉很空虚,项目里面的知识点感觉懂了但又好像没懂,应该怎样才能掌握一个项目所用的知识点呢?...
  • 2018数据结构课程设计报告

    万次阅读 多人点赞 2018-03-24 16:32:59
    本文是份数据结构课程设计报告,旨在为各位的课设设计提供条思路。
  • 说明一下这是最近博主做的一篇C++课程设计报告形式的,代码的话我是测试过的应该没有bug,如果有问题的话可以在评论@我。 第一章 问题描述 要求以图书馆管理业务为背景,设计并实现一个“图书馆管理信息系统”软件...
  • 项目实施计划及总体设计报告(大纲)

    千次阅读 2004-08-19 15:40:00
    项目实施计划及总体设计报告(大纲)  引言1、 编写目的 说明编写这份项目实施计划及总体设计报告的目的,并指出预期的读者。2、 背景说明: (1) 待开发的软件系统的名称。(2) 本项目的任务提出者、开发者、用户...
  • 图书馆,作为文献的聚集地和展示平台,常常扮演着引领文化前进的角色,是每个大学不可或缺的基础设施,而图书管理系统则是一个图书馆能够正常运转的关键。本次课程设计使用C语言制作程序来实现图书的登记,删除,...
  • C语言课程设计报告-菜单设计

    万次阅读 多人点赞 2019-07-02 18:55:03
    源代码:https://blog.csdn.net/queen00000/article/details/94468911 xxx大学 C语言课程设计报告 ...
  • 前提概要: ...笔者在开始做项目前,首先是对项目需求的一个细化,有点像是将一个大目标拆解成一个个小目标,分解后便做了如下图: 项目实现: 随后笔者将项目主要分为了四大块: 1、简单的UI实现,也就
  • 《程序设计综合训练实践报告》 此项目为图书信息管理系统,是一个采用了mysql+mybatis框架+java编写的maven项目
  • 篇博客聊到了这梗,但要让程序员硬着头皮做一样,相信99%的人会选注释而不是文档。毕竟注释还是程序中的部分,而且不用打开那个倒霉的Word。 今天暂时不讨论为什么开发人员对文档有这么大的抵触情绪,这...
  • 软件项目总结报告范文

    万次阅读 多人点赞 2013-02-17 18:21:05
    项目开发总结报告,以方便我们在以后的项目开发中来更好的实施项目的订制开发; 让我在今后的项目开发中有更多的有据的资料来规范我们的开发过程和提高我们的开发效率,从而创造更多公司效益。 1.2 背景 项目...
  • 对于一个的软工,做一个项目项目的分析是很重要的一个步骤。项目分析清楚了才知道自己在做什么。代码的时候自己心中也有轮廓。 这篇博客是分析一个医药管理平台系统。让我们跟着博客一步一步的分析这个系统吧...
  • 包含功能: 1.自定义迷宫大小 2.使用图的深度遍历随机生成迷宫 3.用户使用鼠标绘制自定义迷宫 4.单步求解迷宫 5.一键求解迷宫 6.声音特效 完整项目下载: ... ...、系统开发平台
  • 安卓开发课程设计报告

    万次阅读 多人点赞 2019-12-17 09:33:54
    综合实践能力创新实训-安卓开发课程设计报告 题 目: 新 闻 客 户 端 学 号: 1705010323 姓 名: 马 志 成 指导老师: 蒋 黎 明 完成时间: 2019年12月15日 安卓开发-新闻客户端 1.设计要求 1.1 技术平台要求 1....
  • 电子商务项目设计(案例)

    万次阅读 2008-04-01 23:24:00
    电子商务项目设计案例 、项目概述 简要说明项目的要点,让读者了解整个项目的大体情况。 1、项目名称:“芬芳”网上花店项目规划设计方案 2、项目背景:(需求及迫切性) 随着互联网技术
  • TensorFlow实践项目报告

    千次阅读 2020-10-27 18:15:48
    1、 项目背景、功能需求分析 什么是逆概率 我们肯定知道正概率,举例子就是,箱子里有5黑球5白球,那你随机拿到黑球和白球的概率都是50%,那现在我不知道箱子里有多少黑球白球,那我通过不断的拿球应该...
  • 一个Android项目--简易计算器的设计与实现

    万次阅读 多人点赞 2016-05-07 10:35:31
    简易计算器的实现我是参照慕课网上的视频课程学习的,下面梳理我的开发过程以及DEBUG
  • 软件测试报告如何

    千次阅读 2020-12-08 07:30:00
    入行软件测试的人员最需要掌握的基本功有三:设计测试用例、发现缺陷、撰写测试报告,透过这三基本功基本可以摸清名测试人员的专业度及其在其他方面的测试技能熟练程度,而从测试报告可以看出用例...
  • 测试报告怎么

    千次阅读 2020-04-22 14:48:09
    测试报告具体包含的内容包括以下(不同公司提供的模板或许有不同,但大体都一样): 第1部分:引言包括两部分1.1项目背景 和 1.2参考资料 1.1项目背景 本测试报告的具体编写目的,指出预期的读者范围。(3...
  • 项目总结报告模板

    千次阅读 2009-05-19 17:12:00
    本文原创:转载请注明出处 http://blog.csdn.net/meritit/archive/2009/05/19/4201795.aspx 或者点击赞助商链接:中国性 爱网 - 性 爱视频 - 性 爱技巧 1 引言1.1 目的[阐明编写本总结报告的目的,指出读者对象...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 107,275
精华内容 42,910
关键字:

一个项目设计报告怎么写