这样的项目,从零开始,需要极大的勇气,是壮士断腕般的勇气。
华容冷静地思考了一下整个“事件”进展和所经历的“谈话”,她认定这个项目的背后,一定有不为自己所知的内幕,尤其是与华萍的一番交涉,加上自己对她的了解,更加确认了这一点:这个项目不简单。
但是,箭在弦上,不得不发,现在已经顾不上这些了。
“也许项目完工之后,幕后的谜题自然就水落石出了”,华容这样安慰自己。而接下来事情的发展,再次证明了自己的推断。
左手捧起日历,右手拿起笔,在工作日记上,迅速地写下项目的时间表:
可确定的日程:
1、确定用户需求+重新规划主菜单及主流程(半天,8.2);
2、调整程序架构(1天,8.3);
3、交工前整机测试(4天,8.17-8.21,周末两天占用1天);
不确定日程
1、重新设计功能模块和子函数(待定:8.4-8.16,含两个周末4天,各占1天);
2、初级测试???
列出了明确的日程后,再无奈地看看手头的资料,手心已经出汗了,但是没办法,只能硬着头皮执行自己的计划。
首先是明确客户的需求,对于一个项目来说,所需要的文字材料,正如此时她手里的A4纸一样单薄。华容按照记录的信息拨出了烟草局的号码,同时右手把日记本翻开了新的一页。
电话拨通了,接电话的正是联系人—烟草局信息中心的洪主任,简单寒暄之后,华容直奔主题:确认明确的需求,对方的态度一下子到了冰点:
“已经谈过两次了,需求不是已经明确了吗?这时候儿了,还在问这个问题,华工,你们在搞什么?”。
“两次?”华容迟疑了一下,调整了一下思路,以平和的语气回答:
“洪主任,我是刚刚加入这个项目组的,与华工同姓,我是华容,负责显示界面和流程设计的,今天华萍工程师不在公司,她说您是烟草局信息中心的主任,对业务需求非常熟悉,有助于对我们的项目的完善和优化工作,所以推荐我与您联系的,我打算请请教几个问题,大概耽误您10分钟,可以吗?”华容停了一下,伸手不打笑脸人,这是试探,也是谈项目的技巧。无论如何,不能够让对方感觉到自己对项目一无所知,否则这个事情将无法进行了。
果然,顺耳的话都爱听,华容可以感觉到对方的语气已经是冰雪消融:“这样啊,好吧,现在我刚好有时间,一个小时后有个会议,你最好抓紧时间问。”
有了突破口,接下来的事情就容易多了,华容一边整理自己的设计思路,一边确认PDA使用流程,并以最快的速度记录下来:开机界面的主菜单显示,二级菜单的进入和显示的内容,三级菜单与一二级菜单之间的切换,包括待采集信息的字段、条目和存储的期限等。
也许是消除了隔阂,又或许是问题比较专业,总之,在和谐的气氛中完成了本次交流,看一下时间,近40分钟,以“期待下次当面请教”作为结束语,华容适当地结束了谈话。
明确了方案,理清了思路,华容开始对程序下手了。
当她打开程序文件,开始阅读代码的时候,暗自庆幸自己所作出的决定是正确的,而且是及时的。
主函数程序是由键盘扫描和串口接收的查询组成的循环。键盘扫描是外部中断方式,与自己的想法一致;串口数据的处理,虽然自己打算用串行中断,但查询方式也是很可行的,因此可以暂时不变。
但关于菜单的显示部分,则可以完全放弃。
菜单部分的处理,采用的竟然是字符串的形式:每条菜单条目的定义,都是一个一维数组,即使是不同级的菜单中,相同的条目,也被定义为不同的一维数组。然后在通过函数调用各个数组,组成不同界面的菜单。这种做法,如果用于及少量文字显示,是无可厚非的,但用于多级菜单处理,既浪费代码空间,而且调用的时候,也非常不便,因为看起来很相似的字符串名称,会扰乱视听,给编程者平添了很多麻烦和隐患。
华容决定用自己最擅长的struct-结构体,这样做的优点是:菜单条目清晰,编程容易,占用CODE空间小,函数调用接口简单,入口函数只需要菜单的结构体名称或者菜单定义的虚拟编号,因此,每个界面的显示,只不过是一个函数的调用,编程时既简单又灵活。
RFID识读部分,底层函数编写得相当不错,但是数据的读写操作方面,函数体逻辑过于复杂,因此也是需要放弃的。改用某块化的方式,编写两个子函数,分别实现read和write一个数据块,然后再通过调用子函数的方式编写,代码看起来简洁,而且便于调试和分析。
时钟部分和FLASH的函数处理,是标准的demo代码,底层函数无需修改,增加几个子函数即可。
浏览完毕所有的源代码,华容舒了一口气,底层函数的代码是没有问题,那么这个项目已经成功一半了。需要增加的处理主要是三个方面:
1、各级菜单的设计
三级菜单就可以满足要求,菜单的内容、功能及调用,通过沟通已经确认;
2、射频卡中巡检数据的生成
根据对方的需求,每次巡检数据需要来访者的工号、到访的时间和离开的时间,时间计时到分钟,而且存在过零点计时的问题,因此该记录可以用HEX格式,压缩到16个字节,这样每条记录只占用一个数据块。
本项目用的是MIFARE ONE S50,第一个扇区的两个数据块可以用于存储客户的信息,其他15个扇区,可以用来存储45条巡检记录,而每个用户,通常一个月可以被巡检5-10次左右,这样可以存储至少3个月的数据,然后以滚动存储的方式,保存最新的45条数据,完全可以满足烟草局的需求。
3、数据的查询和汇总
将每次的写入射频卡巡检数据和走访的客户信息备份到PDA中,这个实现起来更容易,FLASH的空间是足够的,只要顺序写入就可以;
显示分类汇总信息时,用遍历的方法就可以,逐条显示相关的信息。
上述三个问题,虽然有难度,但对于自己来说,在硬件没有问题的情况下,是过程和结果是完全可控的,估算了一下大体的日程,虽然有些紧张,但项目是可以完成的,不过周末加班是避免不了的。大局已定,华容打算放松一下,泡一壶新茶,当她起身的时候,才发现办公室里空荡荡的,只剩下两个人:燕飞和自己,原来早已经过了下班的时间。
“悠着点,下班了”,燕飞说,“看样子,你是胸有成竹了?”
“哪里有成竹啊,只不过想清楚了方案设计”,华容一边整理手中的方案,一边回答,今天她也不想加班,因为有些“用脑过度”了。
“可以看一下吗?”燕飞伸出细长的手指,指向华容手里的方案。
“当然可以”,把整理好的文字,双手递了过去。
燕飞迅速地浏览,然后也是双手归还,随口问道:“聊聊你的想法,介意不?”一半是询问,一半是命令的口气。
“当然愿意,正打算向您请教呢。”华容打理好背包,边向外走边说。“在时间上和功能方面,项目虽然有难度,但是可以完成的,所以我打算按照自己的想法,重新规划主流程和有关菜单的显示系统。”
“这是什么逻辑?明知道有难度还要重新设计主流程,你没发烧吧?”是戏谑的口气。
“是这样的,燕总”,华容连忙解释,“原来的主流程和显示部分,不适合多级菜单的处理,如果将就一下,也行,但是我担心这种打补丁的方式会影响整个项目的进度,与其在一个不适合的系统上打补丁,不如重新设计,这样至少可以保证效率和质量,最重要的是可以满足这个项目的需求和进度。”
“看看你的手机短信。”
“什么逻辑?”华容没反应过来,对方的思维太跳跃了,疑惑地扭过头来,看到的是一张似笑非笑的脸,还是没懂,于是低头翻看一下手机的信箱,最新的一条短息是燕飞的,打开信息,只有4个字:“从零开始”。
看来,作为技术总监,燕飞早已经洞悉项目的内容和当前产品的问题,所以与自己的见解相同。
“打住,别说‘所见略同’之类的套话”,没等华容开口,燕飞先封住了华容的口,随之口风一转,有些幽怨,“如果不是你接下了这个项目,那么承担这个项目的就是我,重新规划方案,也是我的想法。”
与非网原创内容,谢绝转载!
摘要:沈阳的一场大雪似乎也预示着公司的某些变动,果然在休整后的第二天得到了证实,去掉一个部门,重组一个部门,孤立了一些人,拉拢了一些人,兵还是兵,将还是将...
摘要:部门虽然重新划分,但办公室里的格局和人员的位置都没有变动,好像没有发生任何事情。华容原本是个局部变量,从不参与本部门以外的事情,但这次人事变动,她的主管设计师的职位依旧,只不过属性变成了全局变量...
摘要:华工对自己的项目满腹疑惑,后来在和燕飞的一场谈话中了解到了很多缘由,看似表面风光的销售业绩只有还有不为人知的秘密...
摘要:经过与燕飞中午的一番谈话,华容不敢再对眼前的PDA(手持机)怠慢了,但是只有她自己清楚其中的问题:框图已经有了,芯片的资料可查,那么详细的电路原理图,就不再是问题,可是偏偏无人提供原理图的电子版,害得她不得不自己动手...
摘要:平心而论,华容觉得自己与华萍之间还谈不上“默契”,因为到目前为止,这个词只属于当年那个team。是她在转行之后,加入的第一个开发团队—中鼎公司中文版ECR的项目组...
摘要:真正的交接开始了,果然不出华容的意料,华萍想尽办法隐藏原理图,让她感到意外的是华容在两年前已经开始学习画板子,而华容也知道她开始写程序,曾经推心置腹的合作伙伴如今心有芥蒂...
本系列为付丽华老师原创故事《51的江湖》连载,故事中有职场,故事中还有技术,最真实的项目案例与大家一起探讨。每周一期,更多内容请查看: