这是初始化一个串口:
signal_port = new Win_QextSerialPort("COM7",QextSerialBase::EventDriven);
signal_port->open(QIODevice::ReadWrite);
signal_port->setBaudRate(BAUD9600);
signal_port->setDataBits(DATA_8);
signal_port->setParity(PAR_NONE);
signal_port->setStopBits(STOP_1);
signal_port->setFlowControl(FLOW_OFF);
signal_port->setTimeout(500);
这是调用串口的方法:
void CalibWizard::signal_low_potential()
{
signal_port->open(QIODevice::ReadWrite);
char convert[11];
//输出2.5V电压
uint DataFrame[11];
DataFrame[0] = 0x00;
DataFrame[1] = 0x10;
DataFrame[2] = 0x10;
DataFrame[3] = 0x05;
DataFrame[4] = 0x00;
DataFrame[5] = 0x01;
DataFrame[6] = 0x02;
DataFrame[7] = 0x00;
DataFrame[8] = 0x01;
uint CRCData = CRC16(DataFrame,9);//原来数据长度为9,10位和11位是计算出来的
DataFrame[10] = CRCData >> 8;//原来的高给低
CRCData <<= 8;//低位移到高位
DataFrame[9] = CRCData >> 8;//再把高位移下来
for(int i = 0; i < sizeof(DataFrame);i++)
{
convert=DataFrame;
}
signal_port->write(convert,sizeof(convert));
}
我通过注释 signal_port->write(convert,sizeof(convert));这句话就能正常运行,你们看看吧!