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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章