搜索

tag 标签: 如何

相关帖子

版块 作者 回复/查看 最后发表
DE1-SoC硬件部分如何实现ADC数据采集 【Altera SoC】 xiyanghong 2017-3-24 4 51 zxq6 昨天 20:33
假如串口通信上要用上浮点数,你是怎么处理的? attach_img 单片机 ywlzh 2017-3-24 4 67 人民币的幻想 昨天 15:24
cc26xx TIMAC协议栈中 RATGPO1 输出问题 【TI无线】 woxiaoniu 2017-3-23 0 0 woxiaoniu 前天 22:27
郑州市政道路桥梁发电乙级资质如何办理 信息发布 kx558 2017-3-23 0 0 kx558 前天 13:59
郑州市政道路桥梁发电乙级资质如何办理怎么配备人员 信息发布 kx558 2017-3-23 0 0 kx558 前天 13:58
如何挑选自动光学筛选机 信息发布 tan0919 2017-3-23 0 0 tan0919 前天 11:10
晶振的参数用哪些英文字符代表?晶振出现不良状况如何解决? attach_img 信息发布 yijindz 2017-3-23 0 0 yijindz 前天 11:00
非法添加剂横行 如何保护舌尖上的安全 attach_img 信息发布 杭州筑美科技 2017-3-23 0 0 杭州筑美科技 前天 09:34
申请河道整治丙级资质需要如何办理/需要人员哪些1? 信息发布 kx111 2017-3-22 0 0 kx111 3 天前
达林顿管电路的分析 attachment 【51单片机】 小瓜子 2017-3-22 5 163 xunke 3 天前
玩科幻啊:你会不会也把共享单车打造如此酷?科幻你的单车~ ST MEMS 传感器技术论坛 nmg 2017-3-22 7 146 littleshrimp 昨天 00:11
Boa服务器如何启动 attach_img 【ARM技术】 pengge2013 2017-3-21 0 101 pengge2013 4 天前
linux如何修改当前输入设备 【Linux与安卓】 lzwml 2017-3-21 2 143 lzwml 4 天前
本版置顶 无创想,不奇迹系列主题一:如何让电动汽车更加安全可靠(参与有奖) attach_img 综合技术交流 EEWORLD社区 2017-3-21 8 277 strong161 4 天前
物联网领域细分,室内定位如何抢占先机? attach_img 信息发布 寻息电子 2017-3-20 0 0 寻息电子 5 天前
如何实现51单片机和触摸屏,以及plc的通讯? 【51单片机】 ehszt 2017-3-18 5 124 zxq6 6 天前
这个电路如何实现点阵字符上下移动? attach_img 【stm32/stm8】 程序会不会 2017-3-17 9 233 程序会不会 4 天前
河南 大型洗衣污水处理设备如何操作--潍坊海创环保 attach_img 信息发布 潍坊海创环保 2017-3-17 1 1 潍坊海创环保 2017-3-17 16:34
如何设计并调试锁相环PLL attach_img 综合技术交流 Jessie.t 2017-3-17 0 0 Jessie.t 2017-3-17 16:29
固态电解电容如何取代铝电解电容? 信息发布 dianzu66 2017-3-17 0 0 dianzu66 2017-3-17 15:21

相关日志

