tag 标签: 重构

相关博文
  • 热度 26
    2013-4-12 01:51
    1595 次阅读|
    8 个评论
      大功率高频焊接机量产将近200台了,这个过程差不多花了半年,在这个过程中发现的软件bug一一的解决,软件功能也越来越多,越来越复杂,复杂的甚至连自己修改、添加一些界面都需要谨慎思考,怕牵扯别的问题,很花时间,若想着把这个项目交出去,解放自己去做更大的事情比如:msPLC,则必须要同事来接手才行。而该同事虽然对高频机的调试生产都非常熟悉,但只懂硬件而不会软件,今后让他维护,无疑是天方夜谭了。 这次的系统重构主要有三个目的: 一、一个产品,尤其是工业类产品,必须要专人长期维护,200台是一个坎,因为量少不良率可以高些,若到了1000台,还是一样的不良率,售后都来不及,这个时候就必须要重构系统提高良率。到了10000台,根据之前的经验又要再一次的重构。 二、一个产品的一些功能,原来的预计往往跟实际不符合,比如短路电流保护功能,从实际情况来看,效果很差,基本上没有起到保护作用,反而添乱,一是因为客户的场合电压差异很大,不同的电压,对应的电流不同,所以导致电流保护的门限很宽,其次电流检测不能太灵敏,若太灵敏,经常保护住导致客户抱怨,最后,电流保护延时比较长,等它保护住的时候,都已经炸机了,最后真正的,都是靠前面的总闸起的作用。所以,短路保护实际中效果很差,还远不如其他的检测,一些特点的信号量检测,反而第一时间保护住了,所以这次重构加强原来设计没有考虑到的地方。 三、重构合理的软件架构,在固有的框架下修改局部非常简单方便,便于同事自己维护,解放自己是这次重构的最大目的。   所以这一个月差不多都在埋头重构高频机系统,因为硬件上比较稳定可靠了,只是增加了功率管的导热性及用温度传感器替代温度开关,软件是这次重构的重点。 一个简单易用的架构对我来说不是一件容易的事情,毕竟自己基于C语言下没有大量接触大型软件,只有MTK手机软件的局部经验。并且明显感觉到MS5这个平台也不够用了,自己以前的代码在界面上过于复杂,于是基于这些,我把自己的想法及代码发给公司具有丰富大型软件经验如WINCE、MTK、LINUX的同事,让他们根据我的实际需求提出他们的建议,同时把高频焊接机的软件看作就是一台PLC,按PLC的架构思维来设计软件,为msPLC的软件架构奠定基础。 “活着”对嵌入式的定义我觉得非常到位:精准控制,这是嵌入式与常规大型软件不同的地方。“TOMSU”建议引入结构体实现界面设计,同时建议把系统分为 底层驱动、业务逻辑及菜单显示三部分,完全独立分开,这个思想很好的符合PLC需求,我采纳了他们的建议。 整个开发是痛苦的,因为完全把自己的软件推倒重来,尤其是三层独立设计,对于一个嵌入式人员来说,思维上就非常痛苦,有很多的不便,因为普通的嵌入式设计,驱动、业务及界面往往是混淆起来的,并且设计过程中对RAM的应用往往特别的节约,尤其是长期做MCU51的,而现在要大量的浪费RAM,尤其是大量采用静态变量来设计。 今天去测试了一下新的软件,效果比较满意,基本达到了预期,争取这个月内把这次重构结束掉,开启新的征途。
  • 热度 18
    2008-7-15 15:23
    2700 次阅读|
    0 个评论
    近日,Google谷歌公开了用户可在三维虚拟空间相互交流的服务“Lively”的测试版。从正式网站下载安装专用软件,便可通过Internet Explorer和Firefox等浏览器进入虚拟空间。 Google进入虚拟世界,允许用户创建高度个性化的3 D虚拟环境在网站上。用户可以建立他们自己的自定义字符或造型,并与其互动的朋友通过文字、动画进行聊天。 该服务最大特点是可与互联网上的内容或Web网站连动。用户可将自己创造的虚拟空间贴到SNS和博客等Web网站上,或者将互联网上的视频和图片添加到自己的虚拟空间内。    用户可以制作自己的虚拟化身“Avatar”和Avatar住的“房子(Room)”。房子依设计可以是独门小院,也可以是在无人岛上。每座房子会生成专用标签,用户可通过在Web网站上张贴标签,把自己制作的虚拟空间嵌入到SNS或博客等。 可以为虚拟房间添置家具。依家具不同,还具有把互联网上的各种内容加入到家具中的功能。例如,为电视加入YouTube视频,把Picasa照片放入相框等。 越来越模仿真实现实的互联网会给我们带来什么新的变化,我以为: 1、未来人们上网的时间会更多; 2、网上重构社会和国家,因为网络是跨越地区的。 3、打击了类似“第2人生”这样虚拟游戏,并可能引发新的虚拟游戏热。 4、重新定义和构建网络虚拟社会的个人与商业活动。 5、影响现实社会的社会关系以及电子产品设计,比如可以开发专门针对这个应用的功能。并催生现实社会诞生新的商业模式和群体。
