예제 #1
0
def T_02_powerTest_A(product):
    u"功率测试-测试功率值是否达标,并记录功率值"
    manulCheck(u"操作提示", u"请将阅读器天线接口连接到频谱仪上,点击OK开始测试", "ok")
    sa = __getSpecAnlzr()
    sa.resetForRead()
    rd201 = __getReader()
    rd201.setting = True
    start_new_thread(__asynInven, (rd201, ))
    time.sleep(0.5)
    power = sa.readPowerValue()
    rd201.setting = False
    res = {u"阅读器发射功率": power}
    product.addBindingCode(u"发射功率", power)
    if not (SP("hr.reader.power.low", 34) <= power <= SP(
            "hr.reader.power.high", 35)):
        raise TestItemFailException(failWeight=10,
                                    message=u'发射功率值不合格',
                                    output=res)

    sa.setForIdleRead()
    time.sleep(0.5)
    idlePower = sa.readPowerValue()
    uiLog(u"空闲时功率:%f" % idlePower)
    if idlePower > 0:
        raise TestItemFailException(failWeight=10,
                                    message=u'空闲状态依然有功率值:%f' % idlePower,
                                    output=res)

    return res
예제 #2
0
def T_02_updateMac_A(product):
    u'''更新MAC地址-获取新的MAC地址并BSL写入'''
    manulCheck(u"操作提示", u"请连接整机和工装板的U口线,然后点击确定", "ok")
    if SESSION["testor"] != u"单机":
        obuid = serialCode("mac")
    else:
        obuid = ""
        while re.match("^([0-9]|[A-F]|[a-f]){8}$", obuid) is None:
            obuid = askForSomething(u"MAC地址",
                                    u"请输入MAC地址",
                                    autoCommit=False,
                                    defaultValue="24")

    uiLog(u"分配测试产品标识:" + obuid)

    sc = __askForPlateDeviceCom()
    product.setTestingProductIdCode(obuid)
    try:
        sc.startBslWriting(passwordFile)
        uiLog(u"开始写入MAC地址")
        sc.save_obu_id(__toBytesarray(obuid))
    finally:
        sc.finishBslWritten()
    time.sleep(1)
    sc.clearSerialBuffer()
예제 #3
0
def T_01_readObuId_A(product):
    u'''读取OBU内部标识-通过发卡器读取OBUID并与镭雕条码进行绑定'''
    manulCheck(u"操作提示", u"请将整机放置在发卡器上,待绿灯闪烁后确定", "ok")
    sc = __askForTrader()
    mac, contractSerial = readNember(sc)
    print "mac:", mac
    print "合同序列号:", contractSerial
    newMac = checkExcel(PARAM["excelPath"].decode('utf-8'),
                        PARAM["excelSheet"], contractSerial)
    try:
        uiLog(u"切换至NuLink模式")
        nul = __getNuLink()
        infos = nul.readInfo()
        infos00 = infos[:8] + newMac + infos[16:32]
        infos40 = infos[128:154]
        nul.writeToInfo(infos00, infos40)
    except:
        raise TestItemFailException(failWeight=10, message=u'写入新的mac失败')
    manulCheck(u"操作提示", u"请将整机放置在发卡器上,待绿灯闪烁后确定", "ok")
    for i in range(3):
        nul.resetChip()
    time.sleep(1)
    checkMac, readContractSerial = readNember(sc)
    if checkMac == newMac:
        return {u"写入新Mac": u"成功"}
def T_02_downloadNewVersion_A(product):
    u'''下载新版本-自动下载新版本'''
    manulCheck(u"操作提示",u"请连接整机和工装板的U口线,然后点击确定","ok")
    sc = __askForPlateDeviceCom()
    try:
        sc.downloadVersion(version_file = os.path.dirname(os.path.abspath(__file__))+os.sep+"versions\\"+SESSION["versionFileName"])
    except Exception,e:
        raise e
예제 #5
0
def xT_04_etcTradeWithPsam_A(product):
    u'''有PSAM卡交易测试-有PSAM卡交易测试'''
    manulCheck(u"操作提示", u"请将OBU插【国标卡】后放置在发卡器上,待OBU绿灯闪烁后确定", "ok")
    try:
        usbTestor.test_EtcTradeWithPsam()
    except Exception, e:
        raise TestItemFailException(failWeight=10,
                                    message=u'有PSAM卡交易测试失败!' + str(e))
예제 #6
0
def T_02_businessRSSITest_A(product):
    u"整机交易测试-交易过程中包括读取RSSI值测试"
    manulCheck(u'提示', u'请将RSU放置到指定位置,然后点击确定按钮开始整机交易测试', check="ok")
    manulResult = tradeTest()
    if manulResult > int(PARAM["tradeRSSILow"]) and manulResult < int(
            PARAM["tradeRSSIHigh"]):
        return {u"交易测试RSSI": u"%d" % manulResult}
    raise TestItemFailException(failWeight=10, message=u"交易测试失败")
예제 #7
0
def T_10_miReadCardID_A(product):
    u"复合卡ID读取测试-读取复合卡ID测试"
    global usbTestor
    manulCheck(u"操作提示", u"请将复合卡放置在发卡器上,然后点击确定", "ok")
    try:
        usbTestor.setUp()
        usbTestor.test_MIreadCardId()
    except Exception, e:
        raise TestItemFailException(failWeight=10,
                                    message=u'MI卡ID读取测试失败!' + str(e))
예제 #8
0
def T_08_cpuCardTest_A(product):
    u"CPU卡测试-读取CPU卡测试"
    global usbTestor
    manulCheck(u"操作提示", u"请将CPU卡放置在发卡器上,然后点击确定", "ok")
    try:
        usbTestor.setUp()
        usbTestor.test_CpuCard()
    except Exception, e:
        raise TestItemFailException(failWeight=10,
                                    message=u'CPU卡测试失败!' + str(e))
예제 #9
0
def T_07_etcTradeWithoutPsam_A(product):
    u'''无PSAM卡交易测试-无PSAM卡交易测试'''
    global usbTestor
    manulCheck(u"操作提示", u"请将OBU插【华虹卡】后放置在发卡器上,待OBU绿灯闪烁后确定", "ok")
    try:
        usbTestor.setUp()
        usbTestor.test_EtcTradeWithoutPsam()
    except Exception, e:
        raise TestItemFailException(failWeight=10,
                                    message=u'无PSAM卡交易测试失败!' + str(e))
예제 #10
0
def T_15_m1CardTest_A(product):
    u"M1卡测试-读取M1卡测试"
    manulCheck(u"操作提示", u"请将M1卡放置在发卡器上,然后点击确定", "ok")
    global usbTestor
    try:
        usbTestor.setUp()
        usbTestor.test_M1Card()
    except Exception, e:
        raise TestItemFailException(failWeight=10,
                                    message=u'M1卡测试失败!' + str(e))
예제 #11
0
def T_02_port4Test_A(product):
    u"端口4测试-测试端口4的S11/S22/S21的值"
    manulCheck(u"操作提示",u"请确认功分器单板公共端(7)连接矢网仪1端口,1-6口与工装板连接正确,点击OK开始测试","ok")
    res = __T_portTest_A(product,4)
    # 加判S11
    s11 = res[u"端口4-S11回损"]
    product.addBindingCode(u"端口7-S11回损",s11)
    if not ( SP("hr.divider.port7.S11.low",0) < s11 < SP("hr.divider.port7.S11.high",0)):
        raise TestItemFailException(failWeight = 10,message = u'端口7-S11回损值不合格',output=res)
    return res
예제 #12
0
def T_03_marker1_A(product):
    u"Marker1测试-频率12.8M"
    manulCheck(u"操作提示", u"请确认天线单板与矢网仪连接正确,点击OK开始测试", "ok")
    vna = __getVNA()
    s, d2, freq = vna.readMarkerAntFreq(1, 12800000)
    res = __T_markerJudge(product, s, freq, 1)
    if not (SP("hr.antenna.marker1.s.low", 0) < s < SP(
            "hr.antenna.marker1.s.high", 0)):
        raise TestItemFailException(failWeight=10,
                                    message=u'频点1-S值不合格',
                                    output=res)
    return res
def T_06_deepStaticCurrent_A(product):
    u'''深度静态电流测试-判断深度静态电流值是否在正常范围内'''
    manulCheck(u"操作提示",u"请按住防拆下电按钮,使其下电","ok")
    sc = __askForPlateDeviceCom()
    sc.assertSynComm(request ='CloseObuUart',response = 'CloseObuUartOK')
    time.sleep(2)
    try:
        v = sc.testDeepStaticCurrent()
        resultMap = {u"深度静态电流":v}
        if v < SP('gs10.deepStaticCurrent.low',0) or v > SP('gs10.deepStaticCurrent.high',3):
            raise TestItemFailException(failWeight = 10,message = u'深度静态电流测试不通过,正常阈值0-3',output=resultMap)
        return resultMap
    except TestItemFailException,e:
        raise e
예제 #14
0
def T_06_lightTest_M(protduct):
    u"面板灯接口测试-RSDB0单板连接RSIB0单板进行单板面板灯接口测试"
    LightDict = {"系统PWR": "长亮", "系统RUN": "闪烁", "系统SAM": "长亮"}
    alist = []
    for alight in LightDict:
        lightResult = manulCheck(u"面板灯接口测试",
                                 u"请观察%s灯是否%s" % (alight, LightDict[alight]))
        if lightResult:
            continue
        alist.append(alight)
    # proxy = __askForRD50CLight()
    proxy = DeviceProxy(PARAM["defaultNetOneIp"])
    try:
        epld_addr = int(str("da"), 16)
        epld_value = int(str("0"), 16)
        proxy._write_epld(epld_addr, epld_value)
        redlightResult = manulCheck(u"系统报警灯", u"请观察系统ALM灯是否闪烁,点击正常后ALM灯将会关闭")
        if redlightResult:
            epld_addr1 = int(str("da"), 16)
            epld_value1 = int(str("1"), 16)
            proxy._write_epld(epld_addr1, epld_value1)
        else:
            alist.append("系统ALM")
            epld_addr1 = int(str("da"), 16)
            epld_value1 = int(str("1"), 16)
            proxy._write_epld(epld_addr1, epld_value1)
        time.sleep(0.5)
        epld_addr1 = int(str("17c"), 16)
        epld_value1 = int(str("00"), 16)
        proxy._write_epld(epld_addr1, epld_value1)
        sixlightResult = manulCheck(u"led灯亮起提示",
                                    u"led灯ANT1-ANT6是否亮起,判断后会关闭led灯")
        if sixlightResult:
            epld_addr1 = int(str("17c"), 16)
            epld_value1 = int(str("3f"), 16)
            proxy._write_epld(epld_addr1, epld_value1)
        else:
            alist.append("ANT1-ANT6灯")
            epld_addr1 = int(str("17c"), 16)
            epld_value1 = int(str("3f"), 16)
            proxy._write_epld(epld_addr1, epld_value1)
    finally:
        proxy.close()
    if alist:
        cir = ",".join(alist)
        PARAM["failNum"] = "1"
        raise TestItemFailException(failWeight=1, message=u"%s测试不正常" % cir)
    return
예제 #15
0
def T_02_downloadNet1_A(product):
    u'单板网口测试-RSDB0单板网口通信功能及APP版本下载测试'
    retry = ""
    t = 0
    while True:
        t += 1
        powerResult = manulCheck(u'复位',
                                 u'%s请在点击确定按钮后,按下单板上的复位按键S1' % retry,
                                 check="ok")
        if powerResult:
            downNet = __downloadVersion()
            if downNet == "OK":
                return
            elif downNet == "loginfail":
                retry = "登录超时,请重新操作,"
                if t == 2:
                    raise TestItemFailException(failWeight=10,
                                                message=u'串口无打印')
            elif downNet == "TFTPfail":
                # retry = "TFTP开启失败,请重新操作,"
                # continue
                raise TestItemFailException(failWeight=10,
                                            message=u'APP版本下载失败, 可能是没有打开TFTP')
            else:
                raise TestItemFailException(failWeight=10,
                                            message=u'BOOT下载失败,未知异常')
예제 #16
0
def T_09_beep_M(product):
    u'''蜂鸣器检测-自动判定蜂鸣器是否响起'''
    sc = __askForPlateDeviceCom()
    sc.asynSend("TestBeepPara 1000")
    mcr = manulCheck(u"声光指示测试", u"请确认蜂鸣器响声正常。")
    sc.asynReceiveAndAssert("TestBeepParaOK")
    if not mcr:raise TestItemFailException(failWeight = 10,message = u'蜂鸣器测试人工判断不通过!')
예제 #17
0
def T_07_carDetection_A(protduct):
    u"车检串口-车检串口"
    proxy = DeviceProxy(PARAM["defaultNetOneIp"])
    try:
        epld_addr = int(str("d4"), 16)
        epld_value = int(str("7"), 16)
        proxy._write_epld(epld_addr, epld_value)
        pullOutResult = manulCheck(u"提示", u"请再车检插口的工装接口插拔之后,点击确定")
        if pullOutResult:
            read_epld_addr = int(str("90"), 16)
            readResult = proxy._read_epld(read_epld_addr)
            readResult = hex(readResult)[2:]
            print readResult
            if readResult != "c0":
                proxy.close()
                PARAM["failNum"] = "1"
                raise TestItemFailException(failWeight=1,
                                            message=u"车检口测试失败,错误码%s" %
                                            readResult)
            epld_addr1 = int(str("d2"), 16)
            epld_value1 = int(str("1"), 16)
            epld_value2 = int(str("0"), 16)
            proxy._write_epld(epld_addr1, epld_value1)
            time.sleep(0.5)
            proxy._write_epld(epld_addr1, epld_value2)
    finally:
        proxy.close()
예제 #18
0
def T_08_greenLight_M(product):
    u'''绿色LED灯检测-自动判定绿LED灯是否正常亮起'''
    sc = __askForPlateDeviceCom()
    sc.asynSend("TestGreenLedPara 1000")
    mcr = manulCheck(u"声光指示测试", u"请确认绿色指示灯显示是否正常。")
    sc.asynReceiveAndAssert("TestGreenLedParaOK")
    if not mcr:raise TestItemFailException(failWeight = 10,message = u'绿色指示灯测试人工判断不通过!')
예제 #19
0
def T_02_readObuId_A(product):
    u'''读取OBU内部标识-通过发卡器读取OBUID并与镭雕条码进行绑定'''
    manulCheck(u"操作提示", u"请将整机放置在发卡器上,待绿灯闪烁后确定", "ok")
    sc = trading.__askForTrader()
    for i in range(5):
        try:
            mac, contractSerial = sc.readObuId()
            uiLog(u'测试产品标识:' + mac)
            product.setTestingProductIdCode(mac)
            product.addBindingCode(u"合同序列号", contractSerial)
            uiLog(u'绑定合同序列号:' + contractSerial)
            product.param["contractSerial"] = contractSerial
            break
        except Exception, e:
            print e
            time.sleep(0.1)
