RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

MSMQ技術(shù)在高速無線網(wǎng)絡(luò)移動(dòng)解決方案中的應(yīng)用

電子設(shè)計(jì) ? 來源:電子產(chǎn)品世界 ? 作者:尚爾明,王長濤, ? 2021-05-18 16:14 ? 次閱讀

作者:尚爾明,王長濤,于天明 來源:電子產(chǎn)品世界

引言

隨著3G網(wǎng)絡(luò)技術(shù)、市場和政策的不斷成熟,移動(dòng)終端設(shè)備的使用量在急速增加,廣泛應(yīng)用各個(gè)領(lǐng)域。Windows Mobile是微軟為智能移動(dòng)終端設(shè)備開發(fā)的操作系統(tǒng),Windows Mobile將用戶熟悉的桌面Windows體驗(yàn)擴(kuò)展到了移動(dòng)設(shè)備上。Windows Mobile為移動(dòng)終端設(shè)備之間的數(shù)據(jù)交換和信息共享提供了簡單、安全的解決方案。在Windows Mobile平臺上的數(shù)據(jù)通信技術(shù)有Socket、Web Service、MSMQ(微軟消息隊(duì)列技術(shù))。Socket傳送數(shù)據(jù)會(huì)自定義傳送數(shù)據(jù)格式并且服務(wù)端要使用到多線程接收客戶端信息,編程復(fù)雜且不好控制;Web Service編程簡單易控制,但是只可能調(diào)用服務(wù)端的函數(shù)不能實(shí)現(xiàn)服務(wù)端和客戶端相互通信;MSMQ是微軟提供的一種可以遠(yuǎn)程訪問的異步通訊方式,支持轉(zhuǎn)發(fā),支持延時(shí)發(fā)送,并且具有較高安全性,是當(dāng)前Windows Mobile平臺上最可靠的數(shù)據(jù)通信方法。

MSMQ技術(shù)

Message Queue(微軟消息隊(duì)列)是在多個(gè)不同應(yīng)用程序(終端或服務(wù))之間實(shí)現(xiàn)相互通信的一種異步傳輸模式,相互通信的應(yīng)用程序可以分布于同一臺機(jī)器上,也可以分布于相連的網(wǎng)絡(luò)空間中的任一終端。消息是通信的雙方所需要傳遞的信息,它可以是各種對象,如文本、聲音和圖像等。消息最終的實(shí)現(xiàn)方式是由消息傳遞的雙方共同制定的協(xié)議來規(guī)定,這樣做的好處,既對數(shù)據(jù)進(jìn)行了簡單的加密,也可以減輕系統(tǒng)通信的負(fù)擔(dān)。其實(shí)現(xiàn)原理是消息的發(fā)送者把自己想要發(fā)送的信息放入一個(gè)容器中(Message),然后將其保存到一個(gè)系統(tǒng)公用空間的消息隊(duì)列中;本地或者是異地的消息接收程序再從該隊(duì)列中取出發(fā)給它的消息進(jìn)行處理。

由于采用的是異步通信方式,無論是發(fā)送程序還是接收程序都不用等待對方返回成功發(fā)送消息的標(biāo)志,就可以執(zhí)行余下的代碼,因而提高了系統(tǒng)的處理能力。當(dāng)信息傳送過程中,信息發(fā)送機(jī)制具有故障恢復(fù)能力;MSMQ的消息傳遞機(jī)制使得消息通信的雙方具有通過不同的物理平臺進(jìn)行通信的能力。在支持.net技術(shù)的操作系統(tǒng)上利用其提供的MSMQ功能,可以輕松創(chuàng)建或者刪除消息隊(duì)列,發(fā)送或者接收消息,并具有對消息隊(duì)列進(jìn)行管理。消息隊(duì)列是發(fā)送和接收消息的公用存儲(chǔ)空間,它可以存在于內(nèi)存中或者是物理文件中。

系統(tǒng)結(jié)構(gòu)與軟件配置

系統(tǒng)結(jié)構(gòu)

針對客車業(yè)生產(chǎn)現(xiàn)場數(shù)據(jù)采集系統(tǒng)實(shí)例,由于客車生產(chǎn)屬于混合流水生產(chǎn)行業(yè),工序和工藝路線復(fù)雜、人工參與生產(chǎn)多、客車比其他產(chǎn)品體積龐大,所以需要現(xiàn)場人員使用PDA掃描生產(chǎn)現(xiàn)場數(shù)據(jù)和上報(bào)生產(chǎn)進(jìn)度狀況。車間和廠區(qū)范圍大,車間環(huán)境復(fù)雜,整個(gè)網(wǎng)絡(luò)采用無線通信的方式。PDA中裝有Windows Mobile系統(tǒng),在PDA中可以安裝各種應(yīng)用程序,例如條碼掃描、車間物料供需程序和生產(chǎn)現(xiàn)場調(diào)度程序。在PDA上也可以擴(kuò)展外部設(shè)備,例如條碼掃描槍和微型打印機(jī)等。利用PDA的移動(dòng)性和比較強(qiáng)的數(shù)據(jù)處理能力可對現(xiàn)場數(shù)據(jù)進(jìn)行實(shí)時(shí)的采集和整理。將采集的現(xiàn)場數(shù)據(jù)上傳到數(shù)據(jù)采集服務(wù)器、生產(chǎn)追蹤服務(wù)器和生產(chǎn)調(diào)度服務(wù)器。

如圖1所示的系統(tǒng)硬件平臺主要由廠級數(shù)據(jù)中心的服務(wù)器、無線路由器和PDA數(shù)據(jù)采集器構(gòu)成,車間中根據(jù)生產(chǎn)工藝工序配置的多個(gè)PDA數(shù)據(jù)采集器,PDA上的掃描槍可以實(shí)時(shí)的采集現(xiàn)場數(shù)據(jù),PDA的上的處理程序?qū)⒉杉臄?shù)據(jù)進(jìn)行處理,然后通過多層無線路由器AP上傳到廠級數(shù)據(jù)中心服務(wù)器,每個(gè)PDA都有自己獨(dú)立的IP地址,服務(wù)器通過收發(fā)消息對上傳的數(shù)據(jù)進(jìn)行管理和向PDA發(fā)出指令。整個(gè)系統(tǒng)包括服務(wù)器程序和客戶端程序,通過MSMQ技術(shù)實(shí)現(xiàn)PDA與數(shù)據(jù)服務(wù)器的數(shù)據(jù)通信。

系統(tǒng)軟件配置

服務(wù)端配置:服務(wù)端是Windows Server2003操作系統(tǒng),服務(wù)器程序檢查客戶端在線狀態(tài),將在線客戶端信息(包括:客戶端名稱、客戶段IP地址)共享給每個(gè)客戶端。

客戶端:需要設(shè)置服務(wù)器端IP地址,本地客戶端名稱。設(shè)置正確服務(wù)端IP地址、本地客戶端名稱后。通過服務(wù)端獲取在線客戶端信息,指定客戶端后可以接收新消息和發(fā)送消息。

MSMQ技術(shù)在Windows Mobile中的應(yīng)用

在PDA上Windows Mobile操作系統(tǒng)中通過MSMQ技術(shù)實(shí)現(xiàn)數(shù)據(jù)通信,要使用MSMQ開發(fā)消息處理程序,必須在服務(wù)器主機(jī)和客戶端上安裝消息隊(duì)列。消息處理程序主要是消息的發(fā)送和接收,如果要實(shí)現(xiàn)收發(fā)消息,必須引用一個(gè)隊(duì)列,引用的消息隊(duì)列分為公用隊(duì)列和專用隊(duì)列,這兩個(gè)隊(duì)列都存放用戶設(shè)計(jì)的消息。引用消息隊(duì)列后,就可以發(fā)送、接收和閱讀消息了。消息接收服務(wù)位于System.Messaging中,需要在工程中引用System.Messaging.dll文件。具體實(shí)現(xiàn)過程和代碼如下:

引用隊(duì)列

通過路徑、格式名和標(biāo)簽三種方法引用隊(duì)列。例如:通過路徑引用消息隊(duì)列,路徑的形式為 machinenamequeuename。在實(shí)際應(yīng)用中,指向隊(duì)列的路徑必須是唯一的。表1列出用于每種類型的隊(duì)列的路徑信息。

如果是發(fā)送到本機(jī)上,還可以使用“?!贝肀緳C(jī)名稱。具體的引用方法可以在初始化消息隊(duì)列時(shí)設(shè)置,也可以通過設(shè)置消息隊(duì)列的Path屬性來實(shí)現(xiàn)。如果在初始化時(shí)引用消息隊(duì)列,那么消息隊(duì)列必須存在于系統(tǒng)中,否則會(huì)產(chǎn)生錯(cuò)誤。在程序中可以實(shí)現(xiàn)消息隊(duì)列的創(chuàng)建。

在初始化時(shí)引用消息隊(duì)列的代碼如下:

MessageQueue Mq=new MessageQueue(“。\private$\mq”);

通過Path屬性引用消息隊(duì)列的代碼:

MessageQueue Mq=new

MessageQueue();

Mq.Path=”。\private$\mq”;

如果消息隊(duì)列不存在,可以使用 Create方法可在計(jì)算機(jī)上創(chuàng)建隊(duì)列,實(shí)現(xiàn)代碼如下:

System.Messaging.MessageQueue.

Create(@“.private$mq”);

發(fā)送消息

應(yīng)用程序引用消息隊(duì)列后,就可以進(jìn)行發(fā)送和接收消息操作。發(fā)送的消息可以分為簡單消息和復(fù)雜消息,簡單消息類型就是常用的數(shù)據(jù)類型,例如整型、字符串等數(shù)據(jù);復(fù)雜消息的數(shù)據(jù)類型通常對應(yīng)于系統(tǒng)中的復(fù)雜數(shù)據(jù)類型,例如結(jié)構(gòu)體和類對象等。

簡單消息的發(fā)送示例如下:

Mq.Send(1000); //發(fā)送整型數(shù)據(jù)

1000

Mq.Send(“This is a test

message!”); //發(fā)送字符串

復(fù)雜消息的發(fā)送和簡單消息的發(fā)送大同小異,只是發(fā)送時(shí),通常不是直接給出發(fā)送的消息內(nèi)容,而是代表發(fā)送消息內(nèi)容的變量。下面的代碼分別通過消息變量和復(fù)雜數(shù)據(jù)類型變量發(fā)送一條復(fù)雜消息。

下面的代碼中發(fā)送的消息由消息變量表示:

Message Msg;

Msg=new Message(“A Complex

Message!”);

Msg.Label=”This is the label”;

Msg.Priority=MessagePriority.High; Mq.Send(Msg);

下面的代碼中發(fā)送的消息由復(fù)雜數(shù)據(jù)類型變量表示,Customer為自定義的一個(gè)類:

Customer customer = new

Customer();

customer.LastName = “Copernicus”;

customer.FirstName = “Nicolaus”;

Mq.Send(customer);

接收消息

接收消息相比發(fā)送消息要復(fù)雜一些。接收消息有兩種方式:通過Receive方法接收消息同時(shí)永久性地從隊(duì)列中刪除消息;通過Peek 方法從隊(duì)列中取出消息而不從隊(duì)列中移除該消息。如果知道消息的標(biāo)識符(ID),還可以通過ReceiveById方法和PeekById方法完成相應(yīng)的接收消息操作。

接收消息的代碼如下:

Mq.Receive(); //或

Mq.ReceiveById(ID);

Mq.Peek(); // 或

Mq.PeekById(ID);

閱讀消息

只有通過根據(jù)通信雙方的約定將接收到的消息中信息提取出來,傳遞的消息才有價(jià)值,因此接收到消息以后還必須能讀出消息中包含的信息。在發(fā)送端的應(yīng)用程序發(fā)送的消息和消息隊(duì)列中的傳輸消息的格式不同,因而發(fā)送端的應(yīng)用程序發(fā)送出去的消息經(jīng)過序列化以后才發(fā)送給了消息隊(duì)列,這一過程由系統(tǒng)自動(dòng)完成了,程序開發(fā)人員不必為此編寫代碼,然而在接收到消息后就需要對接收的消息進(jìn)行反序列化。

消息的反序列化可以通過 Visual Studio和.NET Framework附帶的三個(gè)預(yù)定義的格式化程序來完成:XMLMessageFormatter對象(MessageQueue組件的默認(rèn)格式化程序設(shè)置)、BinaryMessageFormatter對象、ActiveXMessageFormatter對象。由于后兩者格式化后的消息通常不能被用戶閱讀,所以經(jīng)常采用XMLMessageFormatter對象對接收的消息進(jìn)行反序列化。

使用 XMLMessageFormatter對象反序列化消息的代碼如下:

string[] types = { “System.String” };

((XmlMessageFormatter)mq.Formatter).TargetTypeNames = types;

Message m=mq.Receive(new

TimeSpan(0,0,3));

將接收到的消息傳送給消息變量以后,通過消息變量m的Body屬性就可以讀出消息了:

MessageBox.Show((string)m.Body);

關(guān)閉消息隊(duì)列

關(guān)閉消息隊(duì)列可以通過Close函數(shù)來實(shí)現(xiàn),代碼如下:

Mq.Close();

結(jié)語

基于Windows Mobile平臺的高速無線網(wǎng)絡(luò)為各行業(yè)客戶提供更加可靠便捷的移動(dòng)解決方案。消息隊(duì)列技術(shù)保證移動(dòng)設(shè)備與數(shù)據(jù)中心之間進(jìn)行良好的通信。通過對 Windows Mobile平臺上,發(fā)送、接收和閱讀消息工作過程的講解說明消息隊(duì)列技術(shù)簡單實(shí)用?;贛SMQ技術(shù)的Windows Mobile平臺通信系統(tǒng)已經(jīng)在國內(nèi)某大型客車企業(yè)生產(chǎn)追蹤系統(tǒng)中得到應(yīng)用。

責(zé)任編輯:gt

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 無線網(wǎng)
    +關(guān)注

    關(guān)注

    0

    文章

    102

    瀏覽量

    21220
  • WINDOWS
    +關(guān)注

    關(guān)注

    3

    文章

    3541

    瀏覽量

    88622
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    6801

    瀏覽量

    123283
