基于RFID技术开发装配式构件管理系统

2020-08-12 10:54
山西建筑 2020年16期
关键词:服务器端装配式构件

范 高 杰

(深圳市华阳国际工程设计股份有限公司,广东 深圳 518045)

1 概述

RFID(Radio Frequency Identification)即无线射频识别技术,通过无线射频方式进行非接触双向数据通信,利用无线射频方式对记录媒体进行读写,从而实现识别目标和数据交换[1]。与日常生活中常见的二维码相比,RFID标签具有可写的优势,即RFID标签可以独立储存数据。RFID读写设备通常为手持式设备,国内目前应用较多的是采用运行Android系统的手机集成RFID读写器的方式,实现对RFID标签的读写。Autodesk Revit是建筑结构设计中的常用设计软件,Revit软件具有强大的建筑、结构、机电全专业设计功能,能够精确地设计和建造高效的建筑、结构、机电等各专业模型,并支持各专业间协同工作。同时Revit软件提供了丰富的二次开发接口(RevitAPI),通过API接口,用户可以对Revit软件的功能进行扩充[2]。

本文实现的装配式构件管理系统开发分为两个部分:PC端以C#作为开发语言,通过对Revit软件进行二次开发,实现了将Revit软件作为管理系统的服务端的功能;RFID读写设备,以Java作为开发语言,通过RFID读写开发包,基于Android系统开发了移动端APP,完成RFID标签的读写,并与Revit软件服务器端进行数据交互,从而实现对Revit模型的远程访问。

移动端APP系统界面见图1。系统流程图见图2。

2 Revit开发

Autode Revit软件允许用户通过应用程序编程接口(Application Programming Interface,API)对Revit中的模型进行信息读写,开发人员可通过任何与Microsoft.NET Framework兼容的语言完全访问Revit API[3]。

具体到装配式构件管理系统,需要解决2个主要问题:

1)将Revit软件作为服务器端,客户端能够通过远程访问的方式,对Revit模型中数据进行读写;

2)Revit能够根据客户端的查询指令,高亮显示被查询构件,并展示被查询构件的属性信息。

本文以C#为例,对上述问题的解决方案如下:

1)利用RevitAPI中的IExternalApplication接口中OnStartup函数,在Revit软件启动过程中加载服务器端插件,再通过在插件中注册自定义命令,在命令中实现基于Revit模型的服务启动和终止[4]。注册命令主要代码如下:

PushButton pushButtonRead =

pannelReadWrite.AddItem(new

PushButtonData("pushButtonDataRead", "启动服务", AddInPath,

"AddIn_RFIDSever.CmdRFIDSeverQuery")) as PushButton;

pushButtonRead.LargeImage = new

BitmapImage(new

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

pushButtonRead.ToolTip = "启动服务";

启动监听服务主要代码如下:

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("服务器已就绪,

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

}

2)Revit提供了注册空闲事件的机制,服务端通过解析客户端的指令,根据编号过滤出需要查询的构件Id,加入到Revit的选择集,实现构件的自动高亮选中,注册空闲事件主要代码如下:

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开发

移动端开发主要分为三部分:APP界面开发、RFID标签读写、网络数据交互。APP交互界面利用Android系统SDK开发包完成。RFID标签读写通过移动手持设备硬件服务商提供的二次开发包完成。与服务器的数据交互通过Json数据包完成。

1)交互主界面从Activity类派生,服务器设定、运输日期设定、生产日期设定、查询等子界面从AppCompatActivity派生,通过重载onCreate(Bundle savedInstanceState)实现界面布局、UI交互。

2)将硬件服务商提供的RFID标签读写开发包导入到开发环境,通过开发包里的接口实现对RFID标签的读写,设备初始化主要代码如下:

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)与服务器端数据交互中读取Json数据主要代码如下:

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 工程案例

以某装配式轻钢住宅为例,系统的主要工作流程如下:

1)Revit中启动服务端;2)移动端设置RFID标签中的相关信息,并更新Revit中的模型信息,如图3所示;3)移动端通过扫描RFID标签,查询关键信息,并在Revit中高亮显示相关构件及其属性信息,如图4所示。工程实例表明,系统能够实现对RFID标签的读写操作,并且能够根据移动端的查询指令,和Revit模型进行数据交互。

5 结语

本文采用RFID与Revit相结合的方式,详细介绍了装配式构件管理系统的开发流程,通过该系统能够实现对装配式建筑构件全生命周期中的精细化管理,对同类型的工程项目具有借鉴意义。

猜你喜欢
服务器端装配式构件
装配式建筑设计中BIM技术的应用
钢筋混凝土构件裂缝控制
装配式EPC总承包项目管理
装配式建筑EPC总承包管理模式研究
装修一体化装配式建造技术研究
Linux环境下基于Socket的数据传输软件设计
基于Qt的安全即时通讯软件服务器端设计
基于Qt的网络聊天软件服务器端设计
基于构件的软件工程技术与理论方法探讨
基于C/S架构的嵌入式监控组态外设扩展机制研究与应用