Chiuan的专栏

只有双手是程序猿,只有头脑是设计尸,我要成为程序尸

使用Redpark Serial cable SDK 开发软件连接iphone的研究

1、Introduction简介

  • 这个SDK以及包里带的一个接口使用例子提供给:IOS程序开发者,并且需要了解Serial data communications

1.1、 Overview

  • 这个SDK包含一个objective-c类“RscMgr”  (Redpark serial cable Manager)这个类封装和抽象化了redpark serial cable protocol,使它变得简单和容易使用。
  • RscM类提供了一些接口方法去做: init , setBaud , open , read , write ... 还有style of interface to the serial port 串行端口的接口类型,要使用它要include "RscMar.h"和"libRscMgr.a" 到你的项目。
  • 前提:要熟悉编写cocoa程序给ios设备和知道objective-c delegate protocol interfaces work.
  • 下载的SDK镜片里面有一个IOS 例子"RSC Demo" 示范如何使用RscMgr类去和RSC serial port交互。 项目里面的“RootViewController.h”和“RootViewController.m” 就是一个例子如何使用RscMgr class

2、Notes for Developers
2.1、Using the Redpark Serial Cable Manager

  • 应该实例化一个RscMgr在程序里面然后调用init , 这个RscMgr会向ios设备注册一个通知检测是否有配件连接或者断开。如果是ios4.2系统设备断开和连接的通知也被检测到当程序进入后台或者打开。这个同样应该处理RSC serial port的硬件连接和断开连接,如果附加配件匹配了协议支持 initWithProtocol ,那么RscMgr就会调用cableConnected callback。
  • RscMgr类需要另外一个objective-c object去制定为它的delegate 去响应多种与cable相关的事件(例如:cableConnected, cableDisconnected, readBytesAvailable.......)习惯上哪个类用来实例化RscMgr就让这个类做这个RscMgr的委托类。可以参考viewDidLoad在RootViewController.m 是一个例子用来初始化这些process
  • 一旦连接成功,程序可以打开一个连接到serial port和开始数据交互,任何时间,程序可以改变port configuration,调用有"set"前置的方法,例如:setBaud, setDataSize, setParity, setStopBits.
  • A new key needs to be added to the application plist " Supported external accessory protocols", with Item 0's value being "com.redpark.hobdb9" .
  • 程序必须调用open在调用write或者read.  委托的物体会接收到readBytesAvailable 回调当serial data 已经到达时候。 这个委托类需要调用read 在这个回调方法里面获取有效的数据避免超时读取。看看readBytesAvailable:function in RootViewController.m.  这个RscMgr类会缓存1024bytes数据在下一次数据到达前。
  • 这个委托类同时接受port status更新在portStatusChanged callback回调方法内。程序也许希望去搜索modem signal states可以使用getModemStatus 访问器。如果流量控制使用,那么程序需要调用 getPortStatus和query the specific bits in the serialPortStatus structure.(在redparkSerial.h内)

Advanced Options:高级选项
  • 在基础的serial port configuration options(setBaud, setDataSize....etc...) 一个开发者也许需要某些额外的需求而直接使用serialPortConfig和serialPortControl structures (在redparkSerial.h)。然而开发者应该谨慎开启这些“advanced” 特殊属性除非他们了解他们的设备需要这些。
  • 还有一些关于TX/RX的....暂时不翻译了。


Run Loop:
  • 要记住一点:the RscMar 输入和输出流需要在程序的Runloop里面。因此,任何writes or reads都是异步的,并且有可能没有被处理知道你的程序回到RunLoop. 这个程序仅有的一个问题是需要精确地传送和准时的接收。正如前面有提及的:程序需要使用readBytesAvailable delegate 委托方法去检测是否数据已经到达才马上读取。

阅读更多
个人分类: IOS深度研究
上一篇Unity3D - AssetBundle 在Android机子上进行读取
下一篇关于cocos2d相关的一些框架思考
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