• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      一種無(wú)線(xiàn)通信設(shè)備信號(hào)快速跟蹤方法

      2018-06-02 08:50:48梁曉雷
      電腦知識(shí)與技術(shù) 2018年10期

      梁曉雷

      摘要:該方法程序通過(guò)C#網(wǎng)絡(luò)編程實(shí)現(xiàn)。通過(guò)加入組播組,接收組播信息,確定信道狀態(tài)并讀取設(shè)備分配頻率值,經(jīng)由該頻率值設(shè)置頻譜模塊中心頻率,采用自動(dòng)跟蹤或手動(dòng)跟蹤方式,將設(shè)備工作信號(hào)置于頻譜中心,從而實(shí)現(xiàn)信號(hào)快速跟蹤。

      關(guān)鍵詞:組播;頻譜模塊;信號(hào)跟蹤;C#

      中圖分類(lèi)號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2018)10-0031-02

      新型通信裝備,普遍采用網(wǎng)絡(luò)接口集中控制,通過(guò)組播方式定時(shí)播發(fā)狀態(tài)信息,通過(guò)捕獲狀態(tài)信息,可以明確了解設(shè)備工作狀態(tài),通過(guò)單播方式控制設(shè)備工作狀態(tài),從而達(dá)成通信。

      本裝置采用捕獲狀態(tài)信息,獲取頻率參數(shù),通過(guò)頻率參數(shù)設(shè)置頻譜模塊中心頻率值,將信號(hào)頻譜置于中心位置觀察,判斷信號(hào)質(zhì)量,達(dá)到檢測(cè)信號(hào)的目的。

      1 基本原理

      多臺(tái)調(diào)制解調(diào)器的控制網(wǎng)口和頻譜模塊的數(shù)據(jù)網(wǎng)口連接到控制交換機(jī),然后連接到信號(hào)監(jiān)測(cè)計(jì)算機(jī),通過(guò)信號(hào)監(jiān)測(cè)計(jì)算機(jī)程序,捕獲調(diào)制解調(diào)器控制網(wǎng)口的控制信號(hào),解析信號(hào)格式,讀取頻率信息,利用此頻率信息,控制頻譜模塊的中心頻率,將信號(hào)顯示在屏幕中央,以便觀察信號(hào)質(zhì)量。其基本原理如圖1所示。

      2 接收組播狀態(tài)信息并提取頻率信息部分關(guān)鍵代碼

      通過(guò)定義組播地址和組播端口,加入組播組(注意區(qū)分組播地址端口與單播地址端口的區(qū)別),并接收組播信息[1-3]。

      receiveUdpClient = new UdpClient(local_port);

      receiveUdpClient.JoinMulticastGroup(multicast_IP);

      remoteipendpoint = new IPEndPoint(IPAddress.Any, 0);

      Thread threadReceive = new Thread(ReceiveMessage);

      threadReceive.Name = "ReceiveThread";

      threadReceive.Start();

      線(xiàn)程threadReceive中的ReceiveMessage()函數(shù)通過(guò)無(wú)限循環(huán),不斷接收組播信息,并將接收到的十六進(jìn)制信息以ASCII方式顯示出來(lái)。displaytheresult(byte[] test)從接收信息幀中提取信道狀態(tài),顯示在信道狀態(tài)標(biāo)簽中。此處涉及十六進(jìn)制與ASCII碼之間的轉(zhuǎn)換,以及頻率值計(jì)算等幀解析內(nèi)容,是程序的難點(diǎn)之一。

      void displaytheresult(byte[] test)

      {

      if(test[7]==0x93) //幀標(biāo)識(shí)

      { byte tempbyte=test[11]; //信道狀態(tài)

      switch( tempbyte)

      { case 0x20:

      lbl_status_Text="空閑";

      break;

      ……

      }}

      if(test[7]==0x97) //幀標(biāo)識(shí)

      { byte[] tempbytes1=new byte[4]; //取接收頻率字節(jié),從15到18字節(jié)

      tempbytes1[0] =test[15]; //倒序

      tempbytes1[1] =test[16];

      tempbytes1[2] =test[17];

      tempbytes1[3] =test[18];

      uint tempint=System.BitConverter.ToUInt32(tempbytes1,0); //變換為32bits整數(shù)

      tempint-=9750000; //頻率變換

      lbl_ReceiveFrequency_Text = tempint.ToString();

      ((Label)(this.Controls.Find(tempstr22, true)[0])).Text = lbl_ReceiveFrequency_Text;

      …… //發(fā)送頻率,從19到23字節(jié);通信對(duì)方電話(huà)號(hào)碼,從33到36字節(jié)

      }}

      3 操作頻譜模塊部分關(guān)鍵代碼

      第一步、分配頻率組播信息僅僅在分配頻率時(shí)出現(xiàn)一次,因此,頻率信息稍縱即逝,必須持續(xù)監(jiān)聽(tīng)組播信息,獲取分配的頻率值,結(jié)合判斷信道狀態(tài),確定頻率的有效性,如果頻率有效,且獲取了頻率信息,則將頻率值顯示在發(fā)送頻率或接收頻率標(biāo)簽上。

      第二、在接收頻率或發(fā)送頻率標(biāo)簽上點(diǎn)擊鼠標(biāo)或設(shè)置為自動(dòng)跟蹤方式,點(diǎn)擊鼠標(biāo)觸發(fā)事件,該事件將標(biāo)簽頻率值設(shè)置為頻譜模塊中心頻率,頻譜模塊的頻譜中心顯示通信信號(hào),通過(guò)該信號(hào)觀察信號(hào)質(zhì)量,從而實(shí)現(xiàn)發(fā)送頻率或接收頻率的快速跟蹤。

      頻譜模塊控制采用標(biāo)準(zhǔn)SCPI命令[4-5],但是頻譜控件的操作參考資料少,功能強(qiáng)大,編程使用比較復(fù)雜,是本程序的另一個(gè)難點(diǎn)。

      設(shè)置頻譜模塊中心頻率代碼如下。

      private void btn_centerfrequency_setup_Click(object sender, EventArgs e)

      {double center_freq1 = double.Parse(tbox_centerfrequency.Text);

      center_freq1 = center_freq1 * 1000000;

      ulong center_freq2 = Convert.ToUInt64(center_freq1);

      string center_freq3 = center_freq2.ToString();

      string center_freq4 = ":FREQ:CENT " + center_freq3 + '\n';

      if (socket != null)

      {if (socket.Connected)

      {socket.Send(Encoding.ASCII.GetBytes(center_freq4));

      readout_x_data();

      display_x_data();}}}

      設(shè)置頻譜模塊掃寬代碼如下:

      private void btn_span_setup_Click(object sender, EventArgs e)

      {double span1 = double.Parse(tbox_span.Text);

      span1 = span1 * 1000000;

      ulong span2 = Convert.ToUInt64(span1);

      string span3 = span2.ToString();

      string span4 = ":FREQ:SPAN " + span3 + '\n';

      if (socket!=null)

      {if(socket.Connected)

      { socket.Send(Encoding.ASCII.GetBytes(span4));

      readout_x_data();

      display_x_data();}}}

      參考電平的設(shè)置,沒(méi)有采用設(shè)置頻譜模塊參數(shù)的方式實(shí)現(xiàn),而是直接設(shè)置頻譜控件的Y軸范圍,實(shí)現(xiàn)控制參考電平,其代碼如下所示:

      private void btn_reflevel_setup_Click(object sender, EventArgs e)

      {int yreflevel = int.Parse(tbox_ref_level.Text);

      int ybase = yreflevel - yinterval * 10;

      yAxis1.SetMinMax(ybase, yreflevel);}

      循環(huán)讀取頻譜模塊頻譜數(shù)據(jù),解析該數(shù)據(jù)并顯示頻譜圖的代碼如下所示:

      private void timer1_Tick(object sender, EventArgs e)

      {double[] temp_data = new double[601];

      if (socket.Connected)

      { socket.Send(Encoding.ASCII.GetBytes(":TRAC:DATA? TRACE1\n"));

      temp_data = GetData(); //接收頻譜數(shù)據(jù)

      PlotData(temp_data); //繪制頻譜圖

      value_display(); //MARKER動(dòng)態(tài)顯示

      if(peak_enable) //峰值搜索

      {peak_x = getmaxandindex(temp_data);

      xyCursor1.XPosition = peak_x;

      peak_enable = false; }}}

      4 結(jié)論

      該方法程序運(yùn)行結(jié)果如圖2所示。

      該方法程序還具有存儲(chǔ)頻譜圖片功能、頻譜錄像及回放功能、標(biāo)識(shí)讀數(shù)功能、峰值搜索功能等頻譜模塊常用功能,便于在快速跟蹤信號(hào)頻率的基礎(chǔ)上,達(dá)到快速判斷信號(hào)質(zhì)量的目的。該程序?qū)嶋H使用穩(wěn)定可靠,跟蹤快速,達(dá)到任務(wù)目的。

      參考文獻(xiàn):

      [1] 張景峰,鄒澎濤.C#中實(shí)現(xiàn)IP組播的關(guān)鍵技術(shù)[J].電腦開(kāi)發(fā)與應(yīng)用,2007(9):67-68.

      [2] 陳建華.C#中利用UDP協(xié)議實(shí)現(xiàn)信息的廣播和組播[J].軟件,2011(11):4-6.

      [3] 管麗娜.基于C#的IP組播通信應(yīng)用設(shè)計(jì)與實(shí)現(xiàn)[J]. 河北省科學(xué)院學(xué)報(bào),2007(3):12-16.

      [4] 秦凡,韋高.基于VISA庫(kù)及SCPI命令的儀器程控測(cè)量[J].現(xiàn)代電子技術(shù),2011(11):118-120.

      [5] 徐宙,劉連照,程彥杰,等.基于C#的數(shù)字存儲(chǔ)示波器控制軟件設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)量與測(cè)試技術(shù),2016(2):53-55.

      靖州| 麦盖提县| 拜城县| 金川县| 石河子市| 哈尔滨市| 广东省| 长岛县| 靖边县| 普兰店市| 斗六市| 泰兴市| 华坪县| 永清县| 平原县| 北碚区| 岚皋县| 木里| 北京市| 武川县| 东阳市| 宁津县| 临澧县| 宣威市| 张北县| 绥棱县| 桐庐县| 金华市| 泗洪县| 金阳县| 株洲县| 中牟县| 铅山县| 临湘市| 仙居县| 韶关市| 福鼎市| 包头市| 塔河县| 金坛市| 玛纳斯县|