|
楼主 |
发表于 2013-1-29 10:31:05
|
显示全部楼层
本帖最后由 kingofkings 于 2013-1-29 17:01 编辑
教程2 点起你移动互联网时代的第一个“IO”
更新ing.......
更新固件后第一个DEMO工程以及DEMO APK 密码AMOAtoM
使用方法,先打开CS AtoM Platform.apk确认USB已连接
然后打开CS_AtoM_LEDDemo APK即可控制AtoM模组上的3个LED!
AtoM IO配置图
离线版硬件IO配置图
教程2可以基于以下工程开始
如果还未设置好android的开发环境请参考以下帖子
http://www.amobbs.com/thread-5503868-1-1.html
密码AMOAtoM
首先控制介绍几个AtoM基本的GPIO控制函数
- /*GPIO初始化函数
- PINMASK 对应上图中PIN00~PIN15的管脚号 bit 对应 即 PIN2 设置为PINMASK [0] = 0x04 PINMASK [1] = 0x00 PIN12 设置为PINMASK [0] = 0x00 PINMASK [1] = 0x10以下设置类推
- ReadWriteMask bit设为1为输出模式,bit设为0为输入模式
- PullUpMask bit设为1为打开上拉模式,bit设为0为关闭上拉模式
- PullDownMask bit设为1为打开下拉模式,bit设为0为关闭下拉模式
- */
- <STRONG>public static void AtoMGPIOInit(ContentResolver cr, byte[] PINMask, byte[] ReadWriteMask, byte[] PullUpMask, byte[] PullDownMask);
- </STRONG>
- /*GPIO输出设定函数
- PINMASK 对应上图中PIN00~PIN15的管脚号 bit 对应 即 PIN2 设置为PINMASK [0] = 0x04 PINMASK [1] = 0x00 PIN12 设置为PINMASK [0] = 0x00 PINMASK [1] = 0x10以下设置类推
- PINValue bit设为1为高电平,bit设为0为低电平
- */
- <STRONG>public static void AtoMGPIOSet(ContentResolver cr, byte[] PINMask, byte[] PINValue);
- </STRONG>/*GPIO读取设定函数
- PINMASK 对应上图中PIN00~PIN15的管脚号 bit 对应 即 PIN2 设置为PINMASK [0] = 0x04 PINMASK [1] = 0x00 PIN12 设置为PINMASK [0] = 0x00 PINMASK [1] = 0x10以下设置类推
- PINValue 需传入一个具有两个元素的byte数组 bit设为1为高电平,bit设为0为低电平
- */
- <STRONG>public static void AtoMGPIORead(ContentResolver cr, byte[] PINMask, byte[] PINValue);
- </STRONG>
- /*GPIO翻转设定函数
- PINMASK 对应上图中PIN00~PIN15的管脚号 bit 对应 即 PIN2 设置为PINMASK [0] = 0x04 PINMASK [1] = 0x00 PIN12 设置为PINMASK [0] = 0x00 PINMASK [1] = 0x10以下设置类推
- */
- <STRONG>public static void AtoMGPIOToggle(ContentResolver cr, byte[] PINMask);
- </STRONG>
复制代码 所以基于上面的函数
我们打开开发环境Eclipse解压DEMO工程到你本地目录
按file->Import->Existing Projects int Workspace->在第一项选Browse到你刚刚解压的路径,然后在Prjects选择CS_AtoM_GPIODemo,在下面勾选Copy projects into workspace 然后按finish
然后我们在Project Explorer下打开CS_AtoM_GPIODemo工程
我们双击MainActivity.java打开代码文件
- package cs.atomleddemo;
- import android.os.Bundle;
- import android.app.Activity;
- import android.content.ContentResolver;
- import android.view.Menu;
- import android.view.View;
- import android.widget.TextView;
- public class MainActivity extends Activity {
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- }
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- // Inflate the menu; this adds items to the action bar if it is present.
- getMenuInflater().inflate(R.menu.activity_main, menu);
- return true;
- }
- <HR class=l>
- //上面都是工程自动生成可先不管
- static final byte LED0PINMASK = 0x01;//设定PINMASK参数
- static final byte LED1PINMASK = 0x02;//设定PINMASK参数
- static final byte SWPINMASK = 0x08;//设定PINMASK参数
- static final byte LED2PINMASK = 0x04;//设定PINMASK参数
- boolean GPIOState = true;//纪录原按键状态
- //这个DEMO代码就是纪录上一次状态,然后控制你需要IO为高电平还是低电平
- public void GPIO00Control(View view) {
- //初始化参数值
- byte[] PINMask = new byte[2];
- byte[] ReadWriteMask = new byte[2];
- byte[] PullUpMask = new byte[2];
- byte[] PullDownMask = new byte[2];
- byte[] PINValue = new byte[2];
- ContentResolver cr = this.getContentResolver();//Android系统函数可先不管
- PINMask[0] |= LED0PINMASK; //设定你需要的IO的PINMASK
- ReadWriteMask[0] |= LED0PINMASK; //设定你需要的IO的模式
- if(GPIOState == true){
- PINValue[0] |= LED0PINMASK;
- GPIOState = false;
- }
- else if(GPIOState == false){
- PINValue[0] &= ~LED0PINMASK;
- GPIOState = true;
- }
- Utilities.AtoMGPIOInit(cr, PINMask, ReadWriteMask, PullUpMask, PullDownMask);//初始化IO
- Utilities.AtoMGPIOSet(cr, PINMask, PINValue);//设定IO
- }
- //这个DEMO代码设定你需要的IO为输入状态,现在挂载在板上的按键上,每按一次Android上的按键即读取一次按键的状态
- public void GPIO01Control(View view) {
- //初始化参数值
- byte[] PINMask = new byte[2];
- byte[] ReadWriteMask = new byte[2];
- byte[] PullUpMask = new byte[2];
- byte[] PullDownMask = new byte[2];
- byte[] PINValue = new byte[2];
- ContentResolver cr = this.getContentResolver();//Android系统函数可先不管
- PINMask[0] |= SWPINMASK; //设定你需要的IO的PINMASK
- ReadWriteMask[0] &= ~SWPINMASK; //设定你需要的IO为输入
-
- Utilities.AtoMGPIOInit(cr, PINMask, ReadWriteMask, PullUpMask, PullDownMask);//初始化IO
- Utilities.AtoMGPIORead(cr, PINMask, PINValue);//读取IO
-
- //读出的IO值对对应文本框进行操作
- if (PINValue[0] == SWPINMASK)
- ((TextView)this.findViewById(R.id.GPIO01Text1)).setText("放开");
- else
- ((TextView)this.findViewById(R.id.GPIO01Text1)).setText("按下");
- }
- //这个DEMO代码设定你需要的IO为输出状态,并翻转IO状态
- public void GPIO02Control(View view) {
- //初始化参数值
- byte[] PINMask = new byte[2];
- byte[] ReadWriteMask = new byte[2];
- byte[] PullUpMask = new byte[2];
- byte[] PullDownMask = new byte[2];
-
- ContentResolver cr = this.getContentResolver();//Android系统函数可先不管
-
- PINMask[0] |= LED2PINMASK; //设定你需要的IO的PINMASK
- ReadWriteMask[0] |= LED2PINMASK; //设定你需要的IO为输出模式
- Utilities.AtoMGPIOInit(cr, PINMask, ReadWriteMask, PullUpMask, PullDownMask);//初始化IO
- Utilities.AtoMGPIOToggle(cr, PINMask); //翻转IO
- }
复制代码 所以只要使用这些函数就可以简单的控制GPIO了 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|