MT8852B.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
using System.Xml;

namespace MT8852B_Driver
{
public class C_Instr
{
public string sInstr = “”;
public int iGPIBIndex = 0;
public int iGPIBAddr = 0;
}
public enum E_Payload
{
Payload_PRBS9,
Payload_11110000,
Payload_10101010,
Payload_MAX
}
public enum E_Channel
{
CH0 = 0,
CH19,
CH39,
CH_MAX
}
public class TxRxLimitCase
{
public float fPavg_Limit_Max = 0.0f;
public float fPavg_Limit_Min = 0.0f;
public float fPpk_Limit_Max = 0.0f;
public float fPpk_Limit_Min = 0.0f;

    public float fDeltaf1_Avg_Limit_Max = 0.0f;
    public float fDeltaf1_Avg_Limit_Min = 0.0f;

    public float fDeltaf1_Max_Limit_Max = 0.0f;
    public float fDeltaf1_Max_Limit_Min = 0.0f;

    public float fDeltaf2_Avg_Limit_Max = 0.0f;
    public float fDeltaf2_Avg_Limit_Min = 0.0f;

    public float fDeltaf2_Max_Limit_Max = 0.0f;
    public float fDeltaf2_Max_Limit_Min = 0.0f;

    public float fMax_PVe_Offset_Limit = 0.0f;
    public float fMax_NVe_Offset_Limit = 0.0f;
    
    public float fAvg_Offset_Limit_Max = 0.0f;
    public float fAvg_Offset_Limit_Min = 0.0f;

    public float fMax_Drift_Limit = 0.0f;
    
    public float fAvg_Drift_Limit_Max = 0.0f;
    public float fAvg_Drift_Limit_Min = 0.0f;

    public float fDrift_Rate_Limit = 0.0f;
    public float fRx_Limit = 0.0f;
}
public class RxTestCase
{
    //RX
    public bool IsTest_Rx = false;
    public E_Channel channel = E_Channel.CH0;
    public float fPowerLevel = -90;
    public float fLoss = -1.2f;
    public int iPackets = 1000;
    public float fRxLimit = 0.3f;   //30%是OK的.
}
public class TxTestCase
{
    public TxTestCase() {}
    //TX
    //配置的内容
    public string sTestCase = "";
    public E_Channel channel = E_Channel.CH0;
    public float fLoss = 0.0f;
    public int iEUT_Tx_Power = -1;
    public float fFixedOffset = 0.0f;
    public float fCapturePeriod = 0.0f;
    public string sSyncWord = "";
    public E_Payload payload = E_Payload.Payload_PRBS9;
    //下面是不是需要测试的内容
    
    public bool IsTest_Pavg = false;
    public bool IsTest_Ppk = false;
    public bool IsTest_Deltaf1_Max = false;
    public bool IsTest_Deltaf1_Avg = false;
    public bool IsTest_Deltaf2_Max = false;
    public bool IsTest_Deltaf2_Avg = false;
    public bool IsTest_Max_PVe_Offset = false;
    public bool IsTest_Max_NVe_Offset = false;
    public bool IsTest_Avg_Offset = false;
    public bool IsTest_Max_Drift = false;
    public bool IsTest_Avg_Drift = false;
    public bool IsTest_Drift_Rate = false;
    //Limit
    public float fPavg_Max = 0.0f;
    public float fPavg_Min = 0.0f;
    public float fDeltaf1_Max_Max = 0.0f;
    public float fDeltaf1_Max_Min = 0.0f;
    public float fDeltaf1_Avg_Max = 0.0f;
    public float fDeltaf1_Avg_Min = 0.0f;

    public float fDeltaf2_Max_Max = 0.0f;
    public float fDeltaf2_Max_Min = 0.0f;
    public float fDeltaf2_Avg_Max = 0.0f;
    public float fDeltaf2_Avg_Min = 0.0f;

    public float fMax_PVe_Offset_Max = 0.0f;
    public float fMax_PVe_Offset_Min = 0.0f;

    public float fMax_NVe_Offset_Max = 0.0f;
    public float fMax_NVe_Offset_Min = 0.0f;

    public float fAvg_Offset_Max = 0.0f;
    public float fAvg_Offset_Min = 0.0f;

    public float fMax_Drift_Max = 0.0f;
    public float fMax_Drift_Min = 0.0f;

    public float fAvg_Drift_Max = 0.0f;
    public float fAvg_Drift_Min = 0.0f;

    public float fDrift_Rate_Max = 0.0f;
    public float fDrift_Rate_Min = 0.0f;
    
    //public E_Channel Channel{get{ return channel;}set{ channel = value;}}
    //public int IEUT_Tx_Power { get { return iEUT_Tx_Power; } set { fDrift_Rate_Min = value; } }            
    //public float FDrift_Rate_Min{get{ return fDrift_Rate_Min;}set{ fDrift_Rate_Min = value;}}     
}
public partial class MT8852B : BaseClass
{
    InstrBaseClass instr = new InstrBaseClass();
    List<TxTestCase> listTxCase = new List<TxTestCase>();        
    List<RxTestCase> listRxCase = new List<RxTestCase>();
    TxRxLimitCase txrxLimitCase = new TxRxLimitCase();
    
    C_Instr cInstr = new C_Instr();
    
