王振全
【摘要】本文主要介紹在TEKLOGIX工業(yè)級(jí)手持終端XT15上實(shí)現(xiàn)語音集群功能的方法。首先,本文簡(jiǎn)單介紹了華為TD-LTE寬帶集群的特點(diǎn)及港口的需求情況。其次,本文介紹了TEKLOGIXXT15的軟件平臺(tái)和硬件接口,同時(shí)介紹了華為TD-LTE集群通信模塊EM350的特點(diǎn)及接口形式。接下來,本文提出了將EM350模塊嫁接到XT15上的基本思路和實(shí)現(xiàn)方法。最后,本文描述了在XT15上通過虛擬串口調(diào)用EM350的AT指令集實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)呼叫和群組呼叫的軟件實(shí)現(xiàn)。
【關(guān)鍵詞】TEKLOGIXTD-LTE手持終端語音集群CE
我國(guó)自主知識(shí)產(chǎn)權(quán)的4G標(biāo)準(zhǔn)TD-LTE的快速發(fā)展,推動(dòng)了港口行業(yè)的無線網(wǎng)絡(luò)由多頻點(diǎn)、多制式向一網(wǎng)多能的演進(jìn),即一張TD-LTE專用網(wǎng)絡(luò)同時(shí)實(shí)現(xiàn)數(shù)據(jù)、語音和視頻信息的傳輸。然而,由于港口行業(yè)對(duì)于無線終端的特殊要求(三防、全鍵盤、條碼掃描等),現(xiàn)有的TD-LTE終端無法滿足港口的需要,而能夠滿足港口需要的無線終端又無法接入TD-LTE網(wǎng)絡(luò)并支持集群功能。因此,在現(xiàn)有的數(shù)據(jù)終端上適配基于TD-LTE的集群通信模塊使其成為多功能的集群終端,對(duì)TD-LTE在港口行業(yè)的產(chǎn)業(yè)化具有重要的現(xiàn)實(shí)意義。
本文采用工業(yè)級(jí)終端廠商TEKLOGIX的手持終端XT15作為基本終端,通過在其上擴(kuò)展接入華為EM350集群模塊,使之成為多功能集群終端。
一、TEKLOGIXXT15和華為EM350介紹
1.TEKLOGIXXT15
XT15是一款基于Window CE6.0的智能手持終端,具有堅(jiān)固耐用、接口豐富、擴(kuò)展容易的特點(diǎn),被廣泛用作港口工人的無線理貨終端。XT15具有很好的靈活性,可以通過擴(kuò)展SD插槽、TTL串口、USB接口、GPIO接口接入第三方模塊。
2.華為EM350介紹
華為EM350 模塊是一塊TD-LTE制式的Mini PCIe集群通信模塊,將該模塊集成到終端設(shè)備中,作為L(zhǎng)TE Modem使用,提供無線數(shù)據(jù)接口,就可以實(shí)現(xiàn)集群語音通話以及空口數(shù)據(jù)傳輸功能。
EM350的物理接口包括Mini PCIe接口和天線接口。Mini PCIe接口可以擴(kuò)展出USB接口、SIM卡接口、語音接口和電源接口。天線接口通過射頻連接器外接天線。
3.XT15的接口適配
通過分析XT15的擴(kuò)展槽和EM350的外部接口,本文提出對(duì)二者進(jìn)行適配的基本思路:在XT15的硬件擴(kuò)展槽上加裝mini PCIe母槽,將EM350插接到此母槽上,然后通過連接母槽的針腳分別連接XT15的USB接口、語音接口、電源接口、SIM卡接口等[1]。
本文主要探討USB接口的適配,其它接口直接連接對(duì)應(yīng)部件即可。
USB 接口電路設(shè)計(jì)參考圖如下:
EM350通過USB接口與XT15終端通信,在XT15終端上虛擬出AT口、Diag口和數(shù)據(jù)口,AT口是AT指令的執(zhí)行口。
二、集群功能的軟件實(shí)現(xiàn)
XT15和EM350的接口適配完成后,需要在XT15上開發(fā)一款專門的軟件來實(shí)現(xiàn)群組呼叫功能。本文采用.Net框架和C#語言來實(shí)現(xiàn)上述功能,通過在虛擬AT串口上執(zhí)行AT命令來完成對(duì)EM350的操作。
1.AT指令介紹
AT 命令是TE(Terminal Equipment)和MT(Mobile Terminal)之間的通信命令協(xié)議。AT命令是以AT做首,回車字符結(jié)束的字符串。AT 命令的返回值包括兩部分,響應(yīng)信息和結(jié)果碼,AT 命令的響應(yīng)數(shù)據(jù)包在回車換行字符中。
EM350的AT命令結(jié)果碼分為主動(dòng)式和被動(dòng)式。被動(dòng)式結(jié)果碼是指在TE(XT15)側(cè)執(zhí)行AT命令后才返回的結(jié)果碼,相當(dāng)于函數(shù)的返回值。而主動(dòng)式結(jié)果碼無須執(zhí)行任何AT命令,是由MT(EM350)定期發(fā)送給TE(XT15),類似于事件[2]。
2.XT15串口訪問
本文通過.Net提供的串口訪問類SerialPort來是實(shí)現(xiàn)對(duì)虛擬AT串口的操作。
打開串口代碼:
serialPort = new SerialPort(portName, baudRate);
serialPort.Open();
關(guān)閉串口代碼:
serialPort.Close();
寫入數(shù)據(jù)代碼:
serialPort.WriteLine(command);
同步讀取數(shù)據(jù)代碼:
res = serialPort.ReadExisting();
異步讀取數(shù)據(jù)代碼:
DataReceived事件被觸發(fā)時(shí),通過以下函數(shù)處理。
void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
3.AT結(jié)果碼解析
EM350在執(zhí)行部分AT指令時(shí)可能會(huì)占用較長(zhǎng)的時(shí)間,此時(shí),主動(dòng)響應(yīng)結(jié)果碼就會(huì)穿插在正常響應(yīng)結(jié)果碼中返回,從而出現(xiàn)響應(yīng)結(jié)果碼不完整的情況。為了避免這種情況,本文先創(chuàng)建一個(gè)字節(jié)隊(duì)列,將串口中讀出的數(shù)據(jù)字節(jié)保存在此字節(jié)隊(duì)列中。另外開啟一個(gè)線程,負(fù)責(zé)從字節(jié)隊(duì)列中解析出特定的結(jié)果碼。完整的結(jié)果碼將被直接解析出,不完整的結(jié)果碼,則會(huì)留在隊(duì)列總,直到不斷有新的字節(jié)從串口讀出并寫入隊(duì)列,使得結(jié)果碼完整后再進(jìn)行解析。
創(chuàng)建隊(duì)列代碼:
private List
隊(duì)列寫入數(shù)據(jù)代碼:
數(shù)據(jù)寫入串口緩存時(shí),在DataReceived事件中將串口緩存中的數(shù)據(jù)讀出寫入隊(duì)列
byte[] buffer = new byte[this.serialPort.BytesToRead];
int readCount = this.serialPort.Read(buffer, 0, buffer.Length);
this.responses.AddRange(buffer);
命令解析線程函數(shù)
private void ParseReceivedData(object obj){ {
string res = Encoding.Default.GetString(this.responses.ToArray(), 0, responses.Count);
int commandEndIndex = res.IndexOf(" ");
if (commandEndIndex >= 0){
string command = res.Substring(0, commandEndIndex + 2);
命令處理部分
this.responses.RemoveRange(0, commandEndIndex + 2);
}
}
群組呼叫實(shí)現(xiàn)
加入群組代碼:
res = ExecuteCommand("AT+CTGS=" + groupId, "+CTGS:");
話權(quán)申請(qǐng)代碼:
res = ExecuteCommand("AT+CAPTTD=" + cCInstance + "," + groupCallVoice + "," + priority + ","" + calledPartyId + """, "");
話權(quán)申請(qǐng)成功結(jié)果碼:
+CAPTTG:
信道建立結(jié)果碼:
+CTCC:
開始釋放話權(quán)代碼:
res = ExecuteCommand("AT+CAPTTR=" + cCInstance + "," + groupId + "", "");
信道斷開結(jié)果碼:
+CTCR:
群組關(guān)閉代碼:
res =ExecuteCommand("AT+CTGR=" + cCInstance + "," + groupId + "", "");
三、結(jié)論
本文通過在TEKLOGIXXT15手持終端上擴(kuò)展接入華為EM350集群通信模塊的方法將傳統(tǒng)數(shù)據(jù)終端升級(jí)成兼容TD-LTE的多功能集群終端。經(jīng)過測(cè)試,適配后的終端能夠很好地實(shí)現(xiàn)XT15終端之間、XT15和華為集群終端EP680之間的集群對(duì)講。本文描述的方法同樣適用于XP平臺(tái)、Android平臺(tái)手持或車載終端的TD-LTE集群改造。在當(dāng)前TD-LTE網(wǎng)絡(luò)剛剛起步、TD-LTE工業(yè)級(jí)終端匱乏的情況下,通過本文描述的方法對(duì)實(shí)現(xiàn)TD-LTE終端多樣化,推動(dòng)TD-LTE技術(shù)的產(chǎn)業(yè)化具有重要的現(xiàn)實(shí)意義。
參考文獻(xiàn)
[1]陳杰,TETRA數(shù)字集群終端語音功能的開發(fā),北京交通大學(xué)圖書館,北京交通大學(xué),2007:2-3
[2]3GPP-TS-27.007,AT command set for User Equipment (UE)[S]