当前位置:  编程技术>移动开发
本页文章导读:
    ▪腾挪HorizontalScrollView滚动条        移动HorizontalScrollView滚动条 有什么方式,可移动滚动条,且按百分比.就是,每01.秒走1%的滚动条.在线等。。。谢谢。。。<?xml version="1.0" encoding="utf-8"?><HorizontalScrollView xmlns:android="http://sc.........
    ▪ 蓝牙通讯        蓝牙通信 http://www.eefocus.com/majianhui/blog/09-12/182434_16fbb.html一个牛叉人的blog最近做一个蓝牙通信的项目,搞软件的最怕的就是和硬件沾边哪怕一点点都觉得很迷茫!做这个项目时遇到了一个问.........
    ▪ 施用NSOperation建立多任务网络连接       使用NSOperation建立多任务网络连接 博主:易飞扬 原文链接 : http://www.yifeiyang.net/iphone-web-development-skills-of-the-articles-3-use-a-multi-task-network-connection-nsoperation/ 转载请保留上面文字。iPhone开发技.........

[1]腾挪HorizontalScrollView滚动条
    来源: 互联网  发布时间: 2014-02-18
移动HorizontalScrollView滚动条
有什么方式,可移动滚动条,且按百分比.
就是,每01.秒走1%的滚动条.
在线等。。。谢谢。。。

<?xml version="1.0" encoding="utf-8"?>
<HorizontalScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/hscroll"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scrollbars="horizontal"
android:fadingEdge="horizontal">
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/text_view"
android:textColor="#F05"
android:textSize="100px"
android:singleLine="true"
android:paddingTop="5dip" />
</HorizontalScrollView>

    
[2] 蓝牙通讯
    来源: 互联网  发布时间: 2014-02-18
蓝牙通信
http://www.eefocus.com/majianhui/blog/09-12/182434_16fbb.html
一个牛叉人的blog


最近做一个蓝牙通信的项目,搞软件的最怕的就是和硬件沾边哪怕一点点都觉得很迷茫!
做这个项目时遇到了一个问题

就是当手机和蓝牙模块建立连接后,用的是长连接模式,就是持续保持连接.手机这边作为客户端发起请求,蓝牙模块作为server相应并返回数据.
问题是如果client这边发送数据给server但是serve出于某种原因没有返回数据,而client并不知道server没有返回数据,仍执行read,就会阻塞.死到server写进数据,这样是不行的,怎么能解决这个呢,找了好长时间都没找到,不知道android里蓝牙这部分能不能用nio呢?这方面也没有找到,希望做过的高手们能指导下!!!!!!



目前用csr的bc04,bc04是从eeprom里读取pskey的,现在疑惑的是
1.通过bcsp用bcccmd修改pskey后存储到eeprom里吗?
2.如果pskey设置错误会不会影响bcsp的初始化呢?及三次握手
现在出现的现象是有时候pskey设置成功貌似存储到eeprom里,但是有时候就不行。
如果pskey里时钟设置错误貌似bcsp初始化就不正确,发送第一次握手的数据包后,有时根本候收不到蓝牙芯片返回的数据包,有时候收到的就是不争气的包甚至头尾都不是c0很奇怪!!!!!!!!!!!!!!!!!!!!!!!!!!!!



----转的
——对于蓝牙的无线接入过程控制器主要分为Standby与Connection两大状态。在这两大状态下又分为传呼(Page)、传呼扫描(Page Scan)、询呼(Inquiry)、与询呼扫描(Inquiry Scan)四大子状态;另外,传呼下有主机响应(Master Response)子状志,传呼扫描下有服务机响应(Slave Response)子状态,询呼扫描下有询呼响应(Inquiry Response)子状态。如图1所示,蓝牙组件可离开Standby状态而进入Page、Page Scan、Inquiry或Inquiry_Scan状态,然后在进入Connection状态。在一蓝牙Piconet中,Master运用Page或Inquiry与Slave建立连接的链路。若Master不知欲连接的Slave组件地址,便开始Inquiry程序来寻找Piconet中的Slave组件地址与其时钟;但若Master己知欲连接的Slave组件地址,则开启Page程序来寻找其它的Slave。



   ——在以下各节中将说明无线接入的程序,连接模式与接入控制。

   二、接入(Access)程序

   ——在开始建立一连接的无线链路时,Master需要知道Slave的蓝牙组件地址。因此当Master蓝牙组件在Inquiry状态时,它运用Inquiry信息指示哪些蓝牙组件需要响应Inquiry,并收集所有响应Slave的蓝牙组件地址与时钟,在Inquiry状态的Master蓝牙组件继续在不同的FH频率传送Inquiry信息以寻找其它的Slave蓝牙组件。

   ——而一旦被发现的Slave蓝牙组件则规则性的进入Inquiry Scan状态以响应Inquiry信息。而其接收机则运用一匹配相关器(Matching Correlator)来搜寻Inquiry接入码(Access Code)。此搜寻时间将持续至16个FH频率的范围。若某一激活的(Wake-Up)Slave蓝牙组件可辨识Inquiry信息,它则进入Inquiry Response状态。在Standby状态时的蓝牙组件可利用其所有的资源来搜寻其它Inquiry Access Code;而在Connection状态时的蓝牙组件则可将其现有的资料链路连接处于省能模式以便来搜寻其它Inquiry Access Code。以上的Inquiry Scan程序可能会被预留的SCO时段所中断。

   ——在已知欲连接Slave的Device Access Code(DAC)时,Master则开启Page程序来寻找此Slave。在Page程序中,Master重复的用不同的FH频率来传送Slave的DAC以尝试连接(请参见图2)。Page程序的步骤如下。



   ——先以Slave的DAC来决定Page信号的FH频率序列。

   ——Master以预估的Slave时钟来预测Slave的Wake-Up时间与FH频率。

   ——在每一传送时段,Master顺序地发射两个不同的频率。

   ——在每一接续的接收时段,Slave的接收机,依据Page Scan使用的跳频频率,顺序的侦测两个相对应的接收频率。

   ——Page程序可能会被预留的SCO时段所中断。当Slave组件成功的接收了Master的Page信息,Master与Slave便展开一例行的响应来互换信息。而Master与Slave间成功的连接,在于使用由蓝牙组件地址(BD_ADDR)导出的同一频率接入码与同一FH频率,且Master与Slave的时钟需同步。

   ——以下描述响应状态各程序中的步骤。

   ——1.Slave Response状态:

   ——(1)Slave在接到来自Master的DAC后,则以Page Response所用的FH频率响应此DAC作为确认。

   ——(2)在传送响应信息后,Slave的接收机即开启并等待来自Master的FH同步(FHS)封包。

   ——(3)若Slave正确的接到此FHS封包,Slave便以Page Response所用的FH频率传回其DAC以作为确认。

   ——(4)Slave可自此FHS封包的内容来得知Slave时钟与Master时钟的差异。

   ——(5)Slave在修正此时钟差异后,即可进入Connection状态。

   ——(6)若Slave在进入Connection状态前,上述建立连接的步骤失败的话,则Slave回到Page Scan状态。

   ——在进入Connection状态后,由Master先传送一个POLL封包。若Slave未成功的接到此POLL封包,Master与Slave便分别各自回到Page与Page Scan的状态。

   ——2.Master Response状态

   ——(1)Master在接到Slave传回的响应信息后,即固定其现有的时钟,并且将其输入至Page FH频率选取方案中。

   ——(2)Master运用此选取的Page FH频率来传送FHS封包。此FHS封包含有所有建构频道接入码所需的信息。

   ——(3)在Master传送FHS封包后,即等待Slave的确认。

   ——(4)若没有收到Slave的确认,Master将以更新的时钟再送FHS封包。

   ——(5)若收到Slave的确认,Master则进入Connection状态,并且运用BD_ADDR来与Slave交换使用的FH序列。

   ——(6)在进入Connection状态后,Master开始传送一个POLL封包。

   三、Connection模式

   ——在Connection状态中,Slave组件可停留在Active、Sniff、Hold、与Park 4个模式。以下分别说明之。

   ——1.Active模式

   ——(1)Active Slave侦测Master传向Slave的时段上有无封包。

   ——(2)为了保持Master与Slave间的同步,即使无信息需要传输,Master亦需要周期性的传送封包至Slave。

   ——(3)若Active Slave未被Master寻址,它可睡眠至下一个新的Master传向Slave的时段。

   ——(4)Active Slave可导出Master预定传向Slave的时段数目。

   ——2.Sniff模式

   ——(1)在此省能模式中,为了节省能源,Slave可减少侦测(Master传向Slave时段)活动的任务时间(DutyCycle)。

   ——(2)Master可经由链路管理(LM)协议发出一Sniff指令。此Sniff指令包含Sniff的长度与开始时钟差异。

   ——(3)若Slave正使用ACL链路连接,则Slave组件必须侦测每一Master传向Slave的时段。

   ——3.Hoid模式

   ——(1)使用ACL链路的Slave可被置于Hold模式。

   ——(2)在此Hold模式下运作的Slave仍保有其Active Member组件地址(AM_ADDR)。

   ——(3)在此模式下,Slave不提供ACL链路服务,但仍提供SCO链路服务。

   ——(4)因此释放出的能量可让Slave进行Paging Inquiring或加入另一Piconet。

   ——4.Park模式

   ——(1)在Park模式运作的Slave仍与Master保持同步。

   ——(2)在此模式下,Slave已放弃其AM_ADDR,而接受一Park Member组件地址(PM_ADDR)与一Access Request组件地址(AR_ADDR)。

   ——(3)在一Piconet中Park的Save将在规则性的时段后醒来活动以便再与Master保持同步。

   ——(4)Park的Slave规则性的后醒来活动,将查询Master使用的引导(Beacon)频道中是否有广播信息。

   ——上述的Park模式下的Beacon频道是由一个周期性传输的Beacon时段或一列周期性传输且等距的Beacon时段所构成,如图3所示。而其周期与时段数等参数则由Master经LM协议指令传至Park模式下的Slave。Beacon频道有下列的目的:经Beacon频道,Master可传输Slave与其同步所需的封包;Beacon频道可载送改变Beacon时段参数所需的信息;Beacon频道可载送Master的广播信息;Master可利用Beacon频道来重新激活Park模式下的Slave。

   四、媒介接入控制(MAC)

   ——目前的蓝牙标准使用Master控制的TDD Polling方案来完成MAC。在ACL链路连接中,当某一Slave组件被在前一Master-to-Slave时段上的封包头端中之AM_ADDR所寻址时,则此Slave可在接续的出Slave-to-Master时段上传输信息。而Slave组件的SCO链路连接中,若在前一Master-to-Slave时段上的封包头端中之AM_ADDR并非指定另一Slave,则此Slave可在预留的Slave-to-Master时段上传输信息。而上述预留的SCO链路时段之建立则是透过各LM层中之协议指令来协商完成。

   ——在Park模式下的Slave组件,若在前一Master-to-Slave时段上接到Master广播封包指示,此Slave则可在Beacon接入视窗(Access Window)上送出接入要求信息,以要求恢复活动,其中信息的传输则占Slave-to-Master的一半时段(请参见图4与图5)。若有需要,在Beacon接入视窗上的时段也可用作Piconet中其它讯息的传输,如图6中的SCO链路信息。上述的Slave接入要求讯息中包含Master的DAC。

   ——由以上的说明,可知Master可藉送出LM协议中的恢复活动指令来重新激活Park模式下的Slave组件。

   五、结论与未来的研究方向

   ——蓝牙目前的系统规格标准中,只定义了Master控制的Polling无线接入(Wireless Access)协议,以作为基频芯片的接入控制方案。由上述的说明中可知,此Polling协议自频道资源的使用与管理效益上仍有待改进。如何研发更有效益的MAC方案与Scheduling方法,且在封包的递送路径方面可结合IP连网来发展随意的(ad-hoc)递送协议(Routing Protocol)。而针对多媒体通信需求,新的蓝牙技术亦可依据服务品质(QoS)不同的要求来提供Bandwidth-on-Demand。

    
[3] 施用NSOperation建立多任务网络连接
    来源: 互联网  发布时间: 2014-02-18
使用NSOperation建立多任务网络连接
  • 博主:易飞扬
  • 原文链接 : http://www.yifeiyang.net/iphone-web-development-skills-of-the-articles-3-use-a-multi-task-network-connection-nsoperation/
  • 转载请保留上面文字。

    iPhone开发技巧之网络篇(3)--- 使用NSOperation建立多任务网络连接

    在网络应用程序中,经常需要多任务连接来提高程序的性能。比如多任务下载,多任务HTTP请求等,即线程控制模型中的工作群模型。使用 NSOperation 可以很容易实现这个功能。下面就以使用NSOperation处理并行的HTTP请求为例子,说明其用法。

    首先准备一个 NSOperation 的子类,用于处理 HTTP 请求。

    1
    2
    3
    4
    5
    6
    7
    8
    
    @interface RequestOperation : NSOperation {
      NSURLRequest*  _request;
      NSMutableData* _data;
    }
    
    - (id)initWithRequest:(NSURLRequest *)request;
    
    @end
    

    下面是实现:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    
    @implementation RequestOperation
    
    - (id)initWithRequest:(NSURLRequest *)request {
      if (self = [self init]) {
        _request = [request retain];
        _data = [[NSMutableData data] retain];
      }
      return self;
    }
    
    - (void)dealloc {
      [_request release];
      [_data release];
      [super dealloc];
    }
    
    // 如果不载下面的函数,会出错
    - (BOOL)isConcurrent {
      return YES;
    }
    
    // 开始处理
    - (void)start {
      if (![self isCancelled]) {
        // 以异步方式处理事件
        [NSURLConnection connectionWithRequest:_request delegate:self];
      }
    }
    
    // 取得数据
    - (void)connection:(NSURLConnection*)connection
        didReceiveData:(NSData*)data {
      // 添加数据
      [_data appendData:data];
    }
    
    // HTTP请求结束
    - (void)connectionDidFinishLoading:(NSURLConnection*)connection {
    }
    
    @end
    

    如果没有重载 isConcurrent 函数,缺省是返回NO,就是说只能以同步的方式处理。而如果又使用了connectionWithRequest:delegate: 以异步方式处理事件后,会产生下面的错误信息:

    1
    
    _NSAutoreleaseNoPool(): Object 0x18a140 of class NSURLConnection autoreleased with no pool in place - just leaking
    

    然后在你的 Controller 类中用 NSOperationQueue 来处理各个任务。

    1
    2
    3
    4
    5
    
    @interface xxViewController : UIViewController {
      NSOperationQueue* _queue;
    }
    
    @end
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
    @implementation xxViewController
    
    - (IBAction)buttonClicked:(id) sender {
      _queue = [[NSOperationQueue alloc] init];
      // 第一个请求
      NSURLRequest* request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com"]];
      RequestOperation* operation = [[RequestOperation alloc] initWithRequest:request];
      [operation autorelease];
      // 第二个请求
      NSURLRequest* request2 = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.yahoo.co.jp"]];
      RequestOperation* operation2 = [[RequestOperation alloc] initWithRequest:request2];
      [operation2 autorelease];
      // 开始处理
      [_queue addOperation:operation];
    }
    
    @end
    

    以上,用 NSOperation 来并行处理不同的任务,使用 NSOperationQueue 来控制复数的 NSOperation,并且可以限制Queue的大小,而不是无限制的使用任务。当一个任务完成,就执行待机中的任务。


  •     
    最新技术文章:
    ▪Android开发之登录验证实例教程
    ▪Android开发之注册登录方法示例
    ▪Android获取手机SIM卡运营商信息的方法
    ▪Android实现将已发送的短信写入短信数据库的...
    ▪Android发送短信功能代码
    ▪Android根据电话号码获得联系人头像实例代码
    ▪Android中GPS定位的用法实例
    ▪Android实现退出时关闭所有Activity的方法
    ▪Android实现文件的分割和组装
    ▪Android录音应用实例教程
    ▪Android双击返回键退出程序的实现方法
    ▪Android实现侦听电池状态显示、电量及充电动...
    ▪Android获取当前已连接的wifi信号强度的方法
    ▪Android实现动态显示或隐藏密码输入框的内容
    ▪根据USER-AGENT判断手机类型并跳转到相应的app...
    ▪Android Touch事件分发过程详解
    ▪Android中实现为TextView添加多个可点击的文本
    ▪Android程序设计之AIDL实例详解
    ▪Android显式启动与隐式启动Activity的区别介绍
    ▪Android按钮单击事件的四种常用写法总结
    ▪Android消息处理机制Looper和Handler详解
    ▪Android实现Back功能代码片段总结
    ▪Android实用的代码片段 常用代码总结
    ▪Android实现弹出键盘的方法
    ▪Android中通过view方式获取当前Activity的屏幕截...
    ▪Android提高之自定义Menu(TabMenu)实现方法
    ▪Android提高之多方向抽屉实现方法
    ▪Android提高之MediaPlayer播放网络音频的实现方法...
    ▪Android提高之MediaPlayer播放网络视频的实现方法...
    ▪Android提高之手游转电视游戏的模拟操控
     


    站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3