    //#region Bluetooth=>BtInitialize
    public int ConnectInstr(int Board, int Address, int Timeout)
    {
        WriteDebugMsg("ConnectInstr:Start");
        if (!instr.OpenSession(Board, Address, Timeout)) return -1;

        string str = instr.QueryGPIBCmd("*IDN?");
        if (str.IndexOf("MT8852B") < 0)
        {
            WriteDebugMsg("ConnectInstr:*IDN Fail.");
        }
        instr.WriteGPIBCmd("CONT");
        //instr.

        WriteDebugMsg("ConnectInstr:End ");

        instr.SetAttribute(0x3FFF001A, 10000);

        str = instr.QueryGPIBCmd("*IDN?");

        str = instr.QueryGPIBCmd("OPTSTATUS?");

        instr.WriteGPIBCmd("OPMD SCRIPT");

        instr.WriteGPIBCmd("SCPTSEL 3");

        str = instr.QueryGPIBCmd("*OPC?");

        if (str[0] != '1')
        {
            WriteDebugMsg("ConnectInstr:*OPC? Fail.");
            return -1;
        }
        instr.WriteGPIBCmd("SYSCFG EUTRS232,57600");

        instr.WriteGPIBCmd("SYSCFG CONFIG,RANGE,3");
        instr.WriteGPIBCmd("SCPTSEL 3");
        instr.WriteGPIBCmd("SYSCFG EUTRS232,57600");

        instr.WriteGPIBCmd("SYSCFG USBADAPTOR,PORT,A");

        instr.WriteGPIBCmd("SYSCFG EUTHANDSHAKE,RTS/CTS");
        instr.WriteGPIBCmd("SYSCFG CONFIG,RANGE,3");

        str = instr.QueryGPIBCmd("OPTSTATUS?");
        instr.WriteGPIBCmd("LESCPTCFG 3,LEPKTTYPE,BLE,TRUE");

        str = instr.QueryGPIBCmd("SCPTCFG? 1");
        str = instr.QueryGPIBCmd("SCPTCFG? 2");

        for (int i = 3; i < 11; i++)
        {
            str = instr.QueryGPIBCmd("SCPTNM? %d",i);
            str = instr.QueryGPIBCmd("SCPTCFG? %d", i);
            instr.WriteGPIBCmd("SCPTCFG %d,LEOP,OFF",i);
            instr.WriteGPIBCmd("SCPTCFG %d,LEICD,OFF", i);
            instr.WriteGPIBCmd("SCPTCFG %d,LEMI,OFF", i);
            instr.WriteGPIBCmd("SCPTCFG %d,LESS,OFF", i);
            instr.WriteGPIBCmd("SCPTCFG %d,LEPRI,OFF", i);
            instr.WriteGPIBCmd("SCPTCFG %d,LEMP,OFF", i);
            instr.WriteGPIBCmd("SCPTCFG %d,LEPS,OFF", i);
        }            
        return 1;
    }
    //#endregion
    //
    public void LoadTxXmlFile()
    {
        listTxCase.Clear();
        listRxCase.Clear();
        string strTmp = "";
        string strJsonfile = System.Environment.CurrentDirectory + "\\TestSrcipt.xml";
        XmlTextReader xml = new XmlTextReader(strJsonfile);
        xml.WhitespaceHandling = WhitespaceHandling.None;
        
        while (xml.Read())
        {
            TxTestCase mTxTestCase = new TxTestCase();
            RxTestCase mRxTestCase = new RxTestCase();
            
            if (xml.NodeType == XmlNodeType.Element)
            {
                if (xml.Name == "INSTR")
                {
                    cInstr.sInstr = xml.ReadString();
                }
                if (xml.Name == "GPIB_Index")
                {
                    cInstr.iGPIBIndex = Convert.ToInt16(xml.ReadString());
                }
                if (xml.Name == "GPIB_Address")
                {
                    cInstr.iGPIBIndex = Convert.ToInt16(xml.ReadString());
                }
                if (xml.Name == "TestCase1" || xml.Name == "TestCase2" || xml.Name == "TestCase3")
                {
                    mTxTestCase.sTestCase = xml.GetAttribute("Name");
                    strTmp = xml.GetAttribute("Value");
                    List<string> list = new List<string>(strTmp.Split(',')); 
                    if (list[1] == "CH0")
                    {
                        mTxTestCase.channel = E_Channel.CH0;
                    }
                    else if (list[1] == "CH19")
                    {
                        mTxTestCase.channel = E_Channel.CH19;
                    }
                    else if (list[1] == "CH39")
                    {
                        mTxTestCase.channel = E_Channel.CH19;
                    }
                    mTxTestCase.fLoss = Convert.ToSingle(list[2]);

                    if (list[3] == "PRBS9")
                    {
                        mTxTestCase.payload = E_Payload.Payload_PRBS9;
                    }
                    else if (list[3] == "FFHEX")
                    {
                        mTxTestCase.payload = E_Payload.Payload_11110000;
                    }
                    else if (list[3] == "AAHEX")
                    {
                        mTxTestCase.payload = E_Payload.Payload_10101010;
                    }
                    bool bTestRX = false;
                    for (int i = 4; i < list.Count; i++)
                    {
                        if (list[i] == "Ppk")
                        {
                            mTxTestCase.IsTest_Ppk = true;
                        }
                        if (list[i] == "Pavg")
                        {
                            mTxTestCase.IsTest_Pavg = true;
                        }
                        if(list[i] == "RX")
                        {
                            bTestRX = true;
                        }
                    }
                    if (bTestRX)
                    {
                        mRxTestCase.IsTest_Rx = true;
                        if (list[list.Count - 4] == "CH0")
                        {
                            mRxTestCase.channel = E_Channel.CH0;
                        }
                        else if (list[list.Count - 4] == "CH19")
                        {
                            mRxTestCase.channel = E_Channel.CH19;
                        }
                        else if (list[list.Count - 4] == "CH39")
                        {
                            mRxTestCase.channel = E_Channel.CH19;
                        }
                        mRxTestCase.fPowerLevel = Convert.ToSingle(list[list.Count - 3]);
                        mRxTestCase.fLoss = Convert.ToSingle(list[list.Count - 2]);
                        mRxTestCase.iPackets = Convert.ToInt32(list[list.Count - 1]);
                    }
                }
                if (xml.Name == "TestCase4" || xml.Name == "TestCase5" || xml.Name == "TestCase6")
                {
                    mTxTestCase.sTestCase = xml.GetAttribute("Name");
                    strTmp = xml.GetAttribute("Value");
                    List<string> list = new List<string>(strTmp.Split(','));
                    if (list[1] == "CH0")
                    {
                        mTxTestCase.channel = E_Channel.CH0;
                    }
                    else if (list[1] == "CH19")
                    {
                        mTxTestCase.channel = E_Channel.CH19;
                    }
                    else if (list[1] == "CH39")
                    {
                        mTxTestCase.channel = E_Channel.CH19;
                    }
                    mTxTestCase.fLoss = Convert.ToSingle(list[2]);

                    if (list[3] == "PRBS9")
                    {
                        mTxTestCase.payload = E_Payload.Payload_PRBS9;
                    }
                    else if (list[3] == "FFHEX")
                    {
                        mTxTestCase.payload = E_Payload.Payload_11110000;
                    }
                    else if (list[3] == "AAHEX")
                    {
                        mTxTestCase.payload = E_Payload.Payload_10101010;
                    }
                    bool bTestRX = false;
                    for (int i = 4; i < list.Count; i++)
                    {
                        if (list[i] == "Ppk")
                        {
                            mTxTestCase.IsTest_Ppk = true;
                        }
                        if (list[i] == "Pavg")
                        {
                            mTxTestCase.IsTest_Pavg = true;
                        }
                        if (list[i] == "Deltaf1_Max")
                        {
                            mTxTestCase.IsTest_Deltaf1_Max = true;
                        }
                        if (list[i] == "Deltaf1_Avg")
                        {
                            mTxTestCase.IsTest_Deltaf1_Avg = true;
                        }
                    }
                }
                if (xml.Name == "TestCase7" || xml.Name == "TestCase8" || xml.Name == "TestCase9")
                {
                    mTxTestCase.sTestCase = xml.GetAttribute("Name");
                    strTmp = xml.GetAttribute("Value");
                    List<string> list = new List<string>(strTmp.Split(','));
                    if (list[1] == "CH0")
                    {
                        mTxTestCase.channel = E_Channel.CH0;
                    }
                    else if (list[1] == "CH19")
                    {
                        mTxTestCase.channel = E_Channel.CH19;
                    }
                    else if (list[1] == "CH39")
                    {
                        mTxTestCase.channel = E_Channel.CH19;
                    }
                    mTxTestCase.fLoss = Convert.ToSingle(list[2]);

                    if (list[3] == "PRBS9")
                    {
                        mTxTestCase.payload = E_Payload.Payload_PRBS9;
                    }
                    else if (list[3] == "FFHEX")
                    {
                        mTxTestCase.payload = E_Payload.Payload_11110000;
                    }
                    else if (list[3] == "AAHEX")
                    {
                        mTxTestCase.payload = E_Payload.Payload_10101010;
                    }
                    for (int i = 4; i < list.Count; i++)
                    {
                        if (list[i] == "Ppk")
                        {
                            mTxTestCase.IsTest_Ppk = true;
                        }
                        if (list[i] == "Pavg")
                        {
                            mTxTestCase.IsTest_Pavg = true;
                        }
                        if (list[i] == "Deltaf2_Max")
                        {
                            mTxTestCase.IsTest_Deltaf2_Max = true;
                        }
                        if (list[i] == "Deltaf2_Avg")
                        {
                            mTxTestCase.IsTest_Deltaf2_Avg = true;
                        }

                        if (list[i] == "Max_PVe_Offset")
                        {
                            mTxTestCase.IsTest_Max_PVe_Offset = true;
                        }
                        if (list[i] == "Max_NVe_Offset")
                        {
                            mTxTestCase.IsTest_Max_NVe_Offset = true;
                        }
                        if (list[i] == "Avg_Offset")
                        {
                            mTxTestCase.IsTest_Avg_Offset = true;
                        }
                        if (list[i] == "Max_Drift")
                        {
                            mTxTestCase.IsTest_Max_Drift = true;
                        }
                        if (list[i] == "Avg_Drift")
                        {
                            mTxTestCase.IsTest_Avg_Drift = true;
                        }
                        if (list[i] == "Drift_Rate")
                        {
                            mTxTestCase.IsTest_Drift_Rate = true;
                        }
                    }
                }
                if ("Pavg_Limit" == xml.Name)
                {
                    strTmp = xml.GetAttribute("Value");
                    List<string> list = new List<string>(strTmp.Split(','));
                    txrxLimitCase.fPavg_Limit_Min = Convert.ToSingle(list[0]);
                    txrxLimitCase.fPavg_Limit_Max = Convert.ToSingle(list[1]);
                }
                if ("Ppk_Limit" == xml.Name)
                {
                    strTmp = xml.GetAttribute("Value");
                    List<string> list = new List<string>(strTmp.Split(','));
                    txrxLimitCase.fPpk_Limit_Min = Convert.ToSingle(list[0]);
                    txrxLimitCase.fPpk_Limit_Max = Convert.ToSingle(list[1]);
                }
                if ("Deltaf1_Avg_Limit" == xml.Name)
                {
                    strTmp = xml.GetAttribute("Value");
                    List<string> list = new List<string>(strTmp.Split(','));
                    txrxLimitCase.fDeltaf1_Avg_Limit_Min = Convert.ToSingle(list[0]);
                    txrxLimitCase.fDeltaf1_Avg_Limit_Max = Convert.ToSingle(list[1]);
                }

            }
            listTxCase.Add(mTxTestCase);
            listRxCase.Add(mRxTestCase);
        }
        xml.Close();
    }