分享 五分钟理解Java的反射API
huicnet 2017-3-21 10:46
目录 反射API 基本类型和方法 注解 概要 注释 像java一样,一种具有反射功能的语言。允许开发人员在运行时检查类型、方法、字段、注解等,并在程序运行时决定是否使用。 为此,Java的反射API提供类,类,字段,构造函数,方法,注释和其他。 使用它们可以与编译时未知的类型进行交互,例如创建未知类的实例并对它们调用方法。 这个快速提示旨在让您深度了解什么是反射,它在Java中的使用,以及它可以用于什么。 之后,你将准备好开始或工作更长的教程。 为了充分使用它,你应该很好地理解Java的类构造器,特别是什么类和方法以及它们如何关联。 了解注释可解锁单独的部分。 Reflection API 我们从一个简单的Java代码开始(代码针对有一定java基础的阅读人员) URL url = new URL( "https://sitepoint.com/java" ); String urlString = url .toExternalForm(); System.out.println(urlString); 我决定 在编译时 (即当我在写代码时)创建一个URL对象,并且调用了其中的一些方法。下面演示了我使用Java的反射API完成了同样的事情: // the gateway to reflection is the `Class` instance // for the class you want to operate on Class? type = Class.forName( "java.net.URL" ); // fetches the constructor that takes a `String` argument // and uses it to create a new instance for the given string Constructor? constructor = type . getConstructor (String. class ); Object instance = constructor.newInstance( "https://sitepoint.com/java" ); // fetches the `toExternalForm` method and invokes it on // the instance that was just created Method method = type . getMethod ( "toExternalForm" ); Object methodCallResult = method.invoke(instance); System.out.println(methodCallResult); 使用反射API的确比直接写代码要笨重一点. 但是使用反射你会发现,你在代码当中的调用细节 (比如说我用的URL这个类以及我调用其中的方法) 变成了仅仅一个参数. 结果呢,在编译期间URL以及toExternalForm并没有绑定, 它们是在程序开始运行的时候才被决定绑定的 反射的大多数用例都是“框架”的场景下,想想junit, 比如说, 执行所有被@ test注解的方法. 一旦框架在classpath扫描的时候找到注解它就会调用getMethod以及invoke函数去执行用户代码. spring和其他的一些web框架在搜索控制器以及url映射的收也差不多是这么做的,对可扩展的应用程序来说反射的另外一个用途就是在运行时加载用户提供的插件 基本类型和方法 调用反射API的方法是Class :: forName。 在它的简单形式中,这个静态方法只需要一个完全限定的类名,并为它返回一个Class实例。 该实例可用于获取字段,方法,构造函数等。 通过构造器函数获取类对象,getConstructor方法可以使用构造函数参数的类型调用,就像我上面做的那样。 类似地,可以通过调用getMethod并传递其名称以及参数类型来访问特定方法。 上面的getMethod(“toExternalForm”)调用没有指定任何类型,因为该方法没有参数。 这里有一个方法: Class? type = Class.forName( "java.net.URL" ); // `URL::openConnection` has an overload that accepts a java.net.Proxy Method openConnection = type . getMethod ( "openConnection" , Proxy. class ); 这些调用返回的实例分别是Constructor和Method类型。 要调用底层成员,他们提供类似于Constructor :: newInstance和Method :: invoke的方法。 后者的一个有趣的细节是,要调用该方法的实例需要作为第一个参数传递给它(它指类的实例)。 其他参数将被传递给被调用的方法。 继续openConnection示例: openConnection .invoke (instance, someProxy); 如果要调用静态方法,则将忽略实例参数,因此可以为null。 注解 注解是反射的重要组成部分。 事实上,注解主要针对反射。 它们旨在提供程序运行时访问的元信息,然后用于塑造程序的行为。 所有重要的反射相关类型,如类,字段,构造函数,方法和参数实现AnnotatedElement接口。 链接的Javadoc包含了注释如何与这些元素(直接呈现,间接呈现或关联)相关的详细解释,但是它最简单的形式是:getAnnotations方法以注释实例数组的形式返回该元素上存在的注释 ,然后可以访问其成员。 总结 Java的反射API允许在运行时自动检查类型,方法,注释等,并调用在编译时未知的构造函数和方法。首先,请调用Class.forName("fully.qualified.class.Name"),然后调用getConstructors,getMethods,getAnnotations或类似方法。调用伴随构造函数的newInstance和方法的invoke一起发生。 你也可以使用 反射分解代码 并更改非公共字段或调用非公共方法 - 这是一个冒险的做法,而且 在Java 9中变得更加困难 。如果你很好奇,并希望知道所有的API的来龙去脉, 在Java的官方文档中给出了反射线索 。到目前为止,API有点过时并有一些缺点,但是新的替代方案存在,查看 方法句柄 (自Java 7)和 变量句柄 (自Java 9)。
13 次阅读|0 个评论
分享 电子产品,居多如何选择
热度 1 电级达人 2016-11-4 10:12
我是比较喜欢,电子类的产品,比如:新出来的手机,我就要去查它相关的信息,功能是否好坏,有什么独特之处;给大平台也是一样的,网上有那么多各大平台,但它们有各自优势;它们能在众多平台里存活下来,是有一定的基础,有一定的实力,而我能否在这电子工程世界里脱颖而出还是未知数;所以我要抓紧加油。
681 次阅读|1 个评论
分享 如何判断MOS工作什么状态
A001 2016-6-13 20:31
如何判断MOS工作什么状态
177 次阅读|0 个评论
分享 如何用电脑自带的计算器进行各种计算
箫声欲碎 2016-3-29 08:42
如何用电脑自带的计算器进行各种计算 一。如何从电脑中调出计算器? 以下以电脑 Windows 7 系统中调出计算器做例子说明。 (电脑 Windows XP 系统2014年4月8日正式宣布“退休”,从当日起,Windows XP 系统不再提供补丁修复漏洞等服务,WindowsXP 系统不再得到安全保护,所以我已从Windows XP 山头撤出。) 单击屏幕左下角的“开始”按钮,单击“所有程序”按钮,拉动滑块,找到“附件”按钮单击,在弹出的列表中就会看到“计算器”,单击“计算器”(已用红笔标出),就可弹出计算器。 你也可以在“计算器”上单击右键,把它发送到桌面快捷图标,以便随时可打开。见图-1 和图-2: 图-1 图-2 上面图-2计算器默认选择“十进制”。叫十进制科学型计算器。 单击“十六进制”,“十进制”,“八进制”,“二进制”等按钮,可以调出有关进制计算器。而2进制科学型计算器适合程序员编程。现市面上还有高中生,大学生专用计算器。 二。计算器上的英文计算符号是什么意思? 1. CE :在标准型计算器中清除输入键。在数字输入期间按下此键将清除输入寄存器中的值并显示"0." 2. . M+:把目前显示的值放在存储器中;中断数字输入 3. M-:从存储器内容中减去当前显示值;中断数字输入. 4. MRC:第一次按下此键将调用存储器内容,第二次按下时清除存储器内容. 6.← 在数字后面删除数字。 7. MR清除存储器内容.,清除后显示为0. 8. MU(Mark-up and Mark-down键):按下该键完成利率和税率计算. 10. ← 删除当前显示数字的最后一位。 11. Sin计算显示数字的正弦。只能用于十进制数字系统 12. cos 计算显示数字的余弦。只能用于十进制数字系统。 若要计算反余弦,请使用“Inv”+“cos”。若要计算双曲余弦,请使用“Hyp”+“cos”。若要计算反双曲余弦,请使用“Inv”+“Hyp”+“cos”。cos 只能用于十进制数字系统。Dat 在“统计框”对话框内输入显示的数字。只有先单击“Sta”, 该按钮才可用。 13. Exp 只能用于十进制数字系统,指数限制为四位数。指数中只能使用十进制数(键 0-9)。 14. Hyp 设置“sin”、“cos”和“tan”的双曲函数。 15. In 计算自然对数(以 e 为底)。若要计算 e 的 x 次方(其中 x 是当前数字),请使用“Inv”+“ln”。 16. Mod 显示 x/y 的模数或余数,例如,计算 5 除以 3 的模数,单击“5 MOD 3 =”,结果为 2。 17. MS 将显示数字保存在内存中。 18. 平方根√ :显示一个输入正数的平方根。 19. Ave 计算“统计框”对话框中显示数值的平均值。若要计算平均方值,请使用“Inv”+“Ave”。只有先单击“Sta”,该按钮才可用。 20. Dat 在“统计框”对话框内输入显示的数字。只有先单击“Sta”,该按钮才可用。 21. 度数 在十进制模式下将三角函数输入设置为度 22. dms 将显示数字转换为度-分-秒格式(假设显示数字是用度数表示的)。若要将显示数字转换为用度数表示的格式(假设显示数字是用度-分-秒格式表示的),请使用“Inv”+“dms”。dms 只能用于十进制数字系统。 23. pi 显示 pi 的值 (3.1415...)。若要显示 2 * pi (6.28...),请使用“Inv”+“pi”。“pi”只能用于十进制数字系统。 24. 弧度 在十进制模式下将三角函数输入设置为弧度。 25. sqrt 计算显示数字的平方根。 26. Sum 计算“统计框”对话框中显示数值的总和。若要计算平方和,请使用“Inv”+“Sum”。只有先单击“Sta”,该按钮才可用。 27. tan 计算显示数字的正切。若要计算反正切,请使用“Inv”+“tan”。若要计算双曲正切,请使用“Hyp”+“tan”。若要计算反双曲正切,请使用“Inv”+“Hyp”+“tan”。“tan”只能用于十进制数字系统。 28. x^2 计算显示数字的平方。若要计算平方根,请使用“Inv”+“x^2”。 29. x^3 计算显示数字的立方。若要计算立方根,请使用“Inv”+“x^3”。 30. x^y 计算 x 的 y 次方。例如,若要计算 2 的 4 次方,请单击“2 x^y 4 =”,结果为 16。(等号不要漏掉)。 以下是高中生大学生专用计算器上一些英文符号意思: 1.COMP 是指基础运算 2. SD 是指标准偏差 3. REG 是指回归线求解 4. Lin是以e为底数的对数回归线 5. Log是以10为底数的回归线 Quad是抛物线 6. Deg 是角度中"度"的意思 7. Rad 是角度中"弧度"的意思。 8. Gra 是角度中"梯度"的意思。 9. Fix 是指保留小数点的个数 10. Sci 是指科学计数法保留位数 11. Norm 是指常规模式。 12. Disp 是分数白留形式(有带分数(ab/c)和假分数(d/c)) 三.用十进制计算器计算的实例 1. 计算 18+(8-2)/3*4的值 。 这是四则运算式。四则运算的法则是:先乘除后加减,先括号内后括号外。如果无视四则运算法则,一次性输入算式,则得数为23.333…,显然是错误的。正确的做法应该尽量使用上面图-2所示十进制科学型计算器并且要注意四则运算法则。正确算法是:如图-2,按8然后按减号-,再按2,按等号=,得出6.(即先算括号得数),按除号/ ,按3,按乘号* ,按4 ,按等号= ,得8 ,(即算乘除得数),然后按加号+ ,按18 ,按等号=,最后得出算式正确结果26 。注意,这里巧妙地利用等号=来适应四则运算法则。 有人会问,上面算式如果把18+改为18- ,如何计算呢?这容易。当算完括号和乘除后,得数为8 ,请记住得数8,按删除键MR, 计算框中的8被删除,成为0.然后按18 ,按减号- ,按刚才的得数8 ,按等号= ,最后得结果为10 。 注意,按计算器上的 MR 按钮可清除输入的数字。 2. 计算 8的平方是多少? 解:在图-2右上方单击“查看”按钮,在下拉菜单上单击“科学型”,(已用红笔标出)。见图-3: 图-3 弹出下图,见图-4: 图-4 解 :按图-4右侧的8 ,按左侧的X2, 按等号= 得数为64 。8的平方是64 。 3. 计算 5的立方是多少? 解 :按图-4右侧的5 ,按左侧的X3 , 按等号= ,得125 ,5的立方是125 。 4.计算 三角函数 Sin 700 解:按图-4右侧的70,按左侧的sin ,按等号= ,即得所求约为0.9397 . 5. 计算 24 , 解: 按图-4右侧的2 ,按左侧的Xy ,按右侧的4 ,按等号= ,得数为16 。 6. 计算以10为底,2.9的对数 。 解:按图-4右侧2.9 ,按左侧对数符号 log ,按等号= ,得数约为0.4624 . 7. 计算 22+32+42 的值。 解: 按图-4右侧的2,按Xy ,按2 ,按等号= ,得4,按加号+ ,按3 ,按Xy ,按2 ,按等号= ,得13 ,按加号+ ,按4 ,按Xy ,按2 ,按等号= ,得29 。即2,3,4各数的平方之和为29. 8. 把 792 的 2 删除掉 解:按 792 ,按←后, 792 即变成了 79 。 . 9. 求 21/6 的余数 解:按 21 ,按余数键 Mod ,按 6 ,按等号 = ,即得 21/6 的余数 3 。 10.求76的平方根 解: 按76 ,按平方根号√ ,得76的平方根约为8.718 11.求45的立方根 解 按45 ,按立方根号(见计算器1的左侧),得45的立方根约为3.557 12. 把十进制的 21783 转换为二进制数字(适合程序员编程使用的数字) 。 解 :勾选图-2左侧的“十进制“,输入21783 ,然后选中左侧的二进制按钮(Bin按钮)单击,21783即变成了适合程序员使用的二进制的数字101010100010111 。 13.已知 圆的半径r是4cm , 求 周长L 解 根据公式L=2πr ,在图-4 中按2,按* ,按π ,按4 ,按= ,得数约为25.13 注意,上面公式计算时不能漏掉乘号* ,否则出错。 注意,当你计算下一条算式时 住 , 记要先按全部清除键 MR 清除上一次计算得出的数字,才输入下一条算式。 四.单击科学型计算器上方的“查看”按钮,弹出的下拉菜单,可以设置转换各种计算器,单位转换,日期计算,工作表计算等,下图是“工作表”计算。见图-5: 图-5 下图是在图-3单击“单位转换”按钮后,弹出的对话框,单击右侧的文本框下拉箭头 ▼,把摄氏25度转换为华氏的度数。见图-6: 图-6 计算器经过多次打开后,要恢复原始形,即图-2的样子,单击“查看”按钮,在弹出的下拉菜单中单击“基本”按钮,就可恢复。
1 次阅读|0 个评论
分享 如何制作一个vagrant的base box
Timson 2016-1-6 12:44
虽然这里 已经罗列出了许多个base box,但有些时候,可能根据自身的业务需要一些特殊的box,比如,笔者遇到的,需要一个带桌面环境和浏览器测试用的box,这个在网上可没有找到,无奈之下,只能自己装虚拟机,做一个base box出来,以便使用。本文主要针对ubuntu的base box的制作。 步骤如下:(环境 OS:ubuntu12.04_Desktop virtualbox:4.1.12) 1.在物理机安装好 ubuntu系统 ,在此系统上安装virtualbox 2.下载一个需要的ubuntu版本的iso镜像 3.创建一个新的虚拟机 给虚拟机起个名字为”vagrant-precise32″ 确保您分配足够的磁盘空间,40GB足够了。 确保默认的 内存分配 也不用太高,建议360M。 如果不需要,禁用音频,USB控制器等。大多数应用程序都不需要播放音乐!因此,节约资源,禁用这些功能。 确保 网络控制器 设置为NAT,为了 端口转发 正常工作。 4.启动虚拟机,安装ubuntu,确保配置如下(非强制,如打算分发此box,建议遵循如下约定) Hostname:vagrant- ,例:vagrant-ubuntu-Steve Domain: vagrantup.com Root Password: vagrant Main account login: vagrant Main account password: vagrant 5.安装完毕后,进入虚拟机 6.根据自己需要,安装一些常用软件 sudo apt-get -y install vim 7.创建admin组 sudo groupadd admin 8.添加vagrant用户到admin组 sudo usermod -G admin vagrant 9.修改sudoers文件 sudo vim /etc/sudoers #添加或修改如下行(有些发行版还需Disable requiretty): Defaults env_keep=”SSH_AUTH_SOCK” %admin ALL=NOPASSWD: ALL 10.安装puppet(chef没有计划装进去,如需要可安装ruby,rubygems,chef) sudo apt-get install puppet puppetmaster 11.安装ssh sudo apt-get install openssh-server 12.安装vagrant的public keys mkdir ~/.ssh/ cd ~/.ssh wget http://github.com/mitchellh/vagrant/raw/master/keys/vagrant wget http://github.com/mitchellh/vagrant/raw/master/keys/vagrant.pub mv vagrant.pub authorized_keys 13.Install virtual box guest additions(为了 共享文件夹 , 端口转发 等) (1) First, build the necessary packages. You may have to look these up for your system, but they should be fairly similar. On Ubuntu and Debian based systems they are as follows: $ sudo apt-get install linux-headers-$(uname -r) build-essential (2) Next, make sure to insert the guest additions image by using the GUI and clicking on “Devices” followed by “Install Guest Additions.”. Then run the following to mount the CD Rom: $ sudo mount /dev/cdrom /media/cdrom (3) And finally, run the shell script which matches your system. For linux on x86, it is the following: $ sudo sh /media/cdrom/VBoxLinuxAdditions.run If you didn’t install a Desktop environment when you installed the operating system, as recommended to reduce size, the install of the VirtualBox additions should warn you about the lack of OpenGL or Window System Drivers, but you can safely ignore this. 14.清除缓存 sudo apt-get clean 15.关闭虚拟机,进入virtual box directory(~/VirtualBox VM/vagrant-precise32) vagrant package –output ubuntu_32.box –base vagrant-precise32 总结:以上步骤完成后生成的ubuntu_32.box就可以拿来用了,用vagrant box add ,vagrant init等自己测试看看吧。
478 次阅读|0 个评论
分享 CC2538之TinyOS例程实验:5-Adc_Temp片内温度读取实验 TinyOS如何直接使用C文件
dan158185 2016-1-5 16:07
使 用过CC2530的朋友肯定对TI的片内温度不陌生;下面带来2538的片内温度读取;先看实验结果: 代码部分:选择使用TinyOS来实现 此处的实验是向大家展示如何TinyOS如何直接使用C(h)文件,打消大家认为TiinyOS编程只能用nesC的误区 1,温度读取函数tinyos-main-release_tinyos_2_1_2\tos\chips\cc2538\adc 下的cc2538_temp_sensor.c和cc2538_temp_sensor.h cc2538_temp_sensor.h文件: view plain copy print ? #ifndefCC2538_TEMP_SENSOR_H_ #defineCC2538_TEMP_SENSOR_H_ #defineCONST0.58134//(VREF/2047)=(1190/2047),VREFfromDatasheet #defineOFFSET_DATASHEET_25C827//1422*CONST,fromDatasheet #defineTEMP_COEFF(CONST*4.2)//FromDatasheet #defineOFFSET_0C(OFFSET_DATASHEET_25C-(25*TEMP_COEFF)) uint16_tGet_CC2538_Temp( void ); #endif cc2538_temp_sensor.c文件: view plain copy print ? #includestdbool.h #includestdint.h #includestdio.h #include"hw_memmap.h" #include"gpio.h" #include"hw_ioc.h" #include"ioc.h" #include"interrupt.h" #include"adc.h" #include"sys_ctrl.h" #include"hw_sys_ctrl.h" #include"systick.h" #include"hw_rfcore_xreg.h" #include"hw_cctest.h" #include"cc2538_temp_sensor.h" uint16_tGet_CC2538_Temp( void ){ uint16_tui16Dummy; // //EnableRFCore(neededtoenabletempsensor) // SysCtrlPeripheralEnable(SYS_CTRL_PERIPH_RFC); // //ConnecttempsensortoADC // HWREG(CCTEST_TR0)|=CCTEST_TR0_ADCTM; // //Enablethetemperaturesensor // HWREG(RFCORE_XREG_ATEST)=0x01; // //ConfigureADC,Internalreference,512decimationrate(12bit) // SOCADCSingleConfigure(SOCADC_12_BIT,SOCADC_REF_INTERNAL); // //Triggersingleconversiononinternaltempsensor // SOCADCSingleStart(SOCADC_TEMP_SENS); // //Waituntilconversioniscompleted // while (!SOCADCEndOfCOnversionGet()){ } // //Getdataandshiftdownbasedondecimationrate // ui16Dummy=SOCADCDataGet()SOCADC_12_BIT_RSHIFT; return ui16Dummy; } 2,编写TinyOS例程:Adc_TempAppC.nc,Adc_TempC.nc, makefile文件: makefile文件: view plain copy print ? COMPONENT=Adc_TempAppC CFLAGS+=-DUSE_TIMER_HANDLER CFLAGS+=-DNOT_USE_PRINTFC_BUT_USE_PRINT include$(MAKERULES) A dc_TempAppC.nc文件 view plain copy print ? configurationAdc_TempAppC { } implementation { componentsMainC,Adc_TempC; componentsnewTimerMilliC()asTimer1; Adc_TempC-MainC.Boot; Adc_TempC.Timer1-Timer1; } Adc_TempC.nc文件: view plain copy print ? /******************************************************************* *实验附加----CC2538片内温度读取 *节点需求数1 *编译命令makecc2538cb ********************************************************************/ #include"Timer.h" #include"printf.h" #include"cc2538_temp_sensor.h" moduleAdc_TempC{ usesinterfaceTimerTMilliasTimer1; usesinterfaceBoot; } implementation{ taskvoidtime1_Task(); uint16_tui16Dummy=0; /*************************************************** *启动事件 ****************************************************/ eventvoidBoot.booted(){ /**开启一秒的周期性定时器(单位毫秒)Timer1**/ callTimer1.startPeriodic(1000); } /*************************************************** *任务time1_Task ****************************************************/ taskvoidtime1_Task(){ doubledOutputVoltage; ui16Dummy=Get_CC2538_Temp(); printf("ADCrawreadout:%d\n",ui16Dummy); //温度计算 dOutputVoltage=ui16Dummy*CONST; dOutputVoltage=((dOutputVoltage-OFFSET_0C)/TEMP_COEFF); ui16Dummy=dOutputVoltage*10; printf("Temperature:%d",ui16Dummy/10); printf(".%d",ui16Dummy%10); printf("C\n"); } /*************************************************** *Timer1定时时间到事件 ****************************************************/ eventvoidTimer1.fired(){ /****提交time1_Task任务***/ posttime1_Task(); } } 大家可以看到Adc_TempC.nc文件中 view plain copy print ? #include"cc2538_temp_sensor.h" ui16Dummy=Get_CC2538_Temp(); 这些不就是直接使用了C文件了吗?nesC只是C的方言,相信即使没有nesC语言基础的朋友应该也能大概看懂代码干了什么;就是1秒采集一次片内温度然后串口打印 至此可以引申如果是需要给TinyOS引入其他的传感器呢,呵呵,其实就是拿来厂家提供的C源码直接 使用即可,不用去写成nesC;
个人分类: CC2538之TinyOS例程|195 次阅读|0 个评论
分享 如何用一台HiNet网关连接多台以太网PLC
hignton 2015-11-26 16:46
一台HiNet网关最多连接254台以太网接口的PLC或者触摸屏,连接步骤如下: 1、通过IE浏览器进入设备云管理平台( plc.hignton.com ),并点击“综合平台一入口”; 2、在登录页输入公司名称和登录密码,默认登录密码为12345678; 3、点击“设备”栏,并在设备菜单下点击“新建”; 4、在“识别标识”中输入设备名称(必须保持同一网络内的唯一性)--选择绑定的网关、PLC型号、接口类型,如果是以太网口的话则需要输入PLC的IP地址。该处PLC的IP地址必须保持和网关在同一个局域网内(如:网关IP地址为192.168.10.254,则PLC的IP地址必须为:192.168.10.X,X可以是1-253中的任意数); 5、设备新建完成后,打开客户端软件,即可找到您新建的PLC设备了,并可进行远程操作了。
177 次阅读|0 个评论
分享 LED灯如何节能省电?
JTEMC 2015-10-26 14:10
LED灯如何节能省电?既然LED灯主打节能省电,那么它是如何体现出来的?br\ \ br对替换产品来说,在相同的光通量下,可用光效来估算节能比例。比如40瓦白炽灯的光效约为13流明/瓦,光通量是520流明;替换用10瓦荧光灯的光效约为50流明/瓦,光通量约500流明,比白炽灯节能80%;替换用5瓦的LED球泡灯,光效约100流明/瓦,光通量同样约为500流明,比白炽灯节能95%,比荧光灯节能50%。\ \ 如果按照每天点灯时间为4小时计算,则一年需要点灯1460个小时。brbr此次检测5W的LED球泡灯对比白炽灯以及荧光灯做替换推算,5瓦的LED球泡灯的效能,相当于10W荧光灯和40W白炽灯的效能。那么一年里,白炽灯的耗电量则达58400瓦时,荧光灯则有14600瓦时,LED球泡灯则是7300瓦时。再转换为度(编者注:1度=1千瓦时),则白炽灯一年需使用58\.4度电,荧光灯14\.6度电,LED球泡灯7\.3度电。\ \ \ brbr以2015年3月份广州居民生活用电0\.61元/度计算,一年白炽灯的电费为35\.62元,荧光灯电费为8\.91元,LED球泡灯为4\.38元。而且,如果把球泡灯用在商场或办公室场合这种需要大量使用灯具的场合,随着时间的推移所省的电费是相当可观。
323 次阅读|0 个评论
分享 新型随机函数的制作
sjd_dzgc 2015-9-23 19:10
  新型随机函数和以往的随机函数一样的地方是:使用时需要首先设置种子,每次调用得到一个数据,输出的是一些乱码。   不同之处是这种随机函数输出的数据之间是没有关联的,你不能用连续几个输出值推算其计算公式,这是因为它生成方式所致,它没有公式你也推导不出来。   以往的随机函数是由算式生成的,所以它的数据是由算法关联起来的,可能是线性关联甚至高维度的关联。   新函数是采用构造法生成随机数的,现在基本数据是字节,别的结构可以用字节来组合,所以就单说以字节为单位的随机函数,它的元素是 0至 255共256个,构造法是这样运作的,例如要建造256×N长度的随机数组,所要材料是256×N个元素,一般需要元素分布均匀,所以每种元素取N个,将这些元素组成一个数组,初始状态如何都没关系,然后对这个数组进行随机排序,随机排序就是让数组内的元素位置随机的交换,一般可以用循环来完成,例如256×N的长度,用一个循环变量i,从头到尾的循环,另外随机的在256×N中选择一个位置,用这个位置的元素和第i个元素进行交换,这样循环一次每个元素都被交换了,交换完成后新的顺序建立了,生成了新的数组。从256×N中选择位置的操作可以用其它随机函数来完成,也可以拼凑一些随机性较强的变数来完成。一遍随机排序不理想可以进行多遍,一般借助于优秀的随机函数一遍就够了。这样子一下子就生成了一个长度为256×N的数组。如果借助于其它随机函数那么其需要的种子也就是此种生成方式的种子了,否则其中生成随机位置的参数等将作为种子。   新型随机函数数据的生成机制上面已经说了,为了照顾到应用习惯,模拟老式随机函数的使用方式。方法是你可以生成一定数量随机数据,函数每调用一次输出一个数据,用完后继续生成新的,这样函数就形成了。具体细节是每次生成的量不可过小,要大于元素总和数的数倍,为了均匀一般是整数倍,为什么呢?可以这样看,例如这个量是由256个不同元素组成,那将出现一个问题,我们的输出可能是每次不相同的元素,可能连续256次都有此特点,这显然是让数组有了某些规律性,所以生成量要更大些才能消除这个规律。   新型随机函数的随机性比老式的要更好些,它是数据混合均匀后的输出,什么数据都是等概率的,也可能输出的是零值,一般随机函数没有此特性。   现在的输出数据是无符号字节数组,很容易变成其它形式,例如做32位无符号整形数组,只要每次取四个无符号字节就可以组合。   基本的新函数已经做出性能还是不错的,并且生成速度可达到每秒几十兆字节。   新函数还没有名称随便征求一下。由于还没有见到类似的随机数生成方式,所以暂时可称其为“构造随机函数”或“乱排随机函数”。   此种方法的理论基础是热力学第二定律——熵增加原理,当我们以多种方式影响数组的序列时,数组将向着更加混乱的方向发展而不可能相反。   虽然此种方式可以完全不利用任何随机函数,但利用随机函数可以使工作效率增高。所以本方法也可以看成是随机函数的改良方式,主要益处是生成的数据之间没有连带关系,所以适合于做信息加密中的密钥数组。   即便是最简单的随机函数例如C语言中的rand(),它的运算只是一乘一加,用此来制作乱排函数也能得到一个性能优良的输出,原来数据间的关联不见了,周期大大的提高了,原来周期只有16M,现在至少大于10G(短时间测算)。   如果是性能优良的随机函数其改造为乱排函数后,性能更加优良,直接用作密钥是能够胜任的,对于这样的无规律数据发生器破解者毫无办法。   如何控制乱排函数,当然是用户密码,可以在原始数组阶段参与控制,也可以在随机排序部分参与控制是相当灵活的,多少字节的用户密码都可以被充分利用上。这是分组密码所没有的优势,后者只能使用有限的那几位所以相当虚弱。   即便到了量子计算机时代,如果密钥是独立未知数也照样不能破解,这是肯定的。这一点很容易证明。   
