是这样的
小弟写了个串口程序,接收的时后触发程序
connect(Rxserialport,SIGNAL(readyRead()),
this,SLOT(Rxreaddate()));
然后程序会把接收的值按照协议解码成ui可用的值
全局变数
int DataValue[24];
int DataPoint=0;
MainWindow::Rxreaddate()
{
bool ok;
int Read_Data[4];
QString Strcode[8];
Rx=Rxserialport->readAll();
int Rxlength=Rx.length();
for(int i=0;i<Rxlength;i++)
{
Strcode=Rx.mid(0+i,1).toHex();
qDebug()<<"Strcode"<<i<<":"<<Strcode;
}
//int Read_Pack_No=Strcode[0].toInt(&ok,16)>>1;
//int Read_CRC=Strcode[3].toInt(&ok,16)>>1;
Read_Data[0]=Strcode[1].toInt(&ok,16)>>4;
Read_Data[1]=(Strcode[1].toInt(&ok,16)&0xF)|(Strcode[2].toInt(&ok,16)>>7);
Read_Data[2]=(Strcode[2].toInt(&ok,16)&0x7F)>>3;
Read_Data[3]=((Strcode[2].toInt(&ok,16)&0x6)<<1)|(Strcode[3].toInt(&ok,16)>>6);
int Value=(Read_Data[0]<<12)|
(Read_Data[1]<<8)|
(Read_Data[2]<<4)|
(Read_Data[3]);
qDebug()<<"RX"<<Rx;
qDebug()<<Value;
DataValue[DataPoint]=Value; DataPoint+=1;
if(DataPoint>24){ DataPoint=0;
}}
小弟想请教一下 今天小弟希望实现计算的值按照顺序放在一个阵列内 int DataValue[24];
然后每当阵列的值有变动的时后再触发一个信号槽到另一个子程序内
比方说这样
void MainWindow::RxDatatoWiget()
{
ui->Gain_spinBox->setValue(Value[0]);
ui->Level_spinBox->setValue(Value[1]);
..........
.............
.................
}
请教一下是否有可行的写法呢? 小弟昨天试了一天都找不到办法自定义阵列信号槽