149 lines
4.4 KiB
C++
149 lines
4.4 KiB
C++
#include "MemDisplayAndEdit.h"
|
|
#include "ui_memdisplayandedit.h"
|
|
#include "QLatin1Char"
|
|
MemDisplayAndEdit::MemDisplayAndEdit(QWidget *parent) :
|
|
QWidget(parent),
|
|
ui(new Ui::MemDisplayAndEdit)
|
|
{
|
|
ui->setupUi(this);
|
|
for(int i = 0; i < MEM_GRID_MAX_ROW*MEM_GRID_MAX_COL; i++){
|
|
memLineEdit[i] = new QLineEdit(this);
|
|
//memLineEdit[i]->setAccessibleName(QString::number(i));
|
|
memLineEdit[i]->setEnabled(false);
|
|
ui->gridLayoutMem->addWidget(memLineEdit[i],(i/MEM_GRID_MAX_COL) + 1,(i%MEM_GRID_MAX_COL) + 1);
|
|
connect(memLineEdit[i],SIGNAL(editingFinished ()),this,SLOT(onLineEditEditingFinished()));
|
|
}
|
|
for(int i = 0; i < MEM_GRID_MAX_ROW; i++){
|
|
rowLabel[i] = new QLabel(this);
|
|
ui->gridLayoutMem->addWidget(rowLabel[i],i + 1,0);
|
|
}
|
|
editFlag = false;
|
|
writeMemMode = false;
|
|
ui->radioButtonRead->setChecked(!writeMemMode);
|
|
ui->radioButtonWrite->setChecked(writeMemMode);
|
|
writeMemBaseAddr = 0;
|
|
readMemBaseAddr = 0;
|
|
}
|
|
|
|
MemDisplayAndEdit::~MemDisplayAndEdit()
|
|
{
|
|
delete ui;
|
|
|
|
|
|
}
|
|
|
|
void MemDisplayAndEdit::updateSysStatusToUI(void){
|
|
if(sysPara && !editFlag){
|
|
for(int i = 0; i < MEM_GRID_MAX_ROW*MEM_GRID_MAX_COL; i++){
|
|
if(writeMemMode)
|
|
memLineEdit[i]->setText(QString("%1").arg(sysPara->devOp->memWrMap[(writeMemBaseAddr + i)&MAX_WR_MEM_SIZE_MASK],2,16,QLatin1Char('0')));
|
|
else
|
|
memLineEdit[i]->setText(QString("%1").arg(sysPara->devOp->memRdMap[(readMemBaseAddr + i)&MAX_RD_MEM_SIZE_MASK],2,16,QLatin1Char('0')));
|
|
}
|
|
for(int i = 0; i < MEM_GRID_MAX_ROW; i++){
|
|
if(writeMemMode)
|
|
rowLabel[i]->setText(QString("%1").arg((writeMemBaseAddr + i*MEM_GRID_MAX_COL)&MAX_WR_MEM_SIZE_MASK,4,16,QLatin1Char('0')));
|
|
else
|
|
rowLabel[i]->setText(QString("%1").arg((readMemBaseAddr + i*MEM_GRID_MAX_COL)&MAX_RD_MEM_SIZE_MASK,4,16,QLatin1Char('0')));
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
void MemDisplayAndEdit::on_comboBoxBaseAddress_activated(const QString &str)
|
|
{
|
|
bool ok;
|
|
if(writeMemMode){
|
|
writeMemBaseAddr = str.toInt(&ok,0);
|
|
}
|
|
else
|
|
readMemBaseAddr = str.toInt(&ok,0);
|
|
}
|
|
|
|
void MemDisplayAndEdit::on_radioButtonRead_pressed()
|
|
{
|
|
writeMemMode = false;
|
|
if(sysPara){
|
|
ui->pushButtonEdit->setEnabled(sysPara->devOp->fpgaDevOpenFlag?false:true);
|
|
}
|
|
if(editFlag)
|
|
on_pushButtonEdit_pressed();
|
|
ui->comboBoxBaseAddress->setEditText(QString("0x%1").arg(readMemBaseAddr,4,16,QLatin1Char('0')));
|
|
}
|
|
|
|
void MemDisplayAndEdit::on_radioButtonWrite_pressed()
|
|
{
|
|
writeMemMode = true;
|
|
ui->pushButtonEdit->setEnabled(true);
|
|
if(editFlag)
|
|
on_pushButtonEdit_pressed();
|
|
ui->comboBoxBaseAddress->setEditText(QString("0x%1").arg(writeMemBaseAddr,4,16,QLatin1Char('0')));
|
|
}
|
|
|
|
void MemDisplayAndEdit::on_pushButtonEdit_pressed()
|
|
{
|
|
editFlag = !editFlag;
|
|
for(int i = 0; i < MEM_GRID_MAX_ROW*MEM_GRID_MAX_COL; i++){
|
|
memLineEdit[i]->setEnabled(editFlag);
|
|
}
|
|
ui->pushButtonEdit->setText(editFlag?tr("完成"):tr("编辑"));
|
|
}
|
|
|
|
void MemDisplayAndEdit::on_pushButtonLastPage_pressed()
|
|
{
|
|
if(writeMemMode){
|
|
writeMemBaseAddr = (writeMemBaseAddr - MEM_GRID_MAX_ROW*MEM_GRID_MAX_COL)&MAX_WR_MEM_SIZE_MASK;
|
|
}
|
|
else
|
|
readMemBaseAddr = (readMemBaseAddr - MEM_GRID_MAX_ROW*MEM_GRID_MAX_COL)&MAX_WR_MEM_SIZE_MASK;
|
|
}
|
|
|
|
void MemDisplayAndEdit::on_pushButtonNextPage_pressed()
|
|
{
|
|
if(writeMemMode){
|
|
writeMemBaseAddr = (writeMemBaseAddr + MEM_GRID_MAX_ROW*MEM_GRID_MAX_COL)&MAX_WR_MEM_SIZE_MASK;
|
|
}
|
|
else
|
|
readMemBaseAddr = (readMemBaseAddr + MEM_GRID_MAX_ROW*MEM_GRID_MAX_COL)&MAX_RD_MEM_SIZE_MASK;
|
|
}
|
|
|
|
void MemDisplayAndEdit::onLineEditEditingFinished(){
|
|
int val,addr;
|
|
bool ok;
|
|
QLineEdit * edit = qobject_cast<QLineEdit *>(sender());
|
|
QString name ="" ;// edit->accessibleName();
|
|
val = edit->text().toInt(&ok,16);
|
|
if(sysPara){
|
|
if(writeMemMode){
|
|
addr = writeMemBaseAddr + name.toInt(&ok);
|
|
sysPara->devOp->fpgaWrD(addr,(unsigned int )val,1);
|
|
}
|
|
else {
|
|
if(!sysPara->devOp->fpgaDevOpenFlag){
|
|
addr = readMemBaseAddr + name.toInt(&ok);
|
|
sysPara->devOp->memRdMap[(addr)&MAX_RD_MEM_SIZE_MASK] = (unsigned char)val;
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void MemDisplayAndEdit::on_lineEditDec_editingFinished()
|
|
{
|
|
bool ok;
|
|
QLineEdit * edit = qobject_cast<QLineEdit *>(sender());
|
|
unsigned int val = edit->text().toUInt(&ok,10);
|
|
ui->lineEditHex->setText(QString("%1").arg(val,0,16));
|
|
}
|
|
|
|
void MemDisplayAndEdit::on_lineEditHex_editingFinished()
|
|
{
|
|
bool ok;
|
|
QLineEdit * edit = qobject_cast<QLineEdit *>(sender());
|
|
unsigned int val = edit->text().toUInt(&ok,16);
|
|
ui->lineEditDec->setText(QString("%1").arg(val,0,10));
|
|
}
|