關於iphone accessory的理解

2021-07-26 23:47:50 字數 2807 閱讀 9676

首先,如果我們的應用程式想跟外設傳輸資料,先要透過iphone的作業系統,也就是iphoneos,而最開始的認證過程也是在外設和iphoneos之間發生的,蘋果為這個過程提供了一顆認證晶元(這顆晶元的作用是用來讓iphoneos識別這個外設是經過蘋果公司承認的,他的通訊方式是i2c匯流排,而且每齣乙個產品蘋果都會收幾美元的認證費用,蘋果用心何其毒也~~~)

iphoneos承認外設分兩個步驟,識別和認證,我們先說說識別過程。

識別過程是使用純物理連線來實現的,在這個過程中iphone的30pin有三個引腳被用到,分別是accessory identify,accessory detect,accessory power,accessory identify接549k歐姆的電阻,告知iphoneos使用串列埠通訊,accessory detect直接接地,告知iphoneos有外設插入,accessory power相當於iphoneos的訊號,待機時這個引腳沒有輸出,否則會有3.3v的電壓輸出。如果按照以上連線就完成了識別過程。

下面開始認證過程,認證過程也叫idps過程,這些就牽扯到蘋果指定的通訊協議了,蘋果給自己的通訊協議起了乙個名字叫lingo,lingo分好多種有音訊的lingo還有顯示遙控的lingo,而我們認證使用的lingo叫做general lingo。可能大家這時有點暈,那我就給大家看乙個iphone的命令包。

startidps packet

byte     value    comment

0            0xff    sync byte(required only for uart serial)

1            0x55    start of packet(sop)

2            0xnn    length of packet payload

3            0x00    general lingo

4            0x38    startidps

5            0xnn    transid [bit 15:8] transaction id 

6            0xnn    transid [bit 7:0]

7            0xnn    校驗

這是iphone的命令包,大家看到這個應該就明白了。開始idps過程首先要傳送startidps命令,這樣,外設與iphoneos之間的認證過程就開始了。其中咱們應用中eaaccessory關於一些外設的屬性,都是在這個過程中外設發給作業系統的,具體還是大家加入蘋果的mfi(made for ipod),拿到資料後,才能更明白。稍後我會將iphone串列埠通訊的原始碼發出來。先寫到這兒吧,這些東西不能說的太多,希望會對大家有點幫助。

(externalaccessory.framework)提供了一種管道機制,使應用程式可以和iphone或ipod touch裝置的配件進行通訊。通過這種管道,應用程式開發者可以將配件級別的功能整合到自己的程式中

。在和配件進行通訊之前,需要與配件的製造商緊密合作,理解配件提供的服務。製造商必須在配件的硬體中加入顯式的支援,才能和iphone os進行通訊。作為這種支援的一部分,配件必須支援至少一種命令協議,也就是支援一種定製的通訊模式,使配件和應用程式之間可以進行資料傳輸。蘋果並不維護乙個協議的登錄檔,支援何種協議及是否使用其他製造商支援的定製或標準協議是由製造商自行決定的。

物件,可以和配件進行通訊。通過這些流物件,應用程式可以向配件傳送未經加工的資料報,以及接收來自配件的類似資料報。因此,您必須按照期望的協議來理解每個資料報的格式。

,用於標識應用程式支援的通訊協議。您的應用程式可以在這個列表中以任意順序包含任意數量的協議。系統並不使用這個列表來確定應用程式應該選擇哪個協議,而只是用它來確定應用程式是否能夠和相應的配件進行通訊。您的**需要在開始和配件進行對話時選擇適當的通訊協議。

在配件接入系統並做好通訊準備之前,通過external accessory框架無法看到配件。當配件變為可見時,您的應用程式就可以獲取相應的配件物件,然後用其支援的一或多個協議開啟會話。

物件中的絕大多數資訊(比如名稱、製造商、和型號資訊)都只是用於顯示。如果您要確定應用程式是否可以連線乙個配件,必須看配件的協議,確認應用程式是否支援其中的某個協議。

請注意:多個配件物件支援同一協議是可能的。如果發生這種情況,您的**必須負責選擇使用哪個配件物件。

,字典的鍵是配件支援的協議。如果您試圖用乙個已經在使用的協議建立會話,external accessory框架就會產生錯誤。

程式清單8-1展示了如何檢查接入配件的列表並從中取得應用程式支援的第乙個配件。它為指定的協議建立乙個會話,並對會話的輸入和輸出流進行配置。在這個方法返回會話物件時,已經完成和配件的連線,並可以開始傳送和接收資料了。

程式清單8-1  

建立和配件的通訊會話

- (easession *)opensessionforprotocol:(nsstring *)protocolstring

}if (accessory)

}return session;

}

程式清單8-2處理流事件

// handle communications from the streams.

- (void)stream:(nsstream*)thestream handleevent:(nsstreamevent)streamevent

}

來註冊接收這些通告。兩種通告都包含受影響的配件的資訊。

的可選方法,您可以通過這個方法來接收配件斷開通告,而不需要事先配置通告觀察者。

關於程式關於世界

首先,在學了1年多的軟體設計的基礎上,問下自己 程式是什麼?業務需求是什麼?程式有什麼用?什麼是演算法?什麼是資料庫?或許每個人的理解不同,會給出不同的答案。那麼自己的理解 程式是乙個讓計算機工作的流程,在程式寫好之後,計算機就會按照,程式設計師定義好流程在執行。其實很多時候,乙個程式的好壞,在於乙...

關於血液關於軟體

1 自然沉降法 將血袋垂直吊掛於4 2 冰箱內,使紅細胞自然下沉1 3d,或將血袋呈70 80 角立於冰箱,需用時,用一次性分漿器分出血漿,制得濃縮紅細胞。2 洗滌法 一般用生理鹽水反覆洗滌3 6次。經洗滌的紅細胞,除白細胞和血小板減少外,血漿蛋白也極少,紅細胞中殘存的血漿蛋白含量約為原總蛋白的1 ...

關於冷漠,關於愛情

我不知道為什麼今天又莫名其妙開始思考愛情這件事,隨之就解決了我一直無法面對冷漠這件事 被冷漠是我始終無法消化的一件事,每當遇見冷漠時,我總會覺得就像一團火把自己燒得面目全非,但對方卻毫無傷害。但我突然懂了,遇到冷漠時,體面的離開即可 在乎你的人一定會在你離開後,找到你跟你解釋為什麼 連解釋都來不及,...