版主: wanchong , wangyu , eepwwp , firedom |
yuanms
最后登陆时间:2015-01-13 22:14:57 |
如果你以前没接触过C/C++的编程,而是从arduino可以学习的,那么这篇帖子就是让你从arduino编程思维转换到C++面向对象思维,现代编程语言基本都是面向对象编程,除了C语言。
首先我们来熟悉intel给我们提供的新IDE环境Eclipse 。 Eclipse 是用java语言编写的的一个跨平台IDE,支持多种语言,对于语言的支持是通过插件来扩展的,Eclipse上的东西基本都是以插件形式实现的。 先通过以前的帖子http://bbsquark.eepw.com.cn/thread/270/1来下载所需要的文件,安装Eclipse。 intel提供的Eclipse已经帮我们写好一个脚本devkit-launcher.bat ,这个脚本会自动帮我们设置好环境变量,所以我们通过devkit-launcher.bat 脚本来启动Eclipse。 启动后Eclipse的界面是这样的 对应编号如下: 1:这是你当前环境下的项目列表,Eclipse是以项目为单位的,所以你要打开一个其他人的项目需要导入,具体操作是: 文件->导入->现有项目到工作空间->在选择根目录选择你需要导入的项目->完成。 2: 这是IDE的代码编辑区 3: 这是错误提醒,如果编写的程序出现问题,然后进行编译的时候这个区域会显示你那里出了问题,当然Eclipse支 持实时错误检查,但最终是否有错误还是需要以这个区域的提醒为主。 4: Eclipse 的菜单栏 打开其中的一个项目 Includes 表示这个项目你有那些库可以调用,和arduino里的libraries类似,但是这里是需要自己设置的,刚开始我们可以复制官方例程的4_cpp_onboard_LED_blink项目,这个项目已经设置了基本的库与动态链接库了,关于动态链接库概念等晚些时候在讲,具体复制流程是“右击要复制的项目->点击Copy->在项目区空白处右击-> 点击粘贴需要把项目名称改掉 src 这个是我们项目的主程序,通过修改这个文件夹里的文件进行程序编程 Debug 这是你点程序编译后生成的程序文件 我们打开项目 4_cpp_onboard_LED_blink 里面的src ---- 双击4_cpp_onboard_LED_blink.cpp文件把里面的代码全部删除 复制下面的代码,粘贴到程序编辑区,按Ctrl+S保存,然后点 这个图标进行编译
[C++] 纯文本查看 复制代码
这是一个最简单的Blink程序,和Hello Word差不多的意义 我们一条条分析其中的语句,当你认真的去理解其中的原理,以后其他比如spi,i2c....的操作都是同样操作。 #include <signal.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include "mraa.hpp" 这条和arduino的意思一样,加载对应库文件到程序中,前4条不用关心,你每次写程序的时候记得加载它们就行,那是C++ 常用的标准库,#include "mraa.hpp" 这个就是intel针对Edison,Galileo编写的驱动库,里面包含了pwm; aio; gpio; i2c; spi; uart; 的操作类库。 int main (int argc, char **argv) 这条语句相当于arduino里的loop()语句,请记住,这条语句不会和arduino一样循环执行,它是从第一条执行到最后一条就会结束,所以正常添加while(1)语句进行循环执行。while(1)语句上方的程序相当于arduino里的setup()语句 mraa::Gpio* gpio; 这是和arduino里类的实例化一样,如果你不清楚什么是实例化的话那么去百度一下具体的解释,这个对于以后编程很重要,如果你知道arduino里类 的实例化,可能你会想那个*号是做什么用的,这个星号是指针的意思,就相当于在arduino如果我们实例化一个类以后,比如 nrf NRF; 实例化一个nrf类,那个我们要调用它的函数就是NRF.XXX(); 调用的时候是加一个"." 那么加上指针的实例化就要换成"->"操作符了,就变成NRF->XXX();了 gpio = new mraa::Gpio(13); 这是给刚才实例化的gpio分配一个对于13号引脚的动态内存,如果你不太理解的话那你只有记住实例化 mraa::Gpio* gpio; 以后 就要通过这个语句 gpio = new mraa::Gpio(13); 才能对对于的引脚进行操作 gpio->dir(mraa::DIR_OUT); 这句是给13号引脚设置输出模式,mraa::DIR_OUT是输出,mraa::DIR_IN是输入;可以理解成gpio现在已经代表了13号引脚,你看到gpio->类似语句的时候就是要对13号引脚进行操作; gpio->write(1); 这是对13号引脚写入高电平,和刚才设置输入或者输出模式一样,gpio对于13号引脚,write对于要写入的值,你要是了解面向对象编程那会好理解一点。 sleep(1); 这个是和arduino delay()一样,只是sleep()单位是秒,delay()单位是毫秒;如果你需要微秒,那对于语句是usleep(); 接下来按照之前的帖子http://bbsquark.eepw.com.cn/thread/270/1里关于如何把Eclipse编译好的程序上传到Edison或者Galileo中运行,你就可以看到和arduino里的Blink一样的效果了 最后是总结: 1:当你不懂这个函数是什么意思的时候把鼠标放在对应的函数上面,Eclipse会很智能的显示函数原型与解释 2:你要先去了解关于C语言中的结构体,和C++中的面向对象,不需要太深入学,只有大概了解概念就行,当然你要深入理解那对于你以后的编程是很有帮助的,其实每个人对什么是面向对象编程有自己不同的理解。 3:多去试验下intel在Eclipse里的例程,不过例程中很多都是容易误导初学者的无用语句,你先忽略不懂的语句,只修改你懂的,有时间我会把其中的关键语句提出来,这样看到就不会晕了。 介绍结束,谢谢
149
关键词:arduino Edison Galileo Ec |
||
|
|||
xiusan210
最后登陆时间:2015-01-14 10:44:52 |
支持!!!寒假也入手一个
|
temp2009
最后登陆时间:2015-01-14 10:44:53 |
赞一个
|
wan2008
最后登陆时间:2015-01-14 10:44:55 |
真好
|
herald
最后登陆时间:2015-01-14 10:45:03 |
感谢分享
|
grace1007
最后登陆时间:2015-01-14 10:45:04 |
好,终于找到教程了
|
IvyK
最后登陆时间:2015-01-14 10:45:05 |
赞呐!
|
吳林軒
最后登陆时间:2015-01-14 10:45:06 |
谢谢分享,有你们好幸福
|
fdkj
最后登陆时间:2015-01-14 10:45:07 |
楼主什么专业滴?
|
jasson43
最后登陆时间:2015-01-14 10:45:08 |
不错学习下
|