用qt写的串口通信程序,实现了,1、发送文件,2、发送接收十六进制,3、基本收发
软件打包发布以后的:https://download.csdn.net/download/qq_39340220/10719686
源代码:https://download.csdn.net/download/qq_39340220/10719472
/**
* @brief 查找串口号并放入QComboBox中
* @param None
* @retval None
*/
void serialWidget::FindSerial()
{
//这里我使用自动寻找可用串口的方法,直接自动设置了
foreach (const QSerialPortInfo &info, QSerialPortInfo::availablePorts())
{
QSerialPort serial;
serial.setPort(info);
//如果成功,则返回true;否则返回false
if(serial.open(QIODevice::ReadWrite))
{
int itemnumber=ui->comboBoxSerial->count();//获得当前列表个数
int Noitem = 0;//标志位判断是否已经添加
for(int i=0;i
{
if(ui->comboBoxSerial->itemText(i)==serial.portName())//如果查找到的项目已存在标志位加1
{
Noitem++;
}
}
//标志位不等于0表面当前查找到的串口,先去已经存储
//标志位等于零表示串口没有添加,可添加
if(Noitem == 0)
{
Noitem = 0;
ui->comboBoxSerial->addItem(serial.portName());
}
DeletePullSerial();//删除拔出的usb串口
serial.close();
}
}
}
/**
* @brief 串口初始化
* @param None
* @retval None
*/
void serialWidget::initserial()
{
//1、设置串口名(如COM1)
serial->setPortName(ui->comboBoxSerial->currentText());
//2、打开串口
if(!serial->open(QIODevice::ReadWrite))
{
ui->labelstate->setText("串口打开失败");
ui->ButtonSenddata->setEnabled(false);
ui->ButtonSendSeleFile->setEnabled(false);
}
else
{
ui->labelstate->setText("串口打开成功");
ui->ButtonSenddata->setEnabled(true);
ui->ButtonSendSeleFile->setEnabled(true);
}
//3、设置波特率(如:115200)
serial->setBaudRate(ui->comboBoxBaud->currentText().toInt());
//4、设置校验位(如:0)//currentText().toInt()返回的是当前索引
switch(ui->comboBoxCheck->currentText().toInt())
{
case 0:serial->setParity(QSerialPort::NoParity);break;
case 1:serial->setParity(QSerialPort::OddParity);break;
case 2:serial->setParity(QSerialPort::EvenParity);break;
case 3:serial->setParity(QSerialPort::MarkParity);break;
case 4:serial->setParity(QSerialPort::SpaceParity);break;
}
//5、设置数据位(如:8位)
switch(ui->comboBoxBit->currentText().toInt())
{
case 0:serial->setDataBits(QSerialPort::Data5);break;
case 1:serial->setDataBits(QSerialPort::Data6);break;
case 2:serial->setDataBits(QSerialPort::Data7);break;
case 3:serial->setDataBits(QSerialPort::Data8);break;
}
//6、停止位(如:1)
switch(ui->comboBoxStop->currentText().toInt())
{
case 0:serial->setStopBits(QSerialPort::OneStop);break;
case 1:serial->setStopBits(QSerialPort::OneAndHalfStop);break;
case 2:serial->setStopBits(QSerialPort::TwoStop);break;
}
//7、设置流控制(如:0)
switch(ui->comboBoxFlow->currentText().toInt())
{
case 0:serial->setFlowControl(QSerialPort::NoFlowControl);break;
case 1:serial->setFlowControl(QSerialPort::HardwareControl);break;
case 2:serial->setFlowControl(QSerialPort::SoftwareControl);break;
case 3:serial->setFlowControl(QSerialPort::UnknownFlowControl);break;
}
}
你可能感兴趣的:(QT写的串口调试助手)