顯示具有 WiFi測試系統開發 標籤的文章。 顯示所有文章
顯示具有 WiFi測試系統開發 標籤的文章。 顯示所有文章

2023年10月24日 星期二

Range versus Rate Automatic Test system with IxChariot

Purpose:
Goal is to Build a repeatable and controllable test method for measuring rate vs. range.
The Performance Measurement of Range versus Rate for Wi-Fi System
Control the console interface of IxChartiot through the GUI written by Csharp and call the tst project file verified and executed by IxChariot. Then use the programmable attenuator to simulate the distance and cooperate with the measurement system (Range Versus Rate Test System) to obtain the attenuation The corresponding data of value (distance) and throughput are saved into a csv file to facilitate data analysis.
經由Csharp所寫的GUI來控制IxChartiot的console介面並呼叫由IxChariot所驗證和執行過的tst專案檔. 再以可程式衰減器模擬距離並配合量測系統(Range Versus Rate Test System),進而得到衰減值(距離)和Throughput之對應資料存成csv檔案以利分析資料. 

覆蓋能力測試(Range Versus Rate Test)
RvR(Range versus Rate), 以可程式衰減器模擬距離並配合量測系統,進而得到衰減值(距離)和Throughput之對應資料

環境架構圖(Environment architecture diagram):

操作畫面:

Path1: Conductive Wireless Throughput Test

Server PC LAN Card<-> AP LAN Port <-> conductive cable <-> Programmable Attenuator<->Client PC WLAN Card

Test Data



Fundamental:

之前相關文章:

c# Ixchariot throughput 測試 

WIFI RvO TEST TOOL FROM C#

Vaunix DigitalAttenuator control tool

IxChariot

IxChariot is the industry's leading pre-deployment and live network performance testing tools and application assessment tool.
IxChariot console is a control platform that can be anywhere on the network, as long as the IP is reachable and can be contacted with Endpoint 1. What needs to be tested and evaluated is the point-to-point performance between Endpoint 1 and 2.
IxChariot可在部署前到部署後,即時評估複雜網路的效能.
IxChariot console 是控制平臺,可以在網路中的任何地方,只要IP可到達,和Endpoint 1之間能夠聯繫上即可。所要測試評估的就是Endpoint 1 和 2 之間的點到點的性能。

YouTubeDemo:

2023年3月13日 星期一

c# ping application

Ping 是 dos cmd 網絡實用程式,將訊號透過網絡傳送至另一部電腦,然後另一部電腦再將其訊號傳回。 這種訊號以毫秒(ms) 為量度單位,讓你知悉將數據封包由電腦傳輸至互聯網伺服器後再傳回所需的時間。 此量度值是指電腦與其伺服器之間的延遲。
在這一篇文章中  WIFI RvO TEST TOOL FROM C# 用到了ping的功能去察看跟DUT_AP的連線情況
圖一: Ping Function

public bool Ping(string nameOrAddress, string timeout)
    {
        bool pingable = false;
        int pingcnt = 0;

        try
        {
            string pingrst;
            Process p = new Process();
            p.StartInfo.FileName = "C:\\Windows\\System32\\cmd.exe";
            p.StartInfo.UseShellExecute = false;
            p.StartInfo.RedirectStandardInput = true;
            p.StartInfo.RedirectStandardOutput = true;
            p.StartInfo.RedirectStandardError = true;
            p.StartInfo.CreateNoWindow = true;
            p.Start();
            p.StandardInput.WriteLine("ping -n 6 " + nameOrAddress + " -w " + timeout);
            p.StandardInput.WriteLine("exit");

            CommonData.pFindStr.Source = p.StandardOutput.ReadToEnd();

            if (CommonData.pFindStr.Source.IndexOf("TTL=") != -1)
            {
                pingcnt = SubstringCount(CommonData.pFindStr.Source, "TTL=");
                if (pingcnt > 2)
                {
                    CommonData.WriteMessage(CommonData.richtextbox, DateTime.Now.ToString() + CommonData.pFindStr.Source, "", Color.Blue, Color.Green);
                    pingrst = "連接";
                    CommonData.WriteMessage(CommonData.richtextbox, pingrst, pingcnt.ToString(), Color.Blue, Color.Green);
                    pingable = true;
                }
            }
            else if (CommonData.pFindStr.Source.IndexOf("Destination host unreachable.") != -1 || CommonData.pFindStr.Source.IndexOf("一般失敗") != -1)
            {
                //一般失敗
                this.GridData.WriteMessage(this.GridData._TPars.richtextbox, DateTime.Now.ToString() + CommonData.pFindStr.Source, "", Color.Blue, Color.Green);
                pingrst = "無法到達目的主機";
                this.GridData.WriteMessage(this.GridData._TPars.richtextbox, pingrst, "", Color.Blue, Color.Green);
            }
            else if (CommonData.pFindStr.Source.IndexOf("Request timed out.") != -1 || CommonData.pFindStr.Source.IndexOf("要求等候逾時") != -1)
            {
                //要求等候逾時
                this.GridData.WriteMessage(this.GridData._TPars.richtextbox, DateTime.Now.ToString() + CommonData.pFindStr.Source, "", Color.Blue, Color.Green);
                pingrst = "超時";
                this.GridData.WriteMessage(this.GridData._TPars.richtextbox, pingrst, "", Color.Blue, Color.Green);
            }
            else if (CommonData.pFindStr.Source.IndexOf("Unknown host") != -1)
            {
                this.GridData.WriteMessage(this.GridData._TPars.richtextbox, DateTime.Now.ToString() + CommonData.pFindStr.Source, "", Color.Blue, Color.Green);
                pingrst = "無法解析主機";
                this.GridData.WriteMessage(this.GridData._TPars.richtextbox, pingrst, "", Color.Blue, Color.Green);
            }
            p.Close();
        }
        catch (Exception e)
        {
            CommonData.WriteMessage(CommonData.richtextbox, e.Message, "", Color.Red, Color.Green);
        }
        return pingable;
    }

