久久99国产亚洲高清-久久99国产亚洲高清观看首页-久久99国产亚洲精品观看-久久99国产一区二区-久久99国产一区二区三区-久久99国产综合精品

樹人論文網(wǎng)一個專業(yè)的學(xué)術(shù)咨詢網(wǎng)站!!!
樹人論文網(wǎng)

一種無線通信設(shè)備信號快速跟蹤方法

來源: 樹人論文網(wǎng)發(fā)表時間:2019-02-21
簡要:該方法程序通過C#網(wǎng)絡(luò)編程實(shí)現(xiàn)。通過加入組播組,接收組播信息,確定信道狀態(tài)并讀取設(shè)備分配頻率值,經(jīng)由該頻率值設(shè)置頻譜模塊中心頻率,采用自動跟蹤或手動跟蹤方式,將設(shè)備

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

當(dāng)代通信

  《當(dāng)代通信》是由信息產(chǎn)業(yè)部主管,中國通信企業(yè)協(xié)會主辦,中國電信博物館承辦的通信類綜合刊物。自1994年創(chuàng)刊以來,因其豐富的內(nèi)容、權(quán)威的報道,形成了自己的特色和影響。

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

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

  1 基本原理

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

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

  通過定義組播地址和組播端口,加入組播組(注意區(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();

  線程threadReceive中的ReceiveMessage()函數(shù)通過無限循環(huán),不斷接收組播信息,并將接收到的十六進(jìn)制信息以ASCII方式顯示出來。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)識

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

  switch( tempbyte)

  { case 0x20:

  lbl_status_Text="空閑";

  break;

  ……

  }}

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

  { 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é);通信對方電話號碼,從33到36字節(jié)

  }}

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

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

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

  頻譜模塊控制采用標(biāo)準(zhǔn)SCPI命令[4-5],但是頻譜控件的操作參考資料少,功能強(qiáng)大,編程使用比較復(fù)雜,是本程序的另一個難點(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è)置,沒有采用設(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動態(tài)顯示

  if(peak_enable) //峰值搜索

  {peak_x = getmaxandindex(temp_data);

  xyCursor1.XPosition = peak_x;

  peak_enable = false; }}}

  4 結(jié)論

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

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

  參考文獻(xiàn):

  [1] 張景峰,鄒澎濤.C#中實(shí)現(xiàn)IP組播的關(guān)鍵技術(shù)[J].電腦開發(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é)報,2007(3):12-16.

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

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