接口方案(分享5篇)

更新時(shí)間:2023-08-14

未來屬于那些在昨天做出今天計(jì)劃的人,在工作總我們常常會(huì)收到領(lǐng)導(dǎo)分派的任務(wù)。我們要親手去寫好一份方案,做方案要先進(jìn)行目標(biāo)群體畫像分析,再根據(jù)目標(biāo)群體畫像制定營銷策略,方案有哪些要求?鴻蒙下載站小編為您整理了這篇“接口方案”希望對您有所啟發(fā),此文章內(nèi)容僅供參考請慎重對待!

接口方案 篇1

作為一個(gè)專業(yè)的軟件工程師,接口設(shè)計(jì)方案的制定是我工作中最為重要的一環(huán),因?yàn)楹玫慕涌谠O(shè)計(jì)能夠保證軟件系統(tǒng)的高效運(yùn)轉(zhuǎn),提高開發(fā)效率,降低維護(hù)成本。在這篇文章中,我將分享我在接口設(shè)計(jì)方案制定方面的一些實(shí)踐和思考,希望能夠?qū)ψx者有所啟發(fā)和幫助。

首先,接口設(shè)計(jì)方案需要考慮的是系統(tǒng)的整體架構(gòu)和目標(biāo)。在制定接口設(shè)計(jì)方案之前,應(yīng)該首先了解整個(gè)軟件系統(tǒng)的需求和業(yè)務(wù)規(guī)則,然后確定系統(tǒng)的架構(gòu)和設(shè)計(jì)模式。根據(jù)系統(tǒng)的不同需求和任務(wù),接口設(shè)計(jì)方案可能需要考慮的因素也會(huì)有所不同,例如性能、穩(wěn)定性、可擴(kuò)展性、安全性等等。

其次,接口設(shè)計(jì)方案需要盡可能地簡潔、清晰和易于理解。接口是系統(tǒng)內(nèi)部不同模塊之間通信的橋梁,因此良好的接口設(shè)計(jì)是確保不同模塊正確交互的關(guān)鍵。好的接口設(shè)計(jì)應(yīng)該遵循一些基本原則,如盡可能降低接口的復(fù)雜度和耦合度,使用明確的命名和標(biāo)準(zhǔn)化的數(shù)據(jù)類型等。對于重要的功能,還應(yīng)該編寫詳細(xì)的開發(fā)文檔,以方便團(tuán)隊(duì)內(nèi)部的開發(fā)者理解和使用。

第三,接口設(shè)計(jì)方案應(yīng)該盡量遵循開放標(biāo)準(zhǔn)和規(guī)范,以增加系統(tǒng)的兼容性和互操作性。對于通用的接口,例如API接口,應(yīng)該盡量遵循標(biāo)準(zhǔn)格式和命名規(guī)范,以方便其他系統(tǒng)和開發(fā)者集成和使用。此外,還應(yīng)該考慮安全和隱私問題,為系統(tǒng)接口設(shè)計(jì)添加必要的安全措施和認(rèn)證機(jī)制,以保護(hù)系統(tǒng)的數(shù)據(jù)和信息安全。

最后,接口設(shè)計(jì)方案需要不斷地優(yōu)化和完善。在實(shí)踐中,接口設(shè)計(jì)方案往往需要經(jīng)過多輪調(diào)整和改進(jìn),以達(dá)到系統(tǒng)的最佳性能和穩(wěn)定性。因此,應(yīng)該積極收集用戶反饋和性能數(shù)據(jù),不斷優(yōu)化和升級(jí)接口設(shè)計(jì)方案。此外,隨著技術(shù)的發(fā)展和需求的變化,接口設(shè)計(jì)方案也應(yīng)該適時(shí)地進(jìn)行更新和升級(jí),以跟上時(shí)代的步伐。

總之,接口設(shè)計(jì)方案是軟件工程中至關(guān)重要的一個(gè)環(huán)節(jié),良好的接口設(shè)計(jì)能夠幫助系統(tǒng)更加高效地運(yùn)轉(zhuǎn),并提高開發(fā)效率和維護(hù)成本。在制定接口設(shè)計(jì)方案時(shí),應(yīng)該考慮整個(gè)系統(tǒng)的需求和目標(biāo),保持接口簡潔、清晰和易于理解,遵循開放標(biāo)準(zhǔn)和規(guī)范,不斷優(yōu)化和完善接口設(shè)計(jì)方案。希望這篇文章能夠?yàn)樽x者提供一些有益的思考和實(shí)踐經(jīng)驗(yàn)。

接口方案 篇2

隨著計(jì)算機(jī)技術(shù)的快速發(fā)展,越來越多的軟件應(yīng)用程序被設(shè)計(jì)實(shí)現(xiàn)。在這些應(yīng)用程序中,接口是不可或缺的部分。接口是軟件系統(tǒng)中充當(dāng)數(shù)據(jù)交換點(diǎn),定義如何交互以及保證系統(tǒng)的互操作性。接口設(shè)計(jì)方案是軟件開發(fā)過程中非常重要的一環(huán)。

接口設(shè)計(jì)方案的定義

接口設(shè)計(jì)方案是指在軟件開發(fā)的過程中,設(shè)計(jì)人員確定接口的規(guī)范,包括接口的輸入、輸出、數(shù)據(jù)格式和錯(cuò)誤處理等內(nèi)容。接口設(shè)計(jì)方案的主要任務(wù)是為實(shí)現(xiàn)同一類型的軟件,提供統(tǒng)一的標(biāo)準(zhǔn)和規(guī)范,以確保軟件可以進(jìn)行正確的交互和通信。

接口設(shè)計(jì)原則

在接口設(shè)計(jì)方案中,有些基本原則需要遵循,以確保軟件的互操作性和數(shù)據(jù)的一致性。這些原則包括:

1. 明確規(guī)定接口的行為和參考標(biāo)準(zhǔn),以防止歧義和誤解。

2. 遵循一定的標(biāo)準(zhǔn)和約定來實(shí)現(xiàn)數(shù)據(jù)交換。

3. 考慮到設(shè)備的兼容性和可擴(kuò)展性,確定不同設(shè)備之間交互的最佳策略。

4. 在設(shè)計(jì)過程中采用可靠和安全的通訊協(xié)議來保證數(shù)據(jù)的正確性和私密性。

5. 采用易于實(shí)現(xiàn)和維護(hù)的設(shè)計(jì)方案來降低設(shè)計(jì)成本。

6. 考慮到未來的需求和變化,確保接口設(shè)計(jì)方案的可擴(kuò)展性和適應(yīng)性。

接口設(shè)計(jì)步驟

接口設(shè)計(jì)方案的設(shè)計(jì)是一個(gè)復(fù)雜的過程,需要進(jìn)行詳細(xì)的規(guī)劃和設(shè)計(jì),在以下幾個(gè)步驟中進(jìn)行:

1. 確定接口類型: 確定要設(shè)計(jì)的接口類型,包括 API、客戶端接口、服務(wù)器接口等。

2. 分析業(yè)務(wù)需求: 了解所需的功能,交流軟件系統(tǒng)需求,確定創(chuàng)建的接口。

3. 設(shè)計(jì)接口參數(shù): 確定接口的輸入和輸出參數(shù),以及參數(shù)的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)類型。

4. 確定接口操作: 設(shè)計(jì)接口的驗(yàn)證和錯(cuò)誤處理機(jī)制,確定可以執(zhí)行的操作。

5. 設(shè)計(jì)通訊協(xié)議: 設(shè)計(jì)通訊協(xié)議、數(shù)據(jù)傳輸格式和數(shù)據(jù)加密等等。

6. 設(shè)計(jì)測試用例: 設(shè)計(jì)測試用例,包括對參數(shù)和數(shù)據(jù)的驗(yàn)證,以確保接口的正確性。

7. 實(shí)施和測試: 實(shí)施和測試接口,以確保其正常運(yùn)行,正確的響應(yīng)請求并處理錯(cuò)誤。

8. 文檔和維護(hù): 生成接口文檔,并提供維護(hù)支持,之后可以持續(xù)更新文檔和維護(hù)。

接口設(shè)計(jì)例子

以下是一個(gè)簡單的接口設(shè)計(jì)例子。我們將創(chuàng)建一個(gè) API 接口來實(shí)現(xiàn)對用戶的創(chuàng)建和更新操作。

1. 類型: API 接口。

2. 業(yè)務(wù)需求: 創(chuàng)建用戶,并進(jìn)行更新。

3. 接口參數(shù):

- 創(chuàng)建用戶

請求:

POST /users

{

"name": "Tom",

"age": 18

}

響應(yīng):

HTTP/1.1 201 Created

{

"id": 1,

"name": "Tom",

"age": 18

}

- 更新用戶

請求:

PATCH /users/1

{

"name": "Tom Chen",

"age": 19

}

響應(yīng):

HTTP/1.1 200 OK

{

"id": 1,

"name": "Tom Chen",

"age": 19

}

4. 接口操作:

- 驗(yàn)證請求參數(shù)是否有效。

- 處理請求。

- 返回響應(yīng)。

5. 通訊協(xié)議: HTTP 協(xié)議。

6. 測試用例:

- 創(chuàng)建一個(gè)用戶:

請求:

POST /users

{

"name": "Tom",

"age": 18

}

響應(yīng):

HTTP/1.1 201 Created

{

"id": 1,

"name": "Tom",

"age": 18

}

- 更新用戶:

請求:

PATCH /users/1

{

"name": "Tom Chen",

"age": 19

}

響應(yīng):

HTTP/1.1 200 OK

{

"id": 1,

"name": "Tom Chen",

"age": 19

}

7. 實(shí)施和測試: 實(shí)現(xiàn)接口并進(jìn)行測試,確保其正常運(yùn)行,正確的響應(yīng)請求并處理錯(cuò)誤。

8. 文檔和維護(hù): 生成文檔并提供維護(hù)支持,之后可以持續(xù)更新文檔和維護(hù)。

總結(jié)

接口設(shè)計(jì)方案是軟件開發(fā)過程中的重要部分,其設(shè)計(jì)應(yīng)該遵循明確規(guī)定行為和參考標(biāo)準(zhǔn)的原則,在設(shè)計(jì)過程中采用可維護(hù)的設(shè)計(jì)方案,以便降低設(shè)計(jì)成本和實(shí)現(xiàn)同一類型的軟件。本文介紹了接口設(shè)計(jì)方案的基礎(chǔ)內(nèi)容和設(shè)計(jì)步驟,希望這些信息有助于您在設(shè)計(jì)接口時(shí)準(zhǔn)確地確定需求。那么現(xiàn)在你是否已經(jīng)變成了一個(gè)專業(yè)的接口設(shè)計(jì)方案的人呢?

接口方案 篇3

摘要:高速處理器與慢速設(shè)備之間的接口是電子系統(tǒng)設(shè)計(jì)中經(jīng)常遇到的問題。以液晶顯示器為例,提出了一種以FPGA為基礎(chǔ)的快速接口電路設(shè)計(jì)方案。該方案可有效地減小慢速設(shè)備對高速處理器的影響。

隨著器件集成工藝的發(fā)展和Soc器件的出現(xiàn),現(xiàn)在的數(shù)字系統(tǒng)正在越來越多地采用可編程器件設(shè)計(jì)。這樣,不僅開發(fā)周期短,而且在價(jià)格和使用難易度上也顯示了很大的優(yōu)勢。更為重要的是,還能利用器件的現(xiàn)場可編程特性,根據(jù)應(yīng)用的要求對器件進(jìn)行動(dòng)態(tài)配置,簡便易行地完成功能的添加或變化。

在高速的數(shù)字信號(hào)處理系統(tǒng)中,要涉及到大量的計(jì)算,為了提高運(yùn)算速度,正大量使用DSP器件。目前的可編程器件,其時(shí)鐘頻率可以很高,在高速數(shù)字信號(hào)處理系統(tǒng)中將發(fā)揮越來越大的作用。因此,DSP+FPGA的方案正越來越多地被電子工程師們采用。

在很多的實(shí)際數(shù)字系統(tǒng)中,往往需要良好的用戶界面,其中LCD是被大量采用的顯示器件。由于LCD是典型的慢速設(shè)備(相對于DSP來講),在與高速微處理器接口時(shí),會(huì)耗費(fèi)大量時(shí)間,這在高速系統(tǒng)設(shè)計(jì)中是不允許的。如果DSP有不太富裕的處理余量,如何利用它對LCD完成控制呢?僅僅在兩者之間加入鎖存器之類的簡單接口電路,往往不能對LCD完成控制。不過,有了FPGA,就可以在不增加成本的情況下,在DSP和LCD之間設(shè)計(jì)一條雙向的快速通道。

TI公司是DSP在全球的主要供應(yīng)商,其低價(jià)位的TMS320VC54x系列DSP深受廣大電子工程師的青睞。下面以TMS320VC5416為例介紹DSP的時(shí)序。TMS320VC5416將尋址范圍分為存儲(chǔ)器空間、程序空間和I/O空間。其中,對I/O空間的操作由地址線、數(shù)據(jù)線和三根信號(hào)線IOSTRB、R/W和IS來完成,其時(shí)序圖如圖1所示。

讀操作和寫操作由R/W信號(hào)線上的高低電平?jīng)Q定。如果不采用外部插入等待周期的方法,僅靠內(nèi)部的等待周期設(shè)置寄存器,訪問外部I/O空間時(shí)最多可以插入14個(gè)等待周期。如果DSP運(yùn)行在100MHz的主頻上(實(shí)際上TMS320VC16可以運(yùn)行在最高160MHz的主頻上),也只有0.14μs。這對于LCD來說來遠(yuǎn)遠(yuǎn)不夠的。

常見的192×64點(diǎn)陣的LCD(FM19264)實(shí)際上是由3塊獨(dú)立的64×64點(diǎn)陣LCD構(gòu)成的,共享地址線和數(shù)據(jù)線,可由CS1、CS2和CS3分別選中。每小塊LCD都有各自獨(dú)立的指令寄存器和數(shù)據(jù)寄存器,由控制線D/I上的高低電平選擇。數(shù)據(jù)的鎖存或出現(xiàn)在數(shù)據(jù)線上由E信號(hào)決定。LCD主要控制管腳的功能如表1所示。對LCD寫操作的時(shí)序圖如圖2所示。LCD的每次讀寫操作最少要1μs。如果能使DSP對LCD的訪問象對高速設(shè)備訪問一樣,就能夠最大限度地減小DSP資源的浪費(fèi),并且能夠減少系統(tǒng)的復(fù)雜性,這就需要在FPGA中添加一個(gè)DSP與LCD之間的高速雙向通道。

CS1選中左邊LCD,低有效CS2選中中間LCD,低有效CS3選中右邊LCD,低有效D/I高:對數(shù)據(jù)寄存器操作

R/W為高(讀操作)、E為高時(shí)、LCD的數(shù)據(jù)出現(xiàn)在數(shù)據(jù)線上RESET復(fù)位信號(hào),低有效D7~D0數(shù)據(jù)

對每塊LCD的控制,是通過操作指令寄存器和數(shù)據(jù)寄存器實(shí)現(xiàn)的。在屏幕指定位置寫入數(shù)據(jù),要分三步(①寫入行地址,②寫入列地址,③寫入數(shù)據(jù))才能完成,不但耗時(shí)而且增加了軟件編程的復(fù)雜程度。如果能夠?qū)⒅噶詈蛿?shù)據(jù)合在一起作為一條指令,那么設(shè)計(jì)一套簡單的'指令譯碼電路執(zhí)行電路就可完成這項(xiàng)任務(wù)。

硬件框圖如圖3所示。LCD的原始控制指令如表2所示。

指? 令? 碼R/WD/ID7D6D5D4D3D2D1D00000111111/0控制顯示器的開關(guān)0011顯示起始行(063)設(shè)定顯示器從哪一行顯示數(shù)據(jù)0010111頁地址(07)設(shè)定頁地址0001列埴 (063)設(shè)定列地址01寫入LCD的數(shù)據(jù) 給顯示器寫數(shù)據(jù)11讀出的狀態(tài)讀顯示器狀態(tài)10讀出的數(shù)據(jù)讀顯示器數(shù)據(jù)

LCD的顯示畫面按8行為一頁的方式進(jìn)行劃分,共64行分成8頁。LCD具有列循環(huán)尋址功能,如果第一步設(shè)定了頁地址和列地址,那么以后每次向LCD寫入顯示數(shù)據(jù),列地址計(jì)數(shù)器就自動(dòng)加一。除非再設(shè)定列地址,否則列地址就一直累加下去,直到63。這樣就簡化了寫入工作。

考慮到實(shí)際應(yīng)用方便,可把一些常用的操作按指令的方式編碼。所得到的DSP控制指令如下:

框圖中微指令ROM在接口控制中起著決定性的作用,每條指令的執(zhí)行都被看作一系列單步時(shí)序操作的集合。如果從ROM的某一地址開始依次讀出ROM里的數(shù)據(jù),那么在每一個(gè)數(shù)據(jù)位上就會(huì)出現(xiàn)隨時(shí)間變化的電平跳變。這樣就可以用它作為控制信號(hào)進(jìn)行控制操作。由于ROM是并行輸出的,如果用不同的數(shù)據(jù)位代表不同的控制信號(hào)線,就能很容量地實(shí)現(xiàn)各個(gè)信號(hào)線之間的同步操作。這樣就能很容易形成時(shí)序圖中的時(shí)序邏輯,而且擴(kuò)展方便。在上述的指令表示中,通過對高3位進(jìn)行譯碼,可以得到ROM尋址時(shí)的起始地址。ROM各個(gè)數(shù)據(jù)位的含義如下:

LDRDFREED/IR/WERESETCS1CS2CS3

其中,低七位是控制LCD的接口線,F(xiàn)REE是微程序執(zhí)行完標(biāo)志,每條指令所對應(yīng)的微程序分為招待狀態(tài)(有多條微指令,F(xiàn)REE位為0)和閑置狀態(tài)(一條指令,F(xiàn)REE位為1)。當(dāng)指令執(zhí)行狀態(tài)機(jī)檢測到FREE位的上跳沿時(shí),加載下一條指令。LD是數(shù)字寄存器從DSP獲得數(shù)據(jù)時(shí)的加載信號(hào),微程序執(zhí)行過程中,在某些指令執(zhí)行時(shí)需要加載數(shù)據(jù),可由該信號(hào)完成。RD是數(shù)據(jù)寄存器從LCD讀入數(shù)據(jù)的加載信號(hào),主要完成從LCD讀入數(shù)據(jù)。

取指控制邏輯主要功能是根據(jù)FIFO的狀態(tài)決定是否寫入新的指令以及根據(jù)執(zhí)行狀態(tài)機(jī)的狀態(tài)讀入新的指令,填寫狀態(tài)寄存器,給出中斷信號(hào)。

根據(jù)上述硬件設(shè)計(jì),DSP的軟件設(shè)計(jì)就大大簡化了。以寫入數(shù)據(jù)為例,在寫入數(shù)據(jù)前先查詢一下接口模塊的狀態(tài),如果可以寫入就寫入數(shù)據(jù);否則保持現(xiàn)有數(shù)據(jù)指針,等待下次寫入。一讀一寫兩次外部I/O操作,如果按7個(gè)等待周期、主頻100MHz計(jì)算,只有140ns,加上判斷所需時(shí)間,200ns內(nèi)就可以完成寫入數(shù)據(jù)。這里,7個(gè)等待周期是考慮到系統(tǒng)內(nèi)還其它器件。如果只是對該接口模塊操作,兩三個(gè)等待周期是沒有問題的。這樣,100ns內(nèi)就可完成寫入數(shù)據(jù)。

在實(shí)際應(yīng)用中,采用上述接口控制模塊來完成LCD控制大大減輕了DSP的壓力。推而廣泛,這種方法還可以應(yīng)用在其它慢速設(shè)備上,如打印機(jī)等,對于提高系統(tǒng)效率是比較有效的。需要指出的是,盡管這種方法能夠建立雙向快速通道,卻是以占用可編程器件有限的資源為代價(jià)的。但是隨著目前可編程器件容量的日益擴(kuò)大,這個(gè)問題已不是很突出的了。

接口方案 篇4

DataFlash系列存儲(chǔ)器幾乎可以和任何類型的單片機(jī)接口,無論單片機(jī)是否有SPI接口。當(dāng)然,如果單片機(jī)有SPI接口,那么存儲(chǔ)器讀/寫程序就相對簡單些;如果單片機(jī)沒有SPI接口,則可以用軟件仿真SPI接口與存儲(chǔ)器通信。

圖5為微型壓力測量系統(tǒng)的一部分。存儲(chǔ)器采用AT45DB161B-TC,TSOD封裝;單片機(jī)為美國Microchip公司的PIC16LC73B-04/SS,SSOP封裝。單片機(jī)采用軟件仿真SPI接口的方式與存儲(chǔ)器通信,存儲(chǔ)器工作于SPI模式0。