2023年3月2日 星期四

WIFI RvO TEST TOOL FROM C#

繼上篇c# Ixchariot throughput 測試文章後, 整合整個測試環境構成一個包含角度, 用衰減器

(LDA-908V 200~8000MHz SMA 90dB,0.1dB/Step USB Digital Attenuator)模擬距離的W-Fi測試系統

RvR(Range versus Rate), 以可程式衰減器模擬距離並配合量測系統,進而得到衰減值(距離)和Throughput之對應資料

RvO(Rate versus Orientation)以程式衰減器模擬距離並搭配轉檯,配合量測系統,進而得到衰減值(距離)及待測樣品角度對Throughput之對應資料

The Performance Measurement of Range versus Rate and Rate versus Orientation for Wi-Fi System

呈現待測物在各角度及不同衰減值(不同距離)Wi-Fi傳輸效能的表現.
圖一: 測試PC, 可程式衰減器, 隔離箱
圖二: 側面介面接口

待測物在不同角度的傳輸結果,也就是說,各角度涵蓋面越大,則代表待測物較不受到因不同擺放位置而影響無線網路傳輸效能。
圖三:隔離箱內部待測物, 轉台及陪測天線


測試程式規劃:
衰減器:可控制四個衰減器.依照start衰減值開始每個step衰減值end衰減值為一個Step角度迴圈
旋轉角度:start, end, step. 依照start角度開始, 每個step角度執行衰減值一迴圈到end角度

圖四: 測試角度, 衰減值設定
圖五:測試Tool執行畫面
圖六: RX測試數據雷達圖

圖七: TX測試數據雷達圖



2023年2月14日 星期二

Netsh的網卡Enable與Disable

在上一篇網卡的Enable與Disable方法中, 在Intel Wi-Fi 6 AX200 160MHz的網卡上控制會有問題.

所以就試著用Netsh 去控制, 結果很幸運可以動作

圖一: 手動測試Netsh
用C# 寫的函式 
public void Enable(string interfaceName)
{
        try
        {
            var process = new System.Diagnostics.Process
            {
                StartInfo = new System.Diagnostics.ProcessStartInfo
                {
                    FileName = "C:\\Windows\\System32\\netsh.exe",
                    Arguments = "interface set interface \"" + interfaceName + "\" enable",
                    UseShellExecute = false,
                    RedirectStandardOutput = true,
                    CreateNoWindow = true
                }
            };

            process.Start();
            process.WaitForExit();
        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message);
        }
}

public void Disable(string interfaceName)
{
        try
        {
            var process = new System.Diagnostics.Process
            {
                StartInfo = new System.Diagnostics.ProcessStartInfo
                {
                    FileName = "C:\\Windows\\System32\\netsh.exe",
                    Arguments = "interface set interface \"" + interfaceName + "\" disable",
                    UseShellExecute = false,
                    RedirectStandardOutput = true,
                    CreateNoWindow = true
                }
            };

            process.Start();
            process.WaitForExit();
        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message);
        }
}

2023年1月24日 星期二

網卡的Enable與Disable

如何用C#撰寫程式來停用或啟用指定網路卡
在這篇c# Ixchariot throughput 測試文章中加入一選項:  啟用與停用指定網卡
找到最簡單尋找到網卡名稱的方式:Netsh位置是在 C:\Windows\System32
Netsh 是命令列指令碼處理公用程式,讓您顯示或修改目前執行中電腦的網路設定. Netsh 命令可經由在netsh 提示字元鍵入命令來執行,而且可以在批次檔或指令碼中使用.
例如我NB上無線網卡

