到现在,工作将近5个月了,工作的笔记本上又乱七八糟写了一大堆,今天就做个了结吧。题目想了想,也不知道为何就随手写了一扎“笔记”,也许爱喝啤酒;也许天天团购,送一扎酸梅汤;总之,不纠结了,就是一扎“笔记”。
技术篇
CreateFile返回值-1是失败,不是0。很多人也许就随手就写为hHandle==NULL就代表失败,其实这是错的,很容易出bug。
在HKEY_LOCAL_MACHINE 下drivers下active下可以看到当前都加载了哪些驱动。注意共用串口的模块,一个通讯,关闭其他,否则出错。
注意串口参数设置的时候fparity和parity不一样哈
射频卡按照频率可以分为:低频、中频和高频。低频:125KHZ和134.2KHZ 中频:13.56MHZ 高频:433MHZ、915MHZ、2.45GHZ、5.8GHZ
注意,有时候你将某个目录下的文件夹名改为XX_bak,为了做备份,然后将新的拷贝进来。这样很有可能报错,因为有时候用的不是文件夹的名称,而是XML配置的名称。
一致性hash,貌似大公司面试考的挺多的。
硬件这玩意,很娇气,在对管脚配置好以后,一定要延时个100ms,否则很容易造成硬件模块混乱。
另外硬件模块要遵循一个规律:开电源-开通讯------操作-------关通讯-关电源
无论何时,做底层接口,一定要和应用层人员商量一下啊,否则,提供的接口有时候并不是别人想要的,而别人想要的你却没有给,但是你直接将最重要的接口给出去,不仅不安全,而且你的api封装的相当失败。。。。教训!!!
永远不要被权威吓着:一个函数 返回值为BOOL类型,看了一下尽然没有 return TRUE;的情况,一个句柄竟然判断==NULL失败;你相信这是一个所谓公司的大牛写的代吗?其实是的。每个人都有可能犯错误,但是如果用心去做每一件事,不求多,求当前最精,错误一定不会很多。无论你有多么笨,只要这样做,一定能做好。无论是谁写的代码,到了你这,你就要搞定,说不一定哪一天出错了,那就是你的责任。相信自己,才是最靠谱的。。。
内置摄像头和外置不一样,驱动一个走总线,一个走usb。
这里又是一个自己没有发现别人的一个错误,将&预算写成了 | 运算,导致不正常,到最后才发现。悲剧啊!!!
看驱动一个很好的办法,就是打调试信息,虽然这个方法很笨,但是确实很有效。因为我们都知道,微软虽然开源了一些核心代码,但是终究还是隐藏了很多代码,所以我们很多时候不知道整个程序的流程,而打调试信息就能知道应用程序如何走,在驱动中如何走的。另外还要学会用kitl调试,但是kitl对中断多的不是很适合,线程多的其实也不是很适合,不过线程之间要是做了很好的同步,那就还好了。
电脑硬盘ahci模式和ide模式,纠结了很久,也发了一篇博客。。。
打开注册表的函数的第二个参数是子键,千万不要将父键也加上了,这个错误有时候很隐蔽啊。。。
wifi的驱动确实很大,但是如果用点心,还是能够解决眼前的bug。一直显示正在连接,wifi驱动被加载两次,wifi模块在无线管理器中消失,然后等一会再出现。。。我感觉这些问题通过log信息以及kitl调试,能够解决问题,但是可能不够完善。要想完美的解决,还要对wifi驱动有一个深刻的理解才行。看代码,写注释,看架构,找bug,找解决问题的方法,不要死磕,要灵活,学会绕,因为有些东西我们看不到,就像微软隐藏的代码等等。相信问题总能够被解决,一定要相信。wifi注册表resetPowerState这个选项好像很重要啊。
蓝牙问题,老是关闭不能打开,老是只能发文件不能接受文件,老是软关机在开启不行。其实这些问题都是驱动中的一些很小的bug,甚至都不用修改驱动。比如只能发文件不能接受,其实在无线接收设置一下就OK了。不知道的还要各种调试驱动,如果要是那样的话,调试到老也不行啊。要灵活。另外其他那些问题就是硬件的一些问题,还是那句话,硬件很娇气,延时要做好啊。无论何时,很有可能就是你的延时问题。
指针一定要初始化一个地址啊,否则不能直接赋值,因为你都不知道将这个值放到哪里去。如果实在不知道赋值什么,那么就=NULL也是好的,但是free的时候一定要注意,防止内存泄露啊。
工作思想篇
写程序的时候一定要先设计好,否则会出很多问题。举个例子,如果你程序里面有很多分支,有时候很早就return 0了,直接不往下面走了,但是很可能你下面有释放内存的语句等等。所以在返回失败的时候一定要把该释放的释放掉,当然这只是其中的一方面。想要有很好的设计思想,好好读读一些经典的代码,一起学习吧,一起共勉吧。。。
写文档很重要,当然要细心啦。因为有时候你给别人的文档,由于你的一个很小的失误,会导致别人浪费大量的时间,这是一个很严重的问题。我就犯过这样一 次这样的错误。实际上这也不全怪我。事情是这样滴,有一个函数是我给出的一个接口,文档上写的是返回TRUE是成功,返回FALSE代表失败。但是其实是反过来的。但是整个服务里面就这一个地方时这样。再设计的时候我曾向上面说过这个不合理,但是没有被重视,结果犯了错误,虽然没有什么严重的后果,但是确实浪费了别人不少时间啊。。。结果还被别人鄙视了一番,其实这倒无所谓,关键是我们从这件事情上可以得到什么?以后文档该怎么写,还是简单的黏贴复制?还是一个一个好好写,认真的写。只有你用心地去做一件事情,才能减少惯性思维犯的错误。每个人都有惯性思维,但是有时候由于前期的设计不合常理,我们的惯性思维很容易导致错误,所以前期设计很重要,要符合常规,不要搞新的花样;当然后期的文档也要重视,因为把好了这一关,一样不会出问题。
上面那个问题让我认识到两个问题,一个就是程序设计的习惯还不是很专业。纵观各个很大的项目(虽然我看的还很少),返回值一直是一个很重要的一环。一般大程序设计返回0成功,其他值都是不同的失败情况。而我习惯正确就是1,错误就是0.这样就很难知道到底错在那个分支,虽然我们可以通过打调试信息,但是不如返回值巧妙啊。以后还是多领会一些标准代码的架构思想啊。
另一个问题就是不够自信,面对权威,总是软了,其实这样是没有必要的。一个方面这样会导致你以后的失误,另外对整个人的状态也是一个坏的影响。只要是正确的合理的,符合要求的,要据理力争啊。当然万事都讲究一个度,太过分了,受伤的还是自己 。
未来篇
最近虽然平平静静,忙忙碌碌,但是还是发生了一些事情,当然还有很多自己不知道的。前途这个东西有时候还是要想的,虽然车到山前必有路,但是那也是要做好准备的,万一是悬崖怎么办,哈哈!总之,还是要先关注一下眼前吧,做好当前的事,闲暇的时候想想自己的未来,想想自己究竟想要什么?乔布什不是说过吗,迷茫的时候,听听自己的心声,follow your heart!最近刚看到一句话,其实也是说这个的,虽然表面是说幸福的,那就是:许多人都认为幸福是一种感受,是一种经过,其实最重要的,幸福是对需求的一种理解。这句话说得很好,有时候我们做的事情虽然能够挣很多钱,有车有房有娇妻有孩子,但是每天很累,不幸福,为什么,反复思考一下那句话,你也许就明白了。累的时候,痛苦的时候可以给大家一个阿Q精神胜利法:人就这一辈子,幸福是一天,痛苦也是一天,过了这一天,这辈子就少了一天,你要怎么过?哈哈,又瞎扯了。
我这个人不喜欢早睡,因为我感觉这样浪费时间,但是这样对身体不好(女朋友常常这样教育我)。但是有一点我相信:效率高的人,会做事的人,一般不熬夜。而不熬夜一般效率会比较高,这是一个良性循环。效率低的要熬夜,熬夜效率又低,这是一个恶性循环。
以上都是个人观点啊,肯定是有对有错,视 不同人不同情况而不一样。