收藏 人收藏

    評論

    相關(guān)推薦

    [原創(chuàng)]校園無線網(wǎng)絡(luò)解決方案

    要在一個(gè)多媒體網(wǎng)絡(luò)教室里增加學(xué)生,那么寰龍創(chuàng)新公司的無線網(wǎng)絡(luò)解決方案就能夠很方便的解決這些問題。有了無線網(wǎng)絡(luò),無須用網(wǎng)線把PC機(jī)連接到每一個(gè)以太網(wǎng)端口,所以你
    發(fā)表于 12-11 12:32

    [原創(chuàng)]寰龍創(chuàng)新無線網(wǎng)絡(luò)解決方案

      寰龍創(chuàng)新無線網(wǎng)絡(luò)解決方案     由于無線射頻技術(shù)無需布線、沒有線纜的束縛,可在不受地理?xiàng)l件限制的情況下,組建計(jì)算機(jī)
    發(fā)表于 12-29 15:44

    基于CC2430的ZigBee無線網(wǎng)絡(luò)節(jié)點(diǎn)設(shè)計(jì)

    距離也較理想?!娟P(guān)鍵詞】:CC;;ZigBee;;無線網(wǎng)絡(luò);;節(jié)點(diǎn);;功率放大器【DOI】:CNKI:SUN:GWDZ.0.2010-02-009【正文快照】:目前GSM和3G等無線移動(dòng)通信
    發(fā)表于 04-24 09:29

    單片機(jī)和工業(yè)無線網(wǎng)絡(luò)

    如同今天的許多通用單片機(jī)(MCU)已經(jīng)的把USB、CAN和以太網(wǎng)作為標(biāo)準(zhǔn)外調(diào)集成芯片內(nèi)部一樣,越來越多的無線網(wǎng)絡(luò)芯片和無線網(wǎng)絡(luò)解決方案
    發(fā)表于 03-04 13:21

    無線網(wǎng)絡(luò)塑新生產(chǎn)模式

    的完整性,同時(shí)還能保證通過無線定位技術(shù),把物料車送到它應(yīng)該去的加工車間,幫助生產(chǎn)車間實(shí)現(xiàn)移動(dòng)化作業(yè)。 目前,已經(jīng)有一些大型企業(yè)開始嘗試建設(shè)無線工廠,并依托
    發(fā)表于 11-14 09:32

    無線網(wǎng)絡(luò)

    使用過程,可以根據(jù)自己的需求,采取靈活的方式,使其更好的為用戶服務(wù)?! ?三)使用范圍廣,可以擴(kuò)展  無線網(wǎng)絡(luò)技術(shù)具備了多種配置方式,所以使用的過程,能夠根據(jù)計(jì)算機(jī)用戶的實(shí)際需要
    發(fā)表于 07-05 11:42

    一種基于Zigbee技術(shù)的家用無線網(wǎng)絡(luò)平臺研究

    研究一種基于Zigbee技術(shù)的家用無線網(wǎng)絡(luò)平臺.分析了Zigbee網(wǎng)絡(luò)協(xié)議,探討了用Zigbee技術(shù)構(gòu)建家用無線網(wǎng)絡(luò)的關(guān)鍵問題對
    發(fā)表于 07-15 06:18

    求實(shí)現(xiàn)無線網(wǎng)絡(luò)AC的軟、硬件解決方案

    物聯(lián)網(wǎng)無線網(wǎng)絡(luò)應(yīng)該是個(gè)核心技術(shù),那么請指導(dǎo)一個(gè)實(shí)現(xiàn)無線網(wǎng)絡(luò)AC的軟、硬件解決方案,要求至少
    發(fā)表于 05-25 04:20

    怎么實(shí)現(xiàn)CDMA無線網(wǎng)絡(luò)防雷接地的設(shè)計(jì)?

    雷擊CDMA無線網(wǎng)絡(luò)的主要途徑是什么?怎么實(shí)現(xiàn)CDMA無線網(wǎng)絡(luò)防直接雷的接地設(shè)計(jì)?怎么實(shí)現(xiàn)CDMA無線網(wǎng)絡(luò)防感應(yīng)雷的接地設(shè)計(jì)?防雷設(shè)計(jì)采取的技術(shù)
    發(fā)表于 05-25 06:27

    分享一款不錯(cuò)的無線網(wǎng)絡(luò)實(shí)現(xiàn)監(jiān)管BITWAVE高速監(jiān)控方案

    分享一款不錯(cuò)的無線網(wǎng)絡(luò)實(shí)現(xiàn)監(jiān)管BITWAVE高速監(jiān)控方案
    發(fā)表于 05-28 06:01

    WIFI無線網(wǎng)絡(luò)技術(shù)有哪些應(yīng)用范圍是什么

    WIFI無線網(wǎng)絡(luò)是什么?WIFI無線網(wǎng)絡(luò)技術(shù)的主要功能是什么?WIFI無線網(wǎng)絡(luò)技術(shù)有哪些應(yīng)用范圍是什么?
    發(fā)表于 11-04 07:19

    GPRS系統(tǒng)無線網(wǎng)絡(luò)

    GPRS系統(tǒng)無線網(wǎng)絡(luò) 摘 要: 本文簡要介紹了GPRS系統(tǒng)無線網(wǎng)絡(luò)的組網(wǎng)、網(wǎng)絡(luò)結(jié)構(gòu),以及無線
    發(fā)表于 08-25 18:37 ?10次下載

    移動(dòng)通信無線網(wǎng)絡(luò)設(shè)計(jì)_部分3

    本書詳細(xì)介紹了移動(dòng)通信無線網(wǎng)絡(luò)的設(shè)計(jì),包含無線通信系統(tǒng)的架構(gòu)、無線網(wǎng)絡(luò)電路設(shè)計(jì)及相關(guān)數(shù)據(jù)傳播
    發(fā)表于 03-15 16:58 ?4次下載

    移動(dòng)通信無線網(wǎng)絡(luò)設(shè)計(jì)_部分2

    本書詳細(xì)介紹了移動(dòng)通信無線網(wǎng)絡(luò)的設(shè)計(jì),包含無線通信系統(tǒng)的架構(gòu)、無線網(wǎng)絡(luò)電路設(shè)計(jì)及相關(guān)數(shù)據(jù)傳播。
    發(fā)表于 03-15 16:05 ?4次下載

    移動(dòng)通信無線網(wǎng)絡(luò)設(shè)計(jì)_部分1

    本書詳細(xì)介紹了移動(dòng)通信無線網(wǎng)絡(luò)的設(shè)計(jì),包含無線通信系統(tǒng)的架構(gòu)、無線網(wǎng)絡(luò)電路設(shè)計(jì)及相關(guān)數(shù)據(jù)傳播。
    發(fā)表于 03-15 16:04 ?3次下載
    RM新时代网站-首页