国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于RFID技術(shù)開發(fā)裝配式構(gòu)件管理系統(tǒng)

2020-08-12 10:54:00
山西建筑 2020年16期
關(guān)鍵詞:服務(wù)器端裝配式標(biāo)簽

范 高 杰

(深圳市華陽國際工程設(shè)計(jì)股份有限公司,廣東 深圳 518045)

1 概述

RFID(Radio Frequency Identification)即無線射頻識別技術(shù),通過無線射頻方式進(jìn)行非接觸雙向數(shù)據(jù)通信,利用無線射頻方式對記錄媒體進(jìn)行讀寫,從而實(shí)現(xiàn)識別目標(biāo)和數(shù)據(jù)交換[1]。與日常生活中常見的二維碼相比,RFID標(biāo)簽具有可寫的優(yōu)勢,即RFID標(biāo)簽可以獨(dú)立儲存數(shù)據(jù)。RFID讀寫設(shè)備通常為手持式設(shè)備,國內(nèi)目前應(yīng)用較多的是采用運(yùn)行Android系統(tǒng)的手機(jī)集成RFID讀寫器的方式,實(shí)現(xiàn)對RFID標(biāo)簽的讀寫。Autodesk Revit是建筑結(jié)構(gòu)設(shè)計(jì)中的常用設(shè)計(jì)軟件,Revit軟件具有強(qiáng)大的建筑、結(jié)構(gòu)、機(jī)電全專業(yè)設(shè)計(jì)功能,能夠精確地設(shè)計(jì)和建造高效的建筑、結(jié)構(gòu)、機(jī)電等各專業(yè)模型,并支持各專業(yè)間協(xié)同工作。同時Revit軟件提供了豐富的二次開發(fā)接口(RevitAPI),通過API接口,用戶可以對Revit軟件的功能進(jìn)行擴(kuò)充[2]。

本文實(shí)現(xiàn)的裝配式構(gòu)件管理系統(tǒng)開發(fā)分為兩個部分:PC端以C#作為開發(fā)語言,通過對Revit軟件進(jìn)行二次開發(fā),實(shí)現(xiàn)了將Revit軟件作為管理系統(tǒng)的服務(wù)端的功能;RFID讀寫設(shè)備,以Java作為開發(fā)語言,通過RFID讀寫開發(fā)包,基于Android系統(tǒng)開發(fā)了移動端APP,完成RFID標(biāo)簽的讀寫,并與Revit軟件服務(wù)器端進(jìn)行數(shù)據(jù)交互,從而實(shí)現(xiàn)對Revit模型的遠(yuǎn)程訪問。

移動端APP系統(tǒng)界面見圖1。系統(tǒng)流程圖見圖2。

2 Revit開發(fā)

Autode Revit軟件允許用戶通過應(yīng)用程序編程接口(Application Programming Interface,API)對Revit中的模型進(jìn)行信息讀寫,開發(fā)人員可通過任何與Microsoft.NET Framework兼容的語言完全訪問Revit API[3]。

具體到裝配式構(gòu)件管理系統(tǒng),需要解決2個主要問題:

1)將Revit軟件作為服務(wù)器端,客戶端能夠通過遠(yuǎn)程訪問的方式,對Revit模型中數(shù)據(jù)進(jìn)行讀寫;

2)Revit能夠根據(jù)客戶端的查詢指令,高亮顯示被查詢構(gòu)件,并展示被查詢構(gòu)件的屬性信息。

本文以C#為例,對上述問題的解決方案如下:

1)利用RevitAPI中的IExternalApplication接口中OnStartup函數(shù),在Revit軟件啟動過程中加載服務(wù)器端插件,再通過在插件中注冊自定義命令,在命令中實(shí)現(xiàn)基于Revit模型的服務(wù)啟動和終止[4]。注冊命令主要代碼如下:

PushButton pushButtonRead =

pannelReadWrite.AddItem(new

PushButtonData("pushButtonDataRead", "啟動服務(wù)", AddInPath,

"AddIn_RFIDSever.CmdRFIDSeverQuery")) as PushButton;

pushButtonRead.LargeImage = new

BitmapImage(new

Uri(Path.Combine(ButtonIconsFolder, "Query.png"), UriKind.Absolute));

pushButtonRead.ToolTip = "啟動服務(wù)";

啟動監(jiān)聽服務(wù)主要代碼如下:

public void Start(){

var socketThread = new Thread(() =>{

Socket socket = new

Socket(AddressFamily.InterNetwork,

SocketType.Stream, ProtocolType.Tcp);

IPAddress ip =

IPAddress.Parse("192.168.1.35");

IPEndPoint iep = new

IPEndPoint(IPAddress.Any, 8045);

socket.Bind(iep);

socket.Listen(6);

socket.BeginAccept(new

AsyncCallback(Accept), socket);});

socketThread.Start();

Console.WriteLine("服務(wù)器已就緒,

IP:192.168.1.35,端口號:8045 ");

}

2)Revit提供了注冊空閑事件的機(jī)制,服務(wù)端通過解析客戶端的指令,根據(jù)編號過濾出需要查詢的構(gòu)件Id,加入到Revit的選擇集,實(shí)現(xiàn)構(gòu)件的自動高亮選中,注冊空閑事件主要代碼如下:

void SubscribeToIdling(UIApplication uiapp){

if (m_hIdling == null){

m_hIdling = new

EventHandler(IdlingHandler);

uiapp.Idling += m_hIdling;

}

}

加入選擇集主要代碼如下:

void addSelection(ElementId id){

Selection selection =

uiApp.ActiveUIDocument.Selection;

List aryId = new

List();

aryId.Add(id);

selection.SetElementIds(nullListId);

}

3 Android開發(fā)

移動端開發(fā)主要分為三部分:APP界面開發(fā)、RFID標(biāo)簽讀寫、網(wǎng)絡(luò)數(shù)據(jù)交互。APP交互界面利用Android系統(tǒng)SDK開發(fā)包完成。RFID標(biāo)簽讀寫通過移動手持設(shè)備硬件服務(wù)商提供的二次開發(fā)包完成。與服務(wù)器的數(shù)據(jù)交互通過Json數(shù)據(jù)包完成。

1)交互主界面從Activity類派生,服務(wù)器設(shè)定、運(yùn)輸日期設(shè)定、生產(chǎn)日期設(shè)定、查詢等子界面從AppCompatActivity派生,通過重載onCreate(Bundle savedInstanceState)實(shí)現(xiàn)界面布局、UI交互。

2)將硬件服務(wù)商提供的RFID標(biāo)簽讀寫開發(fā)包導(dǎo)入到開發(fā)環(huán)境,通過開發(fā)包里的接口實(shí)現(xiàn)對RFID標(biāo)簽的讀寫,設(shè)備初始化主要代碼如下:

public void InitUHF() {

android.hardware.uhf.magic.reader.init(C5U);

android.hardware.uhf.magic.reader.Open(C5U);

if

(reader.SetTransmissionPower(1950) != 0x11)

{

reader.SetTransmissionPower(1950);

}

DevBeep.init(App.this);

}

3)與服務(wù)器端數(shù)據(jù)交互中讀取Json數(shù)據(jù)主要代碼如下:

JSONObject getJsonData(){

JSONObject json = new JSONObject();

try{

json.put("Method", "SetInstallDate");

json.put("LabelId",editLabelId.getText().toString

());

json.put("InstallDate",editInstallDate.getText().to

String());

}

catch (JSONException e){

e.printStackTrace();

}

return json;

}

4 工程案例

以某裝配式輕鋼住宅為例,系統(tǒng)的主要工作流程如下:

1)Revit中啟動服務(wù)端;2)移動端設(shè)置RFID標(biāo)簽中的相關(guān)信息,并更新Revit中的模型信息,如圖3所示;3)移動端通過掃描RFID標(biāo)簽,查詢關(guān)鍵信息,并在Revit中高亮顯示相關(guān)構(gòu)件及其屬性信息,如圖4所示。工程實(shí)例表明,系統(tǒng)能夠?qū)崿F(xiàn)對RFID標(biāo)簽的讀寫操作,并且能夠根據(jù)移動端的查詢指令,和Revit模型進(jìn)行數(shù)據(jù)交互。

5 結(jié)語

本文采用RFID與Revit相結(jié)合的方式,詳細(xì)介紹了裝配式構(gòu)件管理系統(tǒng)的開發(fā)流程,通過該系統(tǒng)能夠?qū)崿F(xiàn)對裝配式建筑構(gòu)件全生命周期中的精細(xì)化管理,對同類型的工程項(xiàng)目具有借鑒意義。

猜你喜歡
服務(wù)器端裝配式標(biāo)簽
裝配式建筑設(shè)計(jì)中BIM技術(shù)的應(yīng)用
裝配式EPC總承包項(xiàng)目管理
無懼標(biāo)簽 Alfa Romeo Giulia 200HP
車迷(2018年11期)2018-08-30 03:20:32
關(guān)于裝配式建筑的幾點(diǎn)思考
智能城市(2018年7期)2018-07-10 08:30:00
不害怕撕掉標(biāo)簽的人,都活出了真正的漂亮
海峽姐妹(2018年3期)2018-05-09 08:21:02
淺析異步通信層的架構(gòu)在ASP.NET 程序中的應(yīng)用
成功(2018年10期)2018-03-26 02:56:14
標(biāo)簽化傷害了誰
在Windows中安裝OpenVPN
基于多進(jìn)制查詢樹的多標(biāo)簽識別方法
長沙最大裝配式保障房更加節(jié)能低碳
宝兴县| 东山县| 黄冈市| 临沭县| 平凉市| 民权县| 久治县| 韶山市| 澄城县| 含山县| 道孚县| 乌拉特中旗| 左权县| 通化县| 洪泽县| 双城市| 额济纳旗| 郎溪县| 垦利县| 惠安县| 瓦房店市| 泊头市| 大洼县| 泾源县| 尉氏县| 望奎县| 苍溪县| 西林县| 天台县| 前郭尔| 连江县| 凤翔县| 肥乡县| 昌乐县| 且末县| 阳高县| 萍乡市| 江孜县| 古浪县| 桂平市| 绥芬河市|