DataFlash系列存儲(chǔ)器可以按地址從低到高順序讀寫,也可以隨機(jī)讀寫任一字節(jié)的數(shù)據(jù)。對于順序讀數(shù)據(jù),可以使用連續(xù)讀主存頁陣列命令(操作碼68H或E8H)從給定的起始地址開始連續(xù)讀出,中間不需用戶干預(yù),也可使用讀單頁主存命令(操作碼52H或D2H),自行提供頁地址讀取數(shù)據(jù)。對于順序?qū)憯?shù)據(jù),可以使用通過緩存寫主存頁命令(操作碼82H或85H),直接將數(shù)據(jù)寫入主存;也可以先使用寫緩存命令(操作碼84H或87H),將數(shù)據(jù)寫入緩存,在適當(dāng)?shù)臅r(shí)刻再使用緩存寫主存頁命令(操作碼83H或86H),將緩存中的數(shù)據(jù)寫入主存,如圖6所示。使用何種方式讀寫取決于特定的應(yīng)用場合與要求。

下面的子程序?yàn)轫樞蜃x/寫存儲(chǔ)器的例子。子程序spiwt采用了通過緩存寫主存頁的方法,向存儲(chǔ)器寫入1字節(jié)數(shù)據(jù)。順序讀存儲(chǔ)器子程序spicrd采用了邊疆讀主存頁陣列命令。從給定地址處連續(xù)讀出數(shù)據(jù),用圖5所示的PIC16LC73B單片機(jī)匯編語言編寫,使用MPLAB5.4.00編譯器編譯通過并燒寫入單片機(jī),按圖5所示系統(tǒng)實(shí)測通過。

接口方案 篇5

摘要:提供一種簡便、經(jīng)濟(jì)的方法,通過TINI平臺(tái)實(shí)現(xiàn)串行接口設(shè)備與以太網(wǎng)的連接。一旦設(shè)備連接到以太網(wǎng),就能提供TINI Web服務(wù)。

很多電子設(shè)備利用串行接口與其它設(shè)備進(jìn)行通信,其中有溫度調(diào)節(jié)器、POS機(jī)、遠(yuǎn)程監(jiān)控儀、條碼掃描儀、票據(jù)打印機(jī)、射頻標(biāo)簽收發(fā)器、血壓計(jì)及其它現(xiàn)場使用的測試設(shè)備和新型自動(dòng)化設(shè)備。大多數(shù)設(shè)備與外部的通信是通過串口進(jìn)行的,不能直接連接到大型計(jì)算機(jī)網(wǎng)絡(luò),無法滿足TCP/IP連接和以太網(wǎng)通信的需求。由于成本和時(shí)間問題,很少有人選擇對系統(tǒng)進(jìn)行重新設(shè)備的途徑。利用本文介紹的基于DS80C390或DS80C400微控制器的TINI平臺(tái),可以將孤立的串行設(shè)備連接到以太網(wǎng)。

TINI(微網(wǎng)接口)是Dallas Semiconductor開發(fā)的一種技術(shù)平臺(tái),目的是協(xié)助用戶快速整合DS80C390/DS80C400網(wǎng)絡(luò)微控制器的研發(fā),TINI定義了一個(gè)芯片組,包含一個(gè)嵌入式操作系統(tǒng),其中整合了經(jīng)過高度優(yōu)化的Java運(yùn)行環(huán)境。Java編程者可從其中獲得一般的嵌入式開發(fā)中不多見的強(qiáng)大功能:多線程、無和單元收集、繼承性、虛擬化、跨平臺(tái)能力 、強(qiáng)大的網(wǎng)絡(luò)支持,以及―最后但很重要―大量免費(fèi)的開發(fā)工具。TINI使用乾通常不直接面對匯編代碼。不過,為了優(yōu)化嚴(yán)格要求速度的通道或者訪問底層硬件,同時(shí)也支持并鼓勵(lì)本地語言子程序(TINI操作系統(tǒng)用本地代碼寫成,因此,串行I/O的吞吐率和現(xiàn)代PC沒有明顯差異)。除完全支持包外,TINI Java運(yùn)行環(huán)境還包含一個(gè)完整實(shí)現(xiàn)的子系統(tǒng)。通過Java可毫不費(fèi)力地訪問TCP/IP和串行口,因此,TINI系統(tǒng)可非常容易地用來實(shí)現(xiàn)串行口-以太網(wǎng)橋。