예제 #20
0
def T_11_oled_M(product):
    u'''OLED屏幕测试-人工判断OLED屏幕是否全白'''
    sc = __askForPlateDeviceCom()
    sc.asynSend('TestOLED')
    if not manulCheck(u"OLED屏幕测试", u"请确认屏幕全白。"):
        raise TestItemFailException(failWeight=10, message=u'OLED屏幕测试人工判断不通过!')
    sc.asynReceiveAndAssert('TestOLEDOK')
예제 #21
0
def T_10_oled_M(product):
    u'''OLED屏幕测试-手动判定OLED屏幕显示'''
    sc = __askForPlateDeviceCom()
    sc.asynSend("TestOLED")
    mcr = manulCheck(u"OLED测试", u"请确认OLED屏幕显示12345678")
    sc.asynReceiveAndAssert("TestOLEDOK")
    if not mcr:raise TestItemFailException(failWeight = 10,message = u'OLED屏幕测试人工判断不通过!')
예제 #22
0
def T_10_soundLight_M(product):
    u'''声光指示测试-人工判断指示灯显示、蜂鸣器响声是否正常'''
    sc = __askForPlateDeviceCom()
    sc.assertSynComm(request='TestLedLight', response='TestLedLightOK')
    mcr = manulCheck(u"声光指示测试", u"请确认指示灯显示正常,蜂鸣器响声正常。")
    if not mcr:
        raise TestItemFailException(failWeight=10, message=u'声光指示测试人工判断不通过!')
예제 #23
0
def T_03_soundLight_M(product):
    u'''声光指示测试-指示灯显示正常,蜂鸣器响声正常。人工确认后才停止显示和响'''
    time.sleep(1)
    from hhplt.testengine.manul import manulCheck
    if manulCheck(u"声光指示测试", u"请确认这破玩意是正常亮了吗?"):
        return {"随便写的返回值": 300}
    else:
        raise TestItemFailException(failWeight=10, message=u'声光测试失败')
예제 #24
0
def T_04_testBeep_M(product):
    u'''蜂鸣器测试-人工判定蜂鸣器是否响起'''
    global usbTestor
    usbTestor.setUp()
    usbTestor.test_Beep()
    mcr = manulCheck(u"蜂鸣器测试", u"请确认听到蜂鸣器的声音。")
    if not mcr:
        raise TestItemFailException(failWeight=10, message=u'蜂鸣器人工检测不通过!')
예제 #25
0
def T_10_oled_M(product):
    u'''OLED屏幕测试-自动判断OLED屏幕是否全黑'''
    sc = board_digital.__askForPlateDeviceCom()
    sc.asynSend("TestOLED")
    mcr = manulCheck(u"OLED测试", u"请确认OLED屏幕显示全黑。")
    sc.asynReceiveAndAssert("TestOLEDOK")
    if not mcr:
        raise TestItemFailException(failWeight=10, message=u'OLED屏幕测试人工判断不通过!')
예제 #26
0
def T_07_redLight_M(product):
    u'''红色LED灯检测-自动判定红LED灯是否正常亮起'''
    sc = board_digital.__askForPlateDeviceCom()
    sc.asynSend("TestRedLedPara 1000")
    mcr = manulCheck(u"声光指示测试", u"请确认红色指示灯显示是否正常。")
    sc.asynReceiveAndAssert("TestRedLedParaOK")
    if not mcr:
        raise TestItemFailException(failWeight=10, message=u'红色指示灯测试人工判断不通过!')
예제 #27
0
def T_04_RecvRSSITest222_A(product):
    u"无连接测试-计算RSRB4单板接收射频信号的RSSI值测试"
    manulCheck(u'提示', u'请断开信号源', check="ok")
    try:
        proxy.open(PARAM["defaultNetOneIp"])
        fpga_pll.config()
        proxy._write_fpga_reg(0x5a, 0x01)
        rx_pll.config(5722)
        proxy._write_fpga_reg(0x59, 0x00)
        proxy._write_fpga_reg(0x50, 0x01)
        proxy._write_fpga_reg(0x51, 0x02)
        proxy._write_fpga_reg(0x58, 0x01)
        proxy._write_fpga_reg(0x56, 0x00)
        proxy._write_fpga_reg(0x57, 0x00)
        proxy._write_fpga_reg(0x57, 0x01)
        proxy._write_fpga_reg(0x57, 0x00)
        proxy._write_fpga_reg(0x52, 0x00)
        proxy._write_fpga_reg(0x95, 0x03)
        proxy._write_fpga_reg(0x96, 0x01)
        proxy._write_fpga_reg(0x9b, 0x01)
        proxy._write_fpga_reg(0x90, 0x01)
        time.sleep(0.5)
        # 工装发射单音

        proxy._write_fpga_reg(0x52, 0x7f)
        fpga_addr = "3f"
        fpga_addr = int(str(fpga_addr), 16)
        fpga_value = proxy._read_fpga_reg(fpga_addr)
        print hex(fpga_value)[2:]

        proxy._write_fpga_reg(0x5a, 0x1)
        proxy._write_fpga_reg(0x46, 0x1)
        proxy._write_fpga_reg(0x58, 0x0)
        proxy._write_fpga_reg(0x5a, 0x0)
        print "关闭接收"

    except Exception as e:
        raise AbortTestException(message=e)
    finally:
        proxy.close()

    if fpga_value > int(PARAM["recvNothingLow"]) and fpga_value < int(PARAM["recvNothingHigh"]):
        return {u"无输入接收RSSI值为:": fpga_value}
    else:
        PARAM["failNum"] = "1"
        raise TestItemFailException(failWeight=1, message=u"无输入接收RSSI测试失败,值:%d:" % fpga_value)
예제 #28
0
def T_13_greenLight_M(product):
    u'''绿色LED灯检测-人工判定绿LED灯是否正常亮起'''
    sc = __askForPlateDeviceCom()
    sc.assertSynComm(request='TestGreenLedPara 1000',
                     response='TestGreenLedParaOK')
    mcr = manulCheck(u"声光指示测试", u"请确认绿色指示灯正常亮起,蜂鸣器响声正常。")
    if not mcr:
        raise TestItemFailException(failWeight=10,
                                    message=u'绿色LED指示测试人工判断不通过!')
예제 #29
0
def T_02_readObuId_A(product):
    u'''读取OBU内部标识-通过发卡器读取OBUID并与镭雕条码进行绑定'''
    manulCheck(u"操作提示",u"请将整机放置在发卡器上,待绿灯闪烁后确定","ok")
    sc = __askForTrader()
    for i in range(5):
        try:
            mac,contractSerial = sc.readObuId()
            uiLog(u'测试产品标识:'+mac)
            product.setTestingProductIdCode(mac)
            product.addBindingCode(u"合同序列号",contractSerial)
            uiLog(u'绑定合同序列号:'+contractSerial)
            esamVersion = sc.getEsamVersion()
            uiLog(u'ESAM版本:'+esamVersion)
            __writeToLocalRecord(mac,product.getTestingSuiteBarCode(),contractSerial)   #记录到本地文件
            break
        except Exception,e:
            print e
            time.sleep(0.1)
예제 #30
0
def T_03_inventory_A(product):
    u"清点测试-检测是否可能完整清点所有数量的标签"
    manulCheck(u"操作提示", u"请确认阅读器单板串口、电源、天线连接完好,点击OK开始测试", "ok")
    rd201 = __getReader()

    continueCount = 0
    for i in range(1, 11):
        count = len(rd201.inventoryTags())
        if count >= PARAM["RD201TargetTagCount"]:
            continueCount += 1
        else:
            continueCount = 0
        uiLog(u"第%d次清点到标签数量:%d" % (i, count))
        if continueCount >= PARAM["continuesTagCount"]:
            return {u"测试清点数量": count}
    raise TestItemFailException(failWeight=10,
                                message=u'读取标签数量测试不通过,数量不够',
                                output={u"测试清点数量": count})