首页 > 代码库 > 利用Python的xlrd和xlwt功能,开发小程序用于实现硬件GPIO译码 工作日志

利用Python的xlrd和xlwt功能,开发小程序用于实现硬件GPIO译码 工作日志

待完成:

增加CA的位置识别,完成WCDMA、CDMA、GSM 译码动作

 

02/12  完成输入表格建立,完成译码基本框架

输入逻辑说明:

State 表示 天线的状态,取值0~30

Up/Down 表示 上下天线 取值 0~1 : 0表示上天线 1表示下天线

CA表示线控是GPIO 是单频段线控 还是 CA频段线控 取值 0~3  :0 单频段,3表示4CC

Band 表示 同一个天线状态,最多可以同时支持的频段各数

GPIO表示当前的天线状态读输入GPIO

 

以LTE为例如下表所示:

技术分享

 

实现效果:输出实现代码转换

技术分享

 

 

import sys
import xlrd
import xlwt

# define var
# state_max -Antenna State max Up+Down Antenna
# C1 -Used for cell value transfer
# ca_label  -Ca state mark
# nrows,ncols = number of row and col
# GPIO_Input_Value - Input of CrossMipi GPIO_Value


data = xlrd.open_workbook("Crossmipi_Gpio.xlsx")
inputtable = data.sheet_by_name("GPIO_Input_LTE")

wdata=xlwt.Workbook()
woutputtable=wdata.add_sheet(GPIO_Output)

nrows=inputtable.nrows
ncols=inputtable.ncols

state_max=nrows-2
band_config=[]


i=0
j=0
k=0
m=0

c1=0

gpio_input_value=[0,0,0,0]


# Find differrent band config in the cell
for i in range(state_max):
    for j in range(7):
        if inputtable.cell_value(i+2,j+3)!=0:
            band_config.append([])
            band_config[m]=inputtable.cell_value(i+2,j+3)
            m=m+1


band_config=list(set(band_config))


for k in range(len(band_config)):
    for i in range(state_max):
        for j in range(7):
            # band_config[k] GPIO_Input value
            if inputtable.cell_value(i+2,j+3)==band_config[k]:
                for m in range(4):
                    gpio_input_value[m]=(gpio_input_value[m] or inputtable.cell_value(i+2,m+10))
    c1=gpio_input_value[0]*8+gpio_input_value[1]*4+gpio_input_value[2]*2+gpio_input_value[3]
    
    woutputtable.write(k+2,2,band_config[k])
    woutputtable.write(k+2,3,c1)
    c1=0
    gpio_input_value=[0.0,0.0,0.0,0.0]

wdata.save(Crossmipi_Output_GPIO.xlsx)

 

利用Python的xlrd和xlwt功能,开发小程序用于实现硬件GPIO译码 工作日志