coding完毕,举例NgLteGrid.fillSrs实现如下:
def fillSrs(self):
#Note: Since srs has many ue-specific parameters, such as frequency bandwidth and offset and ue-specific subframe config.
#so we just include only one parameter: srs-SubframeConfig in this version, and assume that tha last symbol of the
#configured subframes and all the remained UpPTS is used for transmission of sounding rs.
for isf in range(self.subfPerRf):
if isf % self.tSfc in self.deltaSfc:
if self.fs == LtePhy.LTE_FS_TYPE1.value or (self.fs ==LtePhy.LTE_FS_TYPE2.value and self.subfPatTdd[isf] == 'u'):
#the last symbol
isym = self.symbPerSubf - 1
for ire in range(self.rePerSymb):
if self.gridUl[0][ire][isf*self.symbPerSubf+isym] == LteResType.LTE_RES_PUSCH.value:
self.gridUl[0][ire][isf*self.symbPerSubf+isym] = LteResType.LTE_RES_SRS.value
elif self.fs == LtePhy.LTE_FS_TYPE2.value and self.subfPatTdd[isf] == 's':
#UpPTS
for isym in range(self.dwpts+self.gp, self.symbPerSubf):
for ire in range(self.rePerSymb):
if self.gridUl[0][ire][isf*self.symbPerSubf+isym] == LteResType.LTE_RES_PUSCH.value:
self.gridUl[0][ire][isf*self.symbPerSubf+isym] = LteResType.LTE_RES_SRS.value
在NgLteGridUi中实现csv的解析,并在NgMainWin中以tab形式显示:
def parseLteGrid(self):
scPerPrb = 12
_prbs = (6, 15, 25, 50, 75, 100)
prbNum = _prbs[self.args['bw']]
outDir = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'output')
files = []
files.append('LTE_UL_RES_GRID.csv')
_aps = (1, 2, 4)
apNum = _aps[self.args['ap']]
for i in range(apNum):
files.append('LTE_DL_RES_GRID_AP%d.csv' % i)
for fn in files:
with open(os.path.join(outDir, fn), 'r') as f:
line = f.readline()
colLabels = line.split(',')[1:]
rowLabels = []
numRows = prbNum * scPerPrb
numCols = len(colLabels)
tab = QTableWidget()
tab.setRowCount(numRows)
tab.setColumnCount(numCols)
tab.setHorizontalHeaderLabels(colLabels)
tab.setVerticalHeaderLabels(rowLabels)
tab.horizontalHeader().setDefaultSectionSize(8 * self.fontMetrics().width('X'))
tab.horizontalHeader().setSectionResizeMode(QHeaderView.Fixed)
ire = 0
while True:
line = f.readline()
if not line:
break
tokens = line.split(',')
rowLabels.append(tokens[0])
for isym in range(numCols):
item = QTableWidgetItem()
imap = int(tokens[isym+1])
if 'UL_RES_GRID' in fn:
_str, _fg, _bg = self.ulMap[imap]
else:
_str, _fg, _bg = self.dlMap[imap]
item.setText(_str)
item.setForeground(_fg)
item.setBackground(_bg)
item.setTextAlignment(Qt.AlignCenter)
item.setFlags(item.flags() & (~Qt.ItemIsEditable));
tab.setItem(ire, isym, item);
ire = ire + 1
tab.setVerticalHeaderLabels(rowLabels)
self.ngwin.tabWidget.addTab(tab, fn)
最后UI显示出来如下:
LTE_DL_RES_GRID_AP0如下: