有限状态机在单片机和 Arduino 编程中的应用,个人认为在实际中这是一种思想,意味着解决一类问题. 本帖最后由 张飞 于 2015-3-4 20:18 编辑 在单片机编程中,如果在不使用操作系统的情况下同时执行多个任务,可能会遇到下面这些情况: 一个任务的执行时间过长,导致其他任务无法及时执行 在一些任务中大量使用 delay() 等函数进行软件延时,这些延时函数占用过多时间,影响其他任务的执行 一些复杂任务的程序逻辑不清晰,不便于以后对程序进行维护,或添加新功能 本文介绍的有限状态机,可以…
    技术:51单片机学习.Keil4环境安装.Arduino环境安装.闪烁灯教程   概述 本文提供51单片机.Arduino单片机入门软件安装和一些需要使用的软件介绍,为后续单片机.嵌入式开发做准备.本文还对LED闪烁代码进行讲解,让初学者更好的理解51单片机和Arduino单片机,后续也会发布单片机对传感器的使用文章 详细 代码下载:http://www.demodashi.com/demo/14663.html 一.C51环境安装和点灯测试 1.keil4软件安装 步骤1: 到百度云盘…
单片机中用c编程时头文件reg51.h及reg52.h解析 我们在用c语言编程是往往第一行就是reg51.h或者其他的自定义头文件,我们怎么样来理解呢? 1)“文件包含”处理. 程序的第一行是一个“文件包含”处理. 所谓“文件包含”是指一个文件将另外一个文件的内容全部包含进来.程序中包含REG51.h 文件的目的是为了要使用P1 (还有其他更多的符号)这个符号,即通知C 编译器,程序中所写的P1 是指80C51 单片机的P1 端口而不是其它变量.这是如何做到的呢? 打开reg51.h 可以看到这…
ArduinoYun教程之Arduino编程环境搭建 Arduino编程环境搭建 通常,我们所说的Arduino一般是指我们可以实实在在看到的一块开发板,他可以是Arduino UNO.Arduino Yun.Arduino Mega等等.但是从严格意义上来说,Arduino这个名字不仅代表着开发板,而且涉及硬件.软件.开发团队.设计原理以及用户群体的互助精神.这是Arduino与其他开发板的不同之处.在本章,我们将主要介绍如何在Windows和Linux操作系统上搭建Arduino的编程环境.…
单片机的C语言中位操作用法 在对单处机进行编程的过程中,对位的操作是经常遇到的.C51对位的操控能力是非常强大 的.从这一点上,就可以看出C不光具有高级语言的灵活性,又有低级语言贴近硬件的特点. 这也是在各个领域中都可以看到C的重要原因.在这一节中将详细讲解C51中的位操作及其应 用. .位运算符 C51提供了几种位操作符,如下表所示: 运算符 含义 运算符 含义 & 按位与 ~ 取反 | 按位或 << 左移 ^ 按位异或 >> 右移 )“按位与”运算符(&) 参加…
Javascript小学生都知道了javascript中的函数调用时会 隐性的接收两个附加的参数:this和arguments.参数this在javascript编程中占据中非常重要的地位,它的值取决于调用的模式.总的来说Javascript中函数一共有4中调用模式:方法调用模式.普通函数调用模式.构造器调用模式.apply/call调用模式.这些模式在如何初始化关键参数this上存在差异."可能还有小伙伴不知道它们之间的区别,那我就勉为其难撸一撸吧!" 方法调用模式:函数是在某个明确…
版权声明:未经博主允许,不得转载 首先我们要限定一个范围,是一个项目,或是以个访问地址..就先以一个项目为限定的范围 前述: 学过物理学的都知道相对运动和绝对运动, 虽然是相似的概念,但这里的要简单得多,首先没有运动的概念. 其实要理解java EE编程中的相对路径和绝对路径还是挺容易的(虽然有点大言不惭,但遇到的问题都理清了,为遇到的问题,遇到了在解决!) 首先很好的了解相关的概念是必须的. 其次还需要解决两件事情:一.确定访问者(这一点在相对路径中极其重要), 二.建立清晰的 目录树结构 概…
Java在并发编程中进行使用java.util.concurrent.atomic来处理一些轻量级变量 如AtomicInteger AtomicBoolean等 .Net中则使用Interlocked来实现类似功能 Java中使用object的wait和notify方法来实现线程间的写作 .Net中可以使用Semaphore(信号量).mutex(互斥).和EventWaitHandle来实现 但是Semaphore类的构造函数需要指定初始入口数和最大入口数 msdn: mutex:当两个或多…
最近的机器内存又爆满了,除了新增机器内存外,还应该好好review一下我们的代码,有很多代码编写过于随意化,这些不好的习惯或对程序语言的不了解是应该好好打压打压了. 下面是参考网络资源总结的一些在Java编程中尽可能要做到的一些地方. 1. 尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面: 第一,控制资源的使用,通过线程同步来控制资源的并发访问: 第二,控制实例的产生,以达到节约资源的目的:…
今天学习了下scala中的链式调用风格的实现,在spark编程中,我们经常会看到如下一段代码: sc.textFile("hdfs://......").flatMap(_.split(" ")).map(_,1).reduceByKey(_ + _)........ 这种风格的编程方法叫做链式调用,它的实现方法见下面的代码: class Animal {def breathe : this.type = this}class Cat extends Animal…
Windows编程中UNICODE和_UNICODE定义问题 先转一篇文章: 初学Windows SDK编程时碰到过这个问题,相信很多初学Windows编程的人也都碰到过,后来慢慢搞明白些了,但有时别人问到自己也说不太 清楚.今天借此机会,我也好好整理一下自已的思路,用下面这篇文章详细点地解释下这个问题,希望能帮助到有此疑问的朋友. UNICODE和_UNICODE并不是在头文件中"定义"的,而是程序员通过以下方法之一定义的: 1.用代码定义的,就像你上面的一样: 2.编译选项中指定.…
client中:      sendto(sfd,buf,strlen(buf),0,(struct sockaddr *)&saddr,len);      recvfrom(sfd,buf,sizeof(buf),0,NULL,NULL);server中:      recvfrom(fd,buf,sizeof(buf),0,(struct sockaddr *)&caddr,&len); 将网络字节序的IP地址转换成字符串输出 // inet_ntoa : struct ip…
Attribute FYI Link: Attribute在.net编程中的应用(一) Attribute在.net编程中的应用(二) Attribute在.net编程中的应用(三) Attribute在.net编程中的应用(四) Attribute在.net编程中的应用(五) Attribute在.net编程中的应用(六) HQL: Hibernate 大全中的大全…
一. read/write的语义:为什么会阻塞? 先从write说起: #include <unistd.h>ssize_t write(int fd, const void *buf, size_t count); 首先,write成功返回,只是buf中的数据被复制到了kernel中的TCP发送缓冲区.至于数据什么时候被发往网络,什么时候被对方主机接收,什么时候被对方进程读取,系统调用层面不会给予任何保证和通知. write在什么情况下会阻塞?当kernel的该socket的发送缓冲区已满时…
我认为,想要熟练掌握Linux下的TCP/IP网络编程,至少有三个层面的知识需要熟悉: 1. TCP/IP协议(如连接的建立和终止.重传和确认.滑动窗口和拥塞控制等等) 2. Socket I/O系统调用(重点如read/write),这是TCP/IP协议在应用层表现出来的行为. 3. 编写Performant, Scalable的服务器程序.包括多线程.IO Multiplexing.非阻塞.异步等各种技术. 关于TCP/IP协议,建议参考Richard Stevens的<TCP/IP Ill…
在学习Windows Phone 程序开发时经常会使用到Dispatcher.BeginInvoke()的编程方法,可能许多初学者并不熟悉Dispatcher.BeginInvoke的使用方法以及为什么在WP编程中会经常使用到这个方法,下面就粗浅介绍下Dispatcher.BeginInvoke()的使用方法. 在WP编程中,我们经常要做的一件事就是更新UI,而其UI部分都在单一的线程下执行的.就是说,WP的开发编程中绝大部分的UI设置更新都是在UI线程中进行的,如果你在非UI线程中要更新UI的…
在 4.2 BSD UNIX® 操作系统中首次引入,Sockets API 现在是任何操作系统的标准特性.事实上,很难找到一种不支持 Sockets API 的现代语言.该 API 相当简单,但新的开发人员仍然会遇到一些常见的隐患. 本文识别那些隐患并向您显示如何避开它们. 隐患 1.忽略返回状态 第一个隐患很明显,但它是开发新手最容易犯的一个错误.如果您忽略函数的返回状态,当它们失败或部分成功的时候,您也许会迷失.反过来,这可能传播错误,使定位问题的源头变得困难. 捕获并检查每一个返回状态,而…
Shell编程中Shift的用法 位置参数可以用shift命令左移.比如shift 3表示原来的$4现在变成$1,原来的$5现在变成$2等等,原来的$1.$2.$3丢弃,$0不移动.不带参数的shift命令相当于shift 1. 非常有用的 Unix 命令:shift.我们知道,对于位置变量或命令行参数,其个数必须是确定的,或者当 Shell 程序不知道其个数时,可以把所有参数一起赋值给变量$*.若用户要求 Shell 在不知道位置变量个数的情况下,还能逐个的把参数一一处理,也就是在 $1 后为…
脚本编程中的test.bash调试.变量计算.参数 1.文件测试 -e FILE:测试文件是否存在 -f FILE:测试文件是否为普通文件 -d FILE:测试路径是否为目录 -r FILE:测试当前用户对指定文件是否有读取权限 -w FILE:测试当前用户对指定文件是否有写权限 -x FILE:测试当前用户对指定文件是否有执行权限 eg1:[ -e /etc/inittab ] eg2: If [ ! -e /etc/inittab ]; then echo ”No /etc/inittab.…
转自:http://blog.chinaunix.net/uid-25968088-id-3426027.html 原文地址:Linux 编程中的API函数和系统调用的关系 作者:up哥小号 API:(Application Programming Interface,应用程序编程接口)  指的是我们用户程序编程调用的如read(),write(),malloc(),free()之类的调用的是glibc库提供的库函数.API直接提供给用户编程使用,运行在用户态.  我们经常说到的POSIX(Po…
VC++编程中经常遇到不同编码编码的字符串之间需要转换的情况,以下简单提供几个不同编码字符串之间的转换函数: ANSI 字符串和Unicode字符串之间的转换 //Convert wide char string to ANSI string BOOL WCharToMByte(LPCWSTR lpcwszStr,Std::string &str) { DWORD dwMinSize=; LPSTR lpszStr=NULL; dwMinSize= WideCharToMultiByte(CP_…
在Ajax编程中,经常要能动态的改变界面元素的样式,可以通过对象的style属性来改变,比如要改变背景色为红色,可以这样写:element.style.backgroundColor=”#ff0000”;其中style 对象有很多属性,基本上CSS 里拥有的属性在JavaScript 中都能够使用.现在考虑,如果一个函数接收参数,用以指定一个界面元素的样式,那就需要设计参数的实现方式,显然一个或几个参数是不能符合要求的,下面是一种实现:function setStyle(_style){//得到…
iPhone编程规则是:一个窗口,多个视图.UIView是iPhone屏幕上很多控件的基础类.每个iPhone用户界面都是由显示在UIWindow(这其实也是个特殊的UIView)内的众多UIView及其专门化子类构建的. 显示数据的视图: UITextView UILabel UIImageView UIWebView MKMapViews UIScrollView 可选择的视图(以下两个视图类实例都是模态显示的): UIAlertView UIActionSheet 所有控件(控件是将用户触…
JAVA 中的内存泄漏 JAVA 编程中的内存泄漏,从泄漏的内存位置角度可以分为两种:JVM 中 Java Heap 的内存泄漏:JVM 内存中 native memory 的内存泄漏. Java Heap 的内存泄漏 Java 对象存储在 JVM 进程空间中的 Java Heap 中,Java Heap 可以在 JVM 运行过程中动态变化.如果 Java 对象越来越多,占据 Java Heap 的空间也越来越大,JVM 会在运行时扩充 Java Heap 的容量.如果 Java Heap 容量…
private void Form1_Load(object sender, EventArgs e) { Thread newthread = new Thread(new ThreadStart(BackgroundProcess)); newthread.Start(); } /// <summary> /// 定义一个代理 /// </summary> private delegate void CrossThreadOperationControl(); private…
段东宁 计亚南 (郴州职业技术学院, 湖南 郴州  423000) 摘要: 资源文件是一种能有效地组织.管理和使用资源的文件形式,在软件开发中有着广泛的应用.本文详细介绍了在Delphi编程中资源文件的创建方法和使用技巧. 关键词:Delphi,资源文件,TResourceStream对象,MCISend String 函数 The Application of Resource Files in Delphi Programming DUAN Dong-Ning (Department of…
socket网络编程中read与recv区别 1.read 与 recv 区别 read 原则: 数据在不超过指定的长度的时候有多少读多少,没有数据则会一直等待.所以一般情况下:我们读取数据都需要采用循环读的方式读取数据,因为一次read 完毕不能保证读到我们需要长度的数据,read 完一次需要判断读到的数据长度再决定是否还需要再次读取. recv 原则:        recv 中有一个MSG_WAITALL 的参数:                recv(sockfd, buff, buf…
电脑硬盘E盘下,建文件夹“test”,"test"下建立子文件夹“file”,"file"下建子文件夹“data”, 电脑资源管理器显示目录  E:\test\file\data 当前 路径 E:\test\file =================================================== 1. 相对路径 ,用正斜杠’/‘ 1.1向上一级目录指向 ./    表示当前路径,相当于E:\test\file ../  表示当前路径的上一级路…
转自:http://www.jbxue.com/article/14854.html 发布:脚本学堂/Perl  编辑:JB01   2013-12-20 10:20:01  [大 中 小] 本文介绍下,perl编程中的map函数的用法,分享一些per map函数的例子,有需要的朋友参考下. 本节内容: perl map函数的使用. 语法 map EXPR, LIST map BLOCK LIST   定义和使用 对list中的每个元素执行EXPR或BLOCK,返回新的list.对每一此迭代,$…
遭遇 bug 的时候,理性的程序员会说:这个 bug 能复现吗? 自负型:这不可能,在我这是好好的. 经验型:不应该,以前怎么没问题? 幻想型:可能是数据有问题. 无辜型:我好几个星期都没碰这块代码了! 乐观型:只需要改一行代码,不会影响其它程序的. 实践型:你重启一下服务试试. 无论你是哪种类型的程序员,遭遇 bug,内心都是崩溃的,尤其是产品经理或测试人员在使用或测试产品的过程中抓到你的一个 bug 之后那种如获至宝的表情和欢呼声,会让我们的心情久久不能平静.于情于理,防患于未然,减少编程中…