个人分类: 计算机应用|182 次阅读|0 个评论
分享 Ubuntu中如何卸载ibus google 拼音
白丁 2015-8-16 21:28
sudoapt-getremoveibus sudoapt-getremoveibus-googlepinyin
个人分类: linux/unix使用|229 次阅读|0 个评论
分享 如何培养新人
lanjin 2015-6-13 21:44
最近一位软件同事被派去车间搞生产,原因是硬件不熟悉,对产品结构以及细节了解不够,各个硬件波形不是很懂,所以要实习一段时间把整个产品结构了解清楚。现在由他来测板子信号正常与否以及维修有问题的板子。我来指导指导他如何测试板子。我发现他有个特点,就是有问题不自己去解决而是找我来解决,当我问他这么简单的问题怎么都没想到时他说他哪知道是这样,他之前又没弄过,我弄过所以我才知道。有一次维修板子,逆变板,四个桥,每个桥两个LED指示灯。有个桥的驱动芯片老坏,上电就坏,他换了好几个,都坏了,最后叫我去帮忙看怎么回事,我叫他把驱动芯片拆下来,然后上电看看,结果上电后一个LED不亮,我就说降压芯片有问题。我说这么明显的故障你怎么没排除。他说哪知道拆了驱动芯片LED亮与不亮。也就是说不知道LED和驱动芯片有什么关系。这我可以理解,没有电路图所以不知道电路结构。但是有个明显的问题,就是LED一个亮一个不亮,他应该能发现异常。为什么这么明显的现象他发现不了,即使不知道电路结构,测了那么多板子,两个LED那么耀眼他难道熟视无睹?现在出问题的板子只有一个LED亮,这么明显的现象还用找理由推脱说不知道LED不亮是不是有问题。对比法是实践的比较好的方法。拿一个标准的板子和有问题的板子,各个信号一对比就知道问题大概出在哪里。这是初中高中乃至大学都经常用的实验方法他却不懂得用了,你说我该怎么说他。最后把降压芯片换了就好了,驱动芯片也没烧,两个LED都亮,板子正常。新人难免会犯些错误。其实站在他的角度想问题,我也一样遇到过这样的事,就是对一个东西不熟悉的时候总感觉很不踏实,或者说疑问很多,这个波形是不是正常的,那个电压是不是正常的,管脚电阻值对不对。。。我都有过这些疑惑。但是这些问题我都会自己解决,自己查资料。现在我养成的习惯是能自己解决的自己解决,实在是解决不了再请教高人。只有这样才能养成自己的做事风格,独立思考是非常重要的。一有问题立即到处找人解决的肯定不是做技术的,而是做维修工的。因为做技术的都会自己钻研。做事风格不是一天两天就能形成的,得经历一段时间自己慢慢摸索。这个过程有点痛苦,因为没有外界帮助只能逼迫自己独立完成。但是一旦养成独立思考独立做事的风格那么你将能够独挡一面。再大的困难都不会使自己胆怯。
293 次阅读|0 个评论
分享 我想成为高手,该如何做呢??
lg10322 2015-3-16 22:52
我想成为高手,该如何做呢????
201 次阅读|0 个评论

小黑屋|手机版|Archiver|电子工程世界 ( 京ICP证 060456

GMT+8, 2017-3-25 03:54 , Processed in 0.053622 second(s), 18 queries , Redis On.

Powered by EEWORLD电子工程世界

© 2017 http://bbs.eeworld.com.cn/

返回顶部