相关资源
  • 所需E币: 0
    时间: 2024-3-8 21:20
    大小: 31.19MB
    上传者: zhusx123
    重构-改善既有代码的设计 程序员的书
  • 所需E币: 0
    时间: 2024-3-3 15:06
    大小: 2.43KB
    为什么我们还要学C++因为在贴近底层、追求性能、降低功耗方面,C++几乎没有敌手,小到嵌入式、大到分布式,C++都是解决问题的利器,面向物联网的“嵌入式”开发和面向大型化的“分布式”开发都离不开它5G即来,C++在起势,你不抓住吗?一、选择编译器在C++编程中,我们需要选择一个合适的编译器来将我们编写的源代码转换为可执行的二进制文件。目前常用的C++编译器有GCC、Clang和MicrosoftVisualC++等。这里我们选择GCC作为示例。二、安装GCC编译器GCC编译器是一个开源的跨平台工具链,可以在多种操作系统上使用。下面是在Windows、MacOS和Linux上安装GCC的步骤:Windows操作系统:访问MinGW官方网站下载对应版本的MinGW安装程序(32位或64位),并运行安装程序。在安装向导中选择"Download",然后选择一个镜像站点进行下载。下载完成后,运行安装程序,按照默认选项完成安装。安装完成后,在命令提示符中输入g++--version,如果输出了GCC的版本信息,则说明安装成功。MacOS操作系统:打开终端应用程序。使用Homebrew包管理器安装GCC。在终端中输入brewinstallgcc,然后按照提示完成安装。安装完成后,在终端中输入g++--version,如果输出了GCC的版本信息,则说明安装成功。Linux操作系统:打开终端应用程序。使用相应的包管理器(如apt、yum等)安装GCC。例如,在Ubuntu上可以使用以下命令进行安装:sudoapt-getinstallg++。安装完成后,在终端中输入g++--version,如果输出了GCC的版本信息,则说明安装成功。三、配置编译调试环境打开VisualStudioCode,点击"文件"->"打开文件夹",选择你的项目文件夹。在项目文件夹中创建一个新的C++源代码文件(如main.cpp),并编写一些简单的代码作为示例。#include<iostream> intmain(){  std::cout<<"Hello,World!"<<std::endl;  return0;}在VisualStudioCode中打开终端(点击"视图"->"终端"),输入以下命令来编译和运行代码:对于Windows系统,使用以下命令:g++-omainmain.cppmain.exe四、解压编译安装注:在安装过程中将用户改为root,具有最高权限,否则可能会因权限问题导致安装不成功;在当前用户安装,该程序路径被添加到该用户的环境变量当中,不同用户可能需要手动添加环境变量。但我在root用户下安装,普通用户下也可使用1、将cmake的源码压缩包通过共享文件夹复制到ubuntu某个目录下,进行解压,2、解压后执行./bootstrap3、出现报错,缺少,未安装openssl,复制资料的中的openssl-1.1.1d.tar.gzubunut下安装。(文章末尾将会提供资源下载链接)安装具体步骤:https://blog.csdn.net/weixin_34072159/article/details/860285844、安装成功后,进入cmake文件夹,再次执行./bootstrap5、然后./configure6、最后make7、makeinstall8、测试安装是否成功:cmake--version,若打印出版本信息,则表示成功五、生成DotNetClient通过Nuget安装Grpc、Grpc.Core及Google.Protobuf将Helloworld.cs及HelloworldGrpc.cs文件添加到项目中。编辑Program.cs如下所示:usingSystem;usingGrpc.Core;usingHelloworld;namespaceDotNetClient{  classProgram  {    staticvoidMain(string[]args)    {      Channelchannel=newChannel("127.0.0.1:50051",ChannelCredentials.Insecure);      varclient=newGreeter.GreeterClient(channel);      varreply=client.SayHello(newHelloRequest{Name="tom"});      Console.WriteLine("Greeting:"+reply.Message);      channel.ShutdownAsync().Wait();      Console.WriteLine("Pressanykeytoexit...");      Console.ReadKey();    }  }}
  • 所需E币: 2
    时间: 2023-5-12 16:19
    大小: 122.68MB
    重构:改善既有代码的设计(第2版)-[美]MartinFowler
  • 所需E币: 5
    时间: 2023-2-21 20:31
    大小: 1.15MB
    上传者: ZHUANG
    一种基于重构的FPGA远程更新方法
  • 所需E币: 5
    时间: 2023-2-21 20:30
    大小: 3.37MB
    上传者: ZHUANG
    FPGA部分重构系统设计与实现
  • 所需E币: 5
    时间: 2023-2-13 16:45
    大小: 1.05MB
    上传者: czd886
    分块大小对BCS框架下移动机器人图像重构影响
  • 所需E币: 0
    时间: 2023-2-12 22:18
    大小: 332.81KB
    上传者: ZHUANG
    PXI平台自适应重构多DSP系统设计研究
  • 所需E币: 5
    时间: 2023-2-14 13:28
    大小: 5.86MB
    上传者: czd886
    基于红外定位的微小型自重构移动机器人
  • 所需E币: 5
    时间: 2023-2-12 18:10
    大小: 1.14MB
    上传者: ZHUANG
    实现DSP重构以及免疫单粒子翻转的新方法
  • 所需E币: 5
    时间: 2023-2-12 18:10
    大小: 1.97MB
    上传者: ZHUANG
    基于FPGA和DSP的星载软件动态重构设计.
  • 所需E币: 0
    时间: 2023-2-11 19:18
    大小: 4.32MB
    上传者: ZHUANG
    基于相空间重构和PSO-SVM的大型商场网络流量预测
  • 所需E币: 0
    时间: 2023-2-10 09:43
    大小: 1.6MB
    上传者: ZHUANG
    灾后煤矿物联网网络空洞覆盖重构算法
  • 所需E币: 0
    时间: 2023-2-10 09:03
    大小: 3.09MB
    上传者: ZHUANG
    无监督残差网络的地震数据重构方法
  • 所需E币: 5
    时间: 2023-2-8 09:18
    大小: 1.31MB
    上传者: ZHUANG
    基于网络动态重构的配电系统优化调度方法研究.
  • 所需E币: 3
    时间: 2022-10-7 14:27
    大小: 1.75MB
    上传者: ZHUANG
    鲁棒性压缩感知重构技术及其在智能视频监控中的应用研
  • 所需E币: 2
    时间: 2022-10-6 17:04
    大小: 1.02MB
    上传者: ZHUANG
    一种高速密集视频监控场景背景重构方法
  • 所需E币: 0
    时间: 2022-8-31 17:26
    大小: 4.06MB
    全局架构重构实践_slides
  • 所需E币: 0
    时间: 2022-7-30 13:45
    大小: 3.86MB
    上传者: ZHUANG
    自适应多阶段线性重构表示分类的人脸识别
  • 所需E币: 0
    时间: 2022-7-29 22:18
    大小: 2.07MB
    上传者: ZHUANG
    人脸识别准入规则的失灵风险与制度重构
  • 所需E币: 0
    时间: 2022-7-29 22:17
    大小: 749.7KB
    上传者: ZHUANG
    由静态到动态_人脸识别信息保护中的“同意”重构