强力推荐。也许有些人还没有认识到,也许有些人还身在其中。此中的痛只有自己知道。读过本书,让我重新认识了爱。
如果身为父母应该更仔细的研读,学会放弃。
7月
30
我使用51单片机,超声波模块是hc-sr04。以前在raspberry上用python测的,这次因为需要转到51单片机上,所以用C语言重写,原理上基本一致。
#include#include typedef unsigned char uchar; typedef unsigned int uint; // 测试距离 uint S; // 非中断用计时计数器 uint hcsr_count; sbit Led = P1^5; sbit Trig = P1^1; sbit ECHO =P1^2; sbit Led4 = P1^4; // 超声波给20us的高电平 void delay_20us() { uchar bt ; for(bt=0;bt<4;bt++); } main() { uint count; uchar us50; Led = 0; Led4 = 0; Trig = 0; ECHO = 0; while(1) { hcsr_count = 0; // 开始20us的搞电平 Trig = 1; delay_20us(); Trig = 0; count = 0; //等待Echo回波引脚变高电平 while(ECHO ==0 ) { _nop_(); } // 开始接收 while(ECHO == 1 ) { for(us50=0;us50<10;us50++); hcsr_count++; // 如果获得范围大于两米 // 则强制返回值 if (hcsr_count >= 2357) ECHO = 1; } //算出来是CM。1.7 出处。 // 在空气中传播速度34000cm/s。 // hcsr_count每次计数时间约为0.00005秒,既1/20000秒 // 34000cm/s * (1/20000)s = 1.7cm/s // 统计出的为往返路程,除2后为单程 S = (hcsr_count*1.7)/2; //算出来是CM if(S < 20) { Led = 1; } else if(S > 21) { Led = 0; } } }
在windows、mac、linux下编写的配置文件会有头部或者换行有区别。为了分析方便简单做个记录,只为演示,代码并不完整,需要自己修改
def conf(conf_context): # 替换window或mac操作系统下的换行符 import re _get_file = re.sub(r'(\r\n|\r|\n)', '\n', conf_context) # 将配置放在内存中 import StringIO _tmp_file = StringIO.StringIO() # 将文件写入内存 _tmp_file.write(_get_file) _tmp_file.seek(0) # 如果是在window下编辑的文件将,utf-8 BOM开始的头替换掉 if _tmp_file.read(3).startswith('\xef\xbb\xbf'): _tmp_file.seek(3) else: _tmp_file.seek(0) # 导入配置 import ConfigParser try: cf = ConfigParser.SafeConfigParser() cf.readfp(_tmp_file) config_list = cf.sections() except: _tmp_file.close() return "error" _tmp_file.close() return "ok"