    public int InitTxConfig()
    {
        string str = "";
        instr.WriteGPIBCmd("*RST");

        str = instr.QueryGPIBCmd("*OPC?");
        if (str[0] != '1')
        {
            WriteDebugMsg("InitTxConfig:*OPC? Fail.");
            return -1;
        }
        instr.WriteGPIBCmd("OPMD SCRIPT");
        instr.WriteGPIBCmd("SCPTSEL 3");
        str = instr.QueryGPIBCmd("*OPC?");
        if (str[0] != '1')
        {
            WriteDebugMsg("InitTxConfig:*OPC? Fail.");
            return -1;
        }
        instr.WriteGPIBCmd("SYSCFG EUTRS232,57600");
        instr.WriteGPIBCmd("SYSCFG USBADAPTOR,PORT,A");
        instr.WriteGPIBCmd("SYSCFG EUTHANDSHAKE,RTS/CTS");

        instr.WriteGPIBCmd("SERVRXONBNC FALSE");
        instr.WriteGPIBCmd("SYNCMEAS FALSE");
        str = instr.QueryGPIBCmd("*OPC?");
        if (str[0] != '1')
        {
            WriteDebugMsg("InitTxConfig:*OPC? Fail.");
            return -1;
        }
        return 1;
    }
    public void SetChannel(E_Channel channel)
    {
        if (channel == E_Channel.CH0)
        {
            instr.WriteGPIBCmd("SYSCAL CALSETUP,DATA10101010,78,0,0.35,OFF,ON,OFF");
        }
        else if (channel == E_Channel.CH19)
        {
            instr.WriteGPIBCmd("SYSCAL CALSETUP,DATA10101010,78,38,0.35,OFF,ON,OFF");
        }
        else if (channel == E_Channel.CH39)
        {
            instr.WriteGPIBCmd("SYSCAL CALSETUP,DATA10101010,0,78,0.35,OFF,ON,OFF");
        }
    }
    public int CaseTxConfig()
    {
        //SetChannel()
        
        return 0;
    }

    //
    public int ParsePara_BtLimit()
    {
        int iStatus = (int)ReturnStatus.PASS;

        WriteDebugMsg("BtInitialize: ");
        return 0;
    }

/*
ParsePara_TestCase_BT();

    BtMeasureTxALL()

    //分析测试的值

    BtStopTx();
    

    BtMeasureRx(i);
    */
}

}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值