所下的指令: netsh wlan show interface
呈現出如下
系統上有 1 個介面:

    名稱                   : Wi-Fi
    描述            : MediaTek Wi-Fi 6 MT7921 Wireless LAN Card
    GUID                   : e406f59a-28aa-42ac-96f7-32243641e670
    實體位址       : 48:e7:da:ac:92:5d
    介面類型         : 主介面
    狀態                  : 連線
    SSID                   : ras_2.4
    BSSID                  : 90:8d:78:66:db:0c
    網路類型               : 基礎結構
    無線電波類型           : 802.11n
    驗證                   : WPA2-Personal
    加密                 : CCMP
    連線模式        : 自動連線
    頻帶                   : 2.4 GHz
    通道                : 8
    接收速率 (Mbps)        : 144.4
    傳輸速率 (Mbps)        : 144.4
    訊號                   : 83%
    設定檔                 : ras_2.4

    主控網路狀態  : 無法使用

再利用網路搜尋到的文章所得到以下函式組合成所需功能
public void NetWorkList()
public ManagementObject NetWork(string networkname)
public bool DisableNetWork(ManagementObject network)
public bool EnableNetWork(ManagementObject network)






2022年3月6日 星期日

產品自動化測試工程人員工作技能

最近就業博覽會又開始了所以寫一些本身從事這工作的建議給想從事產品測試工作的人! 
首先一間公司的產品要問市銷售 
1. 要從業務面的規劃與客戶需求來設計公司的產品 
2. 研發設計 
3. 生產製造 
4. 品保維修 
 所以在產品測試人員就位於3. 生產製造的環節上 
而想接觸這一些工作的人需要有哪一些基本的技能呢? 
最重要的我覺得是興趣因為有一些公司會引進新血從頭訓練 
所以若沒興趣工作起來可能會有倦怠感 
若想多爭取一些薪資空間就必須要具備一些軟硬體的技能 
硬體方面要會 
1. 看懂線路圖如Orcad一些繪製電路圖的軟體都可 跟零件的datasheet
2. 控制板的應用例如:利用arduino或樹莓派做治具控制 
3. 儀器操作:電源供應器 示波器 三用電表 
軟體方面:至少要會一種可以規劃GUI的程式語言如c# VC VB python等等

2020年7月31日 星期五

IQxel與C#的學習

一. 前提
      最近為了測試MTK 的MT7915又重新將IQ的測試儀器學習了一遍!!
用到的儀器是 IQxel 比之前用的IQ2010的好處是IQxel支援了 SCPI的指令了!! 這真是太棒了~~
以後IQ儀器若都有支援就開發這一次就可以全部都可以控制!
首先先以IQ的VSG跟VSA做自我儀器測試與控制的議題!!
架構為下圖:
配了一台頻譜來確定VSG打出來的訊號,用功率分配器來分接!



二. 儀器簡介

IQxel是litepoint公司推出的一款功能強大的無線產品測試儀,可用於WLAN SISO(包括802.11b/g/n/ac),WLAN MOIO , Bluetooth的無線產品測試儀。IQxel是一台內嵌式的測試儀器,他不含有顯示器,我們只需要使用普通的網線連接我們的PC,用瀏覽器打開相應的網址http://192.168.100.254(默認出廠IP位址)就可以用我們的PC控制儀器進行相應射頻的指標測試,我們也可以通過儀器接一個顯示器查看其IP位址。使用標準的Gigabit乙太網路連線,內建作業系統的獨立式網路圖形使用者介面與SCPI相容的控制指令.

R&S的FSV頻譜也可以用TCPIP的方式控制, 所以接一台switch就可以同時去控制兩台儀器了.

三. 軟體架構

以C#來做開發, 先把IQxel跟SA的TCPIP控制利用NI的VISA寫成模組!!

, 再來就規劃儀器設定頁面, 頻譜的設定跟 IQ的設定.

在IQ的模組上,規劃 RF port1 為VSG, RF2為VSA, 用程式介面先將流程順序寫出, 爾後再來設計GUI介面

VSG打出的wave form為IQxel機子本身的固定 wave form如下:
命名意義:WIFI_AC_BW20_SS2_MCS2_BCC_Fs80M.iqvsg
wifi, 802.11ac, BandWidth 20MHz, Spatial Streams2, MCS2 (modulation and coding scheme), BCC2(Binary convolutional coding), Fs80M(Frame Sample Rate)  參考網站1, 參考網站2
下圖為在R&S的頻譜抓到的數據所繪製的圖型!
下圖為在IQxel上讀取到的Spectrm的資料所繪製的圖型

目前為止將 IQxel的C#控制與資料讀取 的基本功能模組 已建立,  下篇來寫 MT7915的測試!!