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 委託方法去檢測是否數據已經到達才馬上讀取。