下面的例子中,TINIm390驗(yàn)證模塊(放置在E10插槽)是DS80C390 TINI開發(fā)平臺(tái)的硬件部分(TINIm400是配合DS80C400制作的)。除了SRAM、Flash、以太網(wǎng)、CAN總線、1-Wire等,系統(tǒng)還有四個(gè)串口,其中DS80C390內(nèi)部包括兩個(gè)UART,另外兩個(gè)是擴(kuò)充的(采用一片16550選配件)。需要注意的是,E10插座上的兩個(gè)串行連接器都被接到了serial0,它們只是在DTE/DCE引腳安排上有所差異。詳細(xì)資料請參閱《TINI特性和開發(fā)指南》,PDF文件可以從TINI/book.html下載。

下面介紹兩具具體應(yīng)用,并從一個(gè)普通的串行口-以太網(wǎng)程序中摘錄片段出來。經(jīng)過修改,它幾乎可適應(yīng)于各種應(yīng)用。這些范例利用TINIm390/400驗(yàn)證模塊搭建而成,如圖1所示。

可以把TINI驗(yàn)證模塊看成“黑盒子”,將多個(gè)串行設(shè)備掛接到以太網(wǎng)。根據(jù)最終設(shè)備的需要,TINI可以讓數(shù)據(jù)流直通,也以對數(shù)據(jù)進(jìn)行解析、翻譯或修改。盡管設(shè)計(jì)人員可以在TINIm390/400的開發(fā)器外殼上運(yùn)行這些范例,但更合理的做法將其駐留于內(nèi)存之中,掉電之后還能夠自啟動(dòng),并利用其它一些TINI構(gòu)造技術(shù)使最終產(chǎn)品更加牢靠。如果想修改這些范例,需要具備一些基本的網(wǎng)絡(luò)知識(shí)和編程經(jīng)驗(yàn)。樣例工作代碼也可以Dallas公司ftp站點(diǎn)(ftp://)下載。

虛擬調(diào)制解調(diào)器(Modem)利用TINIm390/400和TCP/IP連接,替代特殊調(diào)制器和電話線。假定有一個(gè)舊設(shè)備,比如某工廠的“機(jī)器狀態(tài)監(jiān)視器”,它利用一個(gè)調(diào)制解調(diào)器,一天之內(nèi)數(shù)次撥號(hào)到一個(gè)中央服務(wù)器,報(bào)告機(jī)器的狀態(tài)、負(fù)載和效率數(shù)據(jù)。為了削減服務(wù)器端日益增長的調(diào)制解調(diào)器庫,并利用現(xiàn)有的LAN取代連接到設(shè)備的電話線,我們可以重寫服務(wù)器軟件以支持TCP/IP,并且用TINI虛擬調(diào)制解調(diào)器取代每個(gè)機(jī)器上原有的調(diào)制解調(diào)器。這樣,機(jī)器狀態(tài)監(jiān)視器就不必再作任何修改,對于最終設(shè)備而言,虛擬調(diào)制解調(diào)器的使用和一個(gè)真正的調(diào)制解調(diào)器完全一樣。

除了上述配置,虛擬調(diào)制解調(diào)器當(dāng)然也可以成對使用。如果雙方都使用虛擬調(diào)制解調(diào)器,就無須對服務(wù)器軟件作任何改動(dòng),TINI模塊可直接替換現(xiàn)有的調(diào)制解調(diào)器。在此情況之下,虛擬調(diào)制解調(diào)器每次接到“AID”調(diào)制解調(diào)器撥號(hào)命令時(shí),實(shí)際建立的是TCP連接?!癆TH”斷開命令關(guān)閉TCP連接。軟件也實(shí)現(xiàn)一系列其它的經(jīng)典AT調(diào)制解調(diào)器命令,并被諸如Microsoft Windows之類的網(wǎng)絡(luò)系統(tǒng)認(rèn)作真調(diào)制解調(diào)器,此外,虛擬調(diào)制解調(diào)器還可以偵聽TCP端口,當(dāng)收到“呼叫”信號(hào)時(shí),向終端設(shè)備發(fā)出“振鈴”。

下面的代碼片段顯示了如何對TINIm390上的串行口進(jìn)行初始化:

public static void man(String args[]){

TINIOS.setSerialBootMessagesState(false);

TINIOS.setDebugMessagesState(false);

TINIOS.setConsoleOutputEnabled(false);

System.out.println(“Connecting to serial0 at 9600bps,” “l(fā)istening on TCP port 8001”);

try{

CommPortIdentifier portId=CommPortIdentifier.getPortIdentifier(“seria10”);

SerialPort port=(SerialPort)=(SerialPort)portId.open(“VmodemTINI”,10000);

TINIOS.estRTSCTSFlowControlEnable(1,false);

TINIOS.setRTSCTSFlowControlEnable(0,true);

TCPSerialVirtualModem modem=new TCPSerial VirtualModem(port,/*Comm speed */9600,/*TCP Port */8001);

cessIuput;

}

catch (Excepiton e){

System.out.println("Exception:+e.toString());

}

}

這段代碼首先禁止掉所有來自TINI OS的調(diào)試輸出――TINI上的標(biāo)準(zhǔn)慣例。獲得一個(gè)端口號(hào)后,打開這個(gè)端口(如果端口正在被另一個(gè)應(yīng)用使用,第二個(gè)參數(shù)指明等待多久),接下來,設(shè)置硬件流控制狀態(tài)。由于TINIm390僅有一套R(shí)TS/CTS線用于串口0和1,在目標(biāo)端口使用它們之前,程序首先應(yīng)該關(guān)掉其它端口上的流控制,下面,就是一個(gè)Java虛擬調(diào)制解調(diào)器范例。

虛擬調(diào)制解調(diào)器類似包含一個(gè)AT命令解釋器(未在此示出,盡管到目前為止,它是本范例中最大的一部分)和網(wǎng)絡(luò)代碼。下面的.代碼用來設(shè)置串口位速率、數(shù)據(jù)和停止位,以及奇偶位。從中可以看出,處理入站連接是何等簡單:

/**Creates a new VirtualModem connected to a serial port on

* one end and a TCP port on the data side.

* serial --the serial port this VirtualModem talks to.

* speed --the speed the serial port should be set to.

* tcpport --the TCP port this VirtualModem listens on.

* throws IOException when there's a problem with the serial or TCP port.*/

public TCPSerialVirtualModem(SerialPort serial,int speed,int tcpport)

{

super(serial);

try{

serial.setSerialPortParams(speed,SerialPort.DATABITS_8,

SerialPort.STOPBITS_1,SerialPort.PARITY_NONE);

}

catch(Unsupported CommOperationException e){

throw new IOException();

}

serverSock=new ServerSocket(tcpport,1);//backlog of one listenThread=new listenInbound();

listenThread.start();

}

最后,listenThrad()片段可接受一個(gè)到來的連接請求:

public void run() {

int rc;

Socket s;

While (running){

s=null;//No incoming connection request

try {

answered=false;

s=serverSock.accept();

//Discard incoming connection if already connected

throw new IOException();

第二個(gè)實(shí)例是將TINIm390/400連接到一個(gè)不間斷電源的串口。軟件要用網(wǎng)絡(luò)UPS工具協(xié)議,允許多個(gè)客戶端在多種平臺(tái)上檢測UPS的狀態(tài)。該項(xiàng)目源于需要由一臺(tái)沒有串口的新Macintosh計(jì)算機(jī)監(jiān)視現(xiàn)有的UPS電源的需求。目前存在兩種基本的UPS設(shè)備,即所謂的智能型和簡單型(或“啞巴型”)。簡單的UPS在多個(gè)串行引腳上指示其工作狀態(tài),它實(shí)際上輸出任何ASCII數(shù)據(jù)。由于不存在太多的串行引腳,因而它僅能夠指示幾組有限的信息,如表1所列。

信??? 號(hào)意??? 義RTS(來自 UPS)電池低TD(來自 UPS)使用電池CTS(去 UPS)關(guān)閉UPS電源

很多現(xiàn)有設(shè)備僅支持異步串行通信,然而,當(dāng)前的許多應(yīng)用要求以太網(wǎng)和TCP/IP組網(wǎng)能力。利用強(qiáng)大的Java運(yùn)行環(huán)境和基于DS80C390和DS80C400微控制器的TINI技術(shù),很容易在極短時(shí)間內(nèi)開發(fā)出一個(gè)串行口-以太網(wǎng)轉(zhuǎn)換器。

接口方案(分享5篇)