4312|7

655

帖子

29

TA的资源

版主

楼主
 

SensorTile物联网开发套件(5)——DIY相互通信 [复制链接]

 
本帖最后由 lb8820265 于 2016-10-29 10:41 编辑

先上效果图:
       图中显示的效果是,发送字符串数据给SensorTIle,SensorTIle收到后在字符串后加字符“1”发送给手机,手机收到后在字符串后加字符“2”并显示出来。
      虽说SensorTIle提供各种接口函数,也提供许多的控制指令,而且也支持自己添加Feature类。但有时候我们想要更加自由些,这时候就需要两者可以相互通信,SDK提供了类似的功能叫做Debug Console,SDK-Example中实现了原数据的直接回传,这次就对这个功能做稍微的修改,主要是为了熟悉该修改哪个地方。
     打开SDK工程,修改布局文件夹activity_debug_console.xml如下:
  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:tools="http://schemas.android.com/tools"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:layout_marginBottom="@dimen/activity_vertical_margin"
  6. android:layout_marginLeft="@dimen/activity_horizontal_margin"
  7. android:layout_marginRight="@dimen/activity_horizontal_margin"
  8. android:layout_marginTop="@dimen/activity_vertical_margin"
  9. tools:context="com.st.BlueSTApp.DebugConsoleActivity">
  10. <EditText
  11. android:id="@+id/Edit_Send"
  12. android:layout_width="wrap_content"
  13. android:layout_height="wrap_content"
  14. android:layout_toLeftOf="@+id/Btn_Send"
  15. android:layout_alignParentLeft="true"/>
  16. <Button
  17. android:layout_width="wrap_content"
  18. android:layout_height="wrap_content"
  19. android:text="send"
  20. android:onClick="onClick"
  21. android:layout_alignParentRight="true"
  22. android:id="@+id/Btn_Send" />
  23. <ScrollView
  24. android:id="@+id/consoleView"
  25. android:layout_width="match_parent"
  26. android:layout_height="wrap_content"
  27. android:layout_above="@+id/inputText"
  28. android:layout_below="@+id/Btn_Send"
  29. android:layout_centerHorizontal="true">
  30. <TextView
  31. android:id="@+id/deviceConsole"
  32. android:layout_width="match_parent"
  33. android:layout_height="wrap_content"/>
  34. </ScrollView>
  35. <EditText
  36. android:id="@+id/inputText"
  37. android:layout_width="match_parent"
  38. android:layout_height="wrap_content"
  39. android:layout_alignParentBottom="true"
  40. android:layout_centerHorizontal="true"
  41. android:enabled="false"
  42. android:imeOptions="actionSend"
  43. android:inputType="text"
  44. android:labelFor="@+id/deviceConsole"
  45. android:singleLine="true"/>
  46. </RelativeLayout>
复制代码
      上面函数功能是添加一个按钮和一个文本编辑框控件。

       然后找到DebugConsoleActivity类,声明编辑框变量:
  1. private EditText mEditSend;
复制代码
      在onCreat函数中绑定编辑框控件:
  1. mEditSend=(EditText) findViewById(R.id.Edit_Send);
  2. 在onCreat函数外添加按钮响应函数:
  3. public   void onClick(View view) {
  4.     switch (view.getId()) {
  5.         case R.id.Btn_Send:
  6.             String toSend = mEditSend.getText().toString();
  7.            sendMessage(toSend);
  8.             break;
  9.     }
  10. }
复制代码
     在类中找到onStdOutReceived函数,修改如下:
  1. public void onStdOutReceived(Debug debug, final String message) {
  2.   appendMessage(message+'2', ConsoleType.OUTPUT);
  3. }//onStdOutReceived
复制代码
       APP中的代码非常简单,获取文本编辑框中的字符串然后发送给SensorTile,然后在收到的字符串后面加上字符“2”。接下来使用KEIL打开BM1工程,找到sensor_service.c文件,其中有个很长的Attribute_Modified_CB函数,该函数的1530行处,原函数如下:
  1. if(SendBackData)
  2. {
  3. Term_Update(value,data_length);
  4. }
复制代码
      将其修改如下:
  1. if(SendBackData) {
  2.                 uint8_t value[20];
  3.                 memcpy(value, (uint8_t*)att_data, data_length);
  4.                 value[data_length]='1';
  5.                       Term_Update(value,data_length+1);
  6. }
复制代码
       这是收到Debug Console数据的处理函数,原函数是直接将收到数据发送回去,将其修改为在数据后面加字符“1”后发送。好啦,程序很简单,主要是熟悉流程,为以后更加复杂的应用打好基础。
本帖APP源码:https://github.com/flyloong/BlueSTSDK/tree/V1.0.1

本帖SensorTIle源码:https://github.com/flyloong/BlueMicrosystem1/tree/V1.0.0

最新回复

好吧,网上找找   详情 回复 发表于 2017-2-27 08:02
点赞 关注
个人签名QQ:252669569
 
 

回复
举报

1万

帖子

2853

TA的资源

管理员

沙发
 
汇总贴在此:看lb8820265玩SensorTile物联网开发套件
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
个人签名玩板看这里:
https://bbs.eeworld.com.cn/elecplay.html
EEWorld测评频道众多好板等你来玩,还可以来频道许愿树许愿说说你想要玩的板子,我们都在努力为大家实现!
 
 
 

回复

5260

帖子

239

TA的资源

管理员

板凳
 
SensorTile物联网开发套件抢鲜体验、免费申请活动正在进行(即日起-11月21日)
想要的小伙伴玩的小伙伴马上行动吧~
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
 
 

回复

2721

帖子

0

TA的资源

纯净的硅(中级)

4
 
代码在eclipse+ADT环境可编译码?

点评

在AS下编译的,理论上是可以转成eclipse的,不过可能是比较的麻烦  详情 回复 发表于 2017-2-26 20:33
 
 
 

回复

655

帖子

29

TA的资源

版主

5
 
suoma 发表于 2017-2-26 17:25
代码在eclipse+ADT环境可编译码?

在AS下编译的,理论上是可以转成eclipse的,不过可能是比较的麻烦

点评

as太占内存了,按照目录结构放在eclipse工作目录下应该没问题吧,关键的是这个好像用的是sdk24以上,还得去找个,有资源没?最好是网盘的那种  详情 回复 发表于 2017-2-26 21:28
个人签名QQ:252669569
 
 
 

回复

828

帖子

8

TA的资源

一粒金砂(高级)

6
 
lb8820265 发表于 2017-2-26 20:33
在AS下编译的,理论上是可以转成eclipse的,不过可能是比较的麻烦

as太占内存了,按照目录结构放在eclipse工作目录下应该没问题吧,关键的是这个好像用的是sdk24以上,还得去找个,有资源没?最好是网盘的那种

点评

SDK我都是直接翻墙使用AS下载的,这样的不知道Eclipse能用否?  详情 回复 发表于 2017-2-26 23:10
个人签名人生有许多选项是灰色的、不可选的,但至少你可以选择生活的态度。。。韬光养晦,志存高远http://www.xzroad.com/
 
 
 

回复

655

帖子

29

TA的资源

版主

7
 
wugx 发表于 2017-2-26 21:28
as太占内存了,按照目录结构放在eclipse工作目录下应该没问题吧,关键的是这个好像用的是sdk24以上,还得 ...

SDK我都是直接翻墙使用AS下载的,这样的不知道Eclipse能用否?

点评

好吧,网上找找  详情 回复 发表于 2017-2-27 08:02
个人签名QQ:252669569
 
 
 

回复

828

帖子

8

TA的资源

一粒金砂(高级)

8
 
lb8820265 发表于 2017-2-26 23:10
SDK我都是直接翻墙使用AS下载的,这样的不知道Eclipse能用否?

好吧,网上找找
个人签名人生有许多选项是灰色的、不可选的,但至少你可以选择生活的态度。。。韬光养晦,志存高远http://www.xzroad.com/
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表