QtExa001自动包装流水线的框架设计vs2019QT
QtExa001自动包装流水线的框架设计
工程代码:
https://download.csdn.net/download/txwtech/89636815
https://download.csdn.net/download/txwtech/89636815
主界面:
设置:进行参数配置,保存ini文件
调试:tcp/ip,串口,modbus tcp/RTU,http进行调试
查询:通过连接mysql数据库实现增删改查操作
登录界面:tt,密码1登录后,设置与调试显示可用
多线程的操作:点击开始后,启动任务,对主界面相关控件进行信息更新
底部实时显示当前时间,配置的IP与端口信息
实现整体流水线任务时,根据项目业务逻辑,通过调试通信的代码一起放到线程中运行

鼠标移动到按钮工具提示,信息提示


程序启动,初始化部分
void auto_pack_line_demo::InitInterface()
{AddToMainLog("程序启动");AddToMainLog("developed by cdtxw@foxmail");ui.pushButton_setting->setEnabled(false);ui.pushButton_debug->setEnabled(false);std::shared_ptr<CFile_Operation> ptr1 = std::make_shared<CFile_Operation>();//make_shared函数创建std::shared_ptr<CFile_Operation> ptr2 = std::shared_ptr<CFile_Operation>(); //构造函数创建ptr1->AddToLoginfo("smart ptr test");ptr2->AddToLoginfo("smart ptr test2");serial_modbus_ptr = std::make_shared<SerialModbus>();cfile_operation = new CFile_Operation();main_thread = new MainTaskThread();c_op->ReadAllMainConfig();tcp_Client = new tcp_client();http_req = new http_request();tcp_client_modbus = new TcpClientModbus();tcp_Client->Connect(c_op->vision_ip, c_op->vision_port);tcp_client_modbus->Connect(c_op->plc1_ip,c_op->plc1_port);serial_modbus_ptr->SerialConnect(c_op->serial_port_read_weight,c_op->baudrate_read_weight.toInt());//SerialModbus* bb = serial_modbus_ptr.get();//bb->SerialConnect("aa",11);QString tcp_msg=tcp_client_modbus->GetConnectInfo();QTimer* timer2 = new QTimer(this);connect(timer2, &QTimer::timeout, this, &auto_pack_line_demo::TimerUpdate);timer2->start(1000);ui.lineEdit_PLC_IP->setText(c_op->plc1_ip);ui.lineEdit_PLC_port->setText(c_op->plc1_port);ui.lineEdit_vision_IP->setText(c_op->vision_ip);ui.lineEdit_vision_port->setText(c_op->vision_port);QToolTip::setFont(font3); //按钮提示信息通用设置// QPalette toolTipPalette= QToolTip::palette();// toolTipPalette.setColor(QPalette::Text, Qt::white); // 设置文本颜色为红色// toolTipPalette.setColor(QPalette::WindowText, Qt::blue); // 设置窗口文本颜色为蓝色// toolTipPalette.setColor(QPalette::Background, Qt::yellow); // 设置背景颜色为黄色QPalette pal = QToolTip::palette();// 修改背景色,工具提示,按钮信息提示pal.setColor(QPalette::Inactive,QPalette::ToolTipBase,// QColor("darkblue")QColor("blue"));// 修改文本颜色pal.setColor(QPalette::Inactive,QPalette::ToolTipText,//QColor("lightyellow")QColor("black"));QToolTip::setPalette(pal);setWindowIcon(QIcon("box_1a.png")); // 使用文件系统路径table_view_msg = ui.tableView_lot_information;//table_view_box_label = ui->tableView_box_label_info;//QPixmap pixmap(":/auto_pack_line_demo/pics/box_1a.png");//代码设置图片路径// ui.label_main_box->setPixmap(pixmap); //设置图片ui.label_main_box->setScaledContents(true); //适应控件大小QString msg = "";// ui->plainTextEdit_log_msg->appendPlainText(msg);btn_start = ui.pushButton_start;btn_pause = ui.pushButton_pause;btn_inspection = ui.pushButton_inspection;btn_exit = ui.pushButton_system_exit;btn_prod_precheck = ui.pushButton_inspection;btn_logoff = ui.pushButton_user_logoff;// lineedit_yinzi = ui->lineEdit_yinzi_check;btn_setting = ui.pushButton_setting;btn_debug = ui.pushButton_debug;// btn_camera_debug = ui->pushButton_camera_debug;btn_database = ui.pushButton_query;btn_log_in = ui.pushButton_user;//btn_log_info = ui->pushButton_log_info;connect(this, &auto_pack_line_demo::Thread3Finished, this, [=](int value) {ui.lineEdit_vision_info->setText(QString::number(value));});connect(ui.pushButton_system_exit, (SIGNAL(clicked())), this, SLOT(CloseWindow()));connect(ui.pushButton_start, (SIGNAL(clicked())), this, SLOT(StartTask()));connect(ui.lineEdit_equ_comm, &QLineEdit::textChanged, this, [=] {if (ui.lineEdit_equ_comm->text() == "OK"){QString green = QString("background-color: rgb(85, 255, 0);");ui.lineEdit_equ_comm->setStyleSheet(green);}else{QString red = QString("background-color: rgb(255, 0, 0);");QString yellow = QString("background-color: rgb(255, 255, 0);");ui.lineEdit_equ_comm->setStyleSheet(yellow);}});connect(btn_setting, (SIGNAL(clicked())), this, SLOT(OpenSettingWindow()));connect(btn_debug, (SIGNAL(clicked())), this, SLOT(OpenDebugWindow()));//宏定义方式,QT4.0connect(ui.pushButton_query, &QPushButton::clicked, this, [=] {Dialog_DataBase2* dialog_database = new Dialog_DataBase2(this);dialog_database->setModal(true);dialog_database->show();});connect(table_view_msg, &QTableView::clicked, this, &auto_pack_line_demo::GetTableViewLotSelectedText); //QT5connect(lineedit_yinzi, &QLineEdit::textChanged, this, [=](QString input_msg) {if (input_msg.length() > 3){AddToMainLog("已输入印字信息:" + lineedit_yinzi->text());}});connect(ui.pushButton_user, &QPushButton::clicked, this, [=] {dialog_login = new Dialog_LogIn(this);dialog_login->setModal(true);dialog_login->show();connect(dialog_login, &Dialog_LogIn::LoginRet, this, [=](bool value) {if (value == true){ui.pushButton_setting->setEnabled(true);ui.pushButton_debug->setEnabled(true);btn_setting->setStyleSheet(styleSheet_setting);btn_debug->setStyleSheet(styleSheet_debug);AddToMainLog("登录成功");}else{btn_setting->setStyleSheet(sytleSheet_gray_font);btn_debug->setStyleSheet(sytleSheet_gray_font);ui.pushButton_setting->setEnabled(false);ui.pushButton_debug->setEnabled(false);AddToMainLog("登录失败");}});});connect(ui.pushButton_pause, &QPushButton::clicked, this, [=] {AddToMainLog("点击了暂停"); //cdtxw});connect(ui.pushButton_inspection, &QPushButton::clicked, this, [=] {AddToMainLog("点击了检测"); //cdtxw});connect(ui.pushButton_user_logoff, &QPushButton::clicked, this, [=] {AddToMainLog("点击了注销"); //cdtxw});// connect(btn_camera_debug, &QPushButton::clicked, this, [=] {// Dialog_camera_debug* camera_debug = new Dialog_camera_debug();// camera_debug->setModal(true);// camera_debug->showNormal();// });// connect(ui->pushButton_exit,(SIGNAL(clicked())),this,SLOT(close()));btn_start->setToolTip(("启动程序")); //按钮提示信息btn_pause->setToolTip(("系统暂停")); //按钮提示信息btn_exit->setToolTip(("退出程序")); //按钮提示信息btn_logoff->setToolTip(("注销用户")); //按钮提示信息btn_prod_precheck->setToolTip(("产品检测")); //按钮提示信息btn_setting->setToolTip(("参数配置")); //按钮提示信息btn_debug->setToolTip(("输入输出调试")); //按钮提示信息//btn_camera_debug->setToolTip(("相机调试")); //按钮提示信息btn_database->setToolTip(("数据库查询")); //按钮提示信息btn_log_in->setToolTip(("权限登录")); //按钮提示信息//btn_log_info->setToolTip(("日志查询")); //按钮提示信息// start_value = ("开始");start_value = "开始";stop_value = "停止";QString pic_path_start = tr(":/auto_pack_line_demo/pics/button_start_icon.png");QString pic_path_pause = tr(":/auto_pack_line_demo/pics/button_pause_icon.png");QString pic_path_user_change = tr(":/auto_pack_line_demo/pics/button_bg.png");QString pic_path_setting_icon = tr(":/auto_pack_line_demo/pics/setting_icon2.png");QString pic_path_debug_icon = tr(":/auto_pack_line_demo/pics/button_debug_icon_副本.png");QString pic_path_camera_icon = tr(":/auto_pack_line_demo/pics/摄像头图像采集_副本2.png");QString pic_path_database_icon = tr(":/auto_pack_line_demo/pics/button_calibration_icon_副本.png");QString pic_path_user_icon = tr(":/auto_pack_line_demo/pics/button_user_icon_副本.png");QString pic_path_logInfo_icon = tr(":/auto_pack_line_demo/pics/button_Log_icon.png");QString color_white = tr("rgb(255, 255, 255);");QString color_black = tr("rgb(0, 0, 0);");QString color_gray = tr("rgb(192,192,192);");QString styleSheet_start = QString("QPushButton{border-image:url(%1);background-color:transparent;border:none;font: 28pt \"Microsoft YaHei UI\";color:%2}""QPushButton:hover{background-color:transparent;font: 28pt \"Microsoft YaHei UI\";color:%3}""QPushButton:pressed{border-image:none;background-color: rgb(0, 170, 0);font: 28pt \"Microsoft YaHei UI\";}").arg(pic_path_start, color_white, color_black);QString styleSheet_pause = QString("QPushButton{border-image:url(%1);background-color:transparent;border:none;font: 28pt \"Microsoft YaHei UI\";color:%2}""QPushButton:hover{background-color:transparent;font: 28pt \"Microsoft YaHei UI\";color:%3}""QPushButton:pressed{border-image:none;background-color: rgb(0, 170, 0);font: 28pt \"楷体\";}").arg(pic_path_pause, color_white, color_black);QString styleSheet_exit = QString("QPushButton{border-image:url(%1);border:none;font: 28pt \"Microsoft YaHei UI\";color:%2}""QPushButton:hover{background-color:transparent;font: 28pt \"Microsoft YaHei UI\";color:%3}""QPushButton:pressed{border-image:none;background-color: rgb(0, 170, 0);font: 28pt \"楷体\";}").arg(pic_path_user_change, color_white, color_black);styleSheet_debug = QString("QPushButton{border-image:url(%1);border:none;font: 28pt \"Microsoft YaHei UI\";color:%2}""QPushButton:hover{background-color:transparent;font: 28pt \"Microsoft YaHei UI\";color:%3}""QPushButton:pressed{border-image:none;background-color: rgb(0, 170, 0);font: 28pt \"Microsoft YaHei UI\";}""QPushButton{image:url(%4);image-position: left center;text-align:center}").arg(pic_path_user_change, color_white, color_black, pic_path_debug_icon);QString styleSheet_camera = QString("QPushButton{border-image:url(%1);border:none;font: 28pt \"Microsoft YaHei UI\";color:%2}""QPushButton:hover{background-color:transparent;font: 28pt \"Microsoft YaHei UI\";color:%3}""QPushButton:pressed{border-image:none;background-color: rgb(0, 170, 0);font: 28pt \"Microsoft YaHei UI\";}""QPushButton{image:url(%4);image-position: left center;text-align:center}").arg(pic_path_user_change, color_white, color_black, pic_path_camera_icon);QString styleSheet_database = QString("QPushButton{border-image:url(%1);border:none;font: 28pt \"Microsoft YaHei UI\";color:%2}""QPushButton:hover{background-color:transparent;font: 28pt \"Microsoft YaHei UI\";color:%3}""QPushButton:pressed{border-image:none;background-color: rgb(0, 170, 0);font: 28pt \"Microsoft YaHei UI\";}""QPushButton{image:url(%4);image-position: left center;text-align:center}").arg(pic_path_user_change, color_white, color_black, pic_path_database_icon);QString styleSheet_user = QString("QPushButton{border-image:url(%1);border:none;font: 28pt \"Microsoft YaHei UI\";color:%2}""QPushButton:hover{background-color:transparent;font: 28pt \"Microsoft YaHei UI\";color:%3}""QPushButton:pressed{border-image:none;background-color: rgb(0, 170, 0);font: 28pt \"Microsoft YaHei UI\";}""QPushButton{image:url(%4);image-position: left center;text-align:center}").arg(pic_path_user_change, color_white, color_black, pic_path_user_icon);QString styleSheet_loginfo = QString("QPushButton{border-image:url(%1);border:none;font: 28pt \"Microsoft YaHei UI\";color:%2}""QPushButton:hover{background-color:transparent;font: 28pt \"Microsoft YaHei UI\";color:%3}""QPushButton:pressed{border-image:none;background-color: rgb(0, 170, 0);font: 28pt \"Microsoft YaHei UI\";}""QPushButton{image:url(%4);image-position: left center;text-align:center}").arg(pic_path_user_change, color_white, color_black, pic_path_logInfo_icon);//image: url(:/img/pics/auto_pack_main2.ico);// image-position: left center;btn_start->setStyleSheet(styleSheet_start);btn_logoff->setStyleSheet(styleSheet_start);btn_pause->setStyleSheet(styleSheet_pause);btn_prod_precheck->setStyleSheet(styleSheet_pause);btn_exit->setStyleSheet(styleSheet_exit);sytleSheet_gray_font = QString("QPushButton:hover{background-color:transparent;font: 28pt \"Microsoft YaHei UI\";color:%1}").arg(color_gray);styleSheet_setting = QString("QPushButton{border-image:url(%1);border:none;font: 28pt \"Microsoft YaHei UI\";color:%2}""QPushButton:hover{background-color:transparent;font: 28pt \"Microsoft YaHei UI\";color:%3}""QPushButton:pressed{border-image:none;background-color: rgb(0, 170, 0);font: 28pt \"Microsoft YaHei UI\";}""QPushButton{image:url(%4);image-position: left center;text-align:center}").arg(pic_path_user_change, color_white, color_black, pic_path_setting_icon);btn_setting->setStyleSheet(sytleSheet_gray_font);btn_debug->setStyleSheet(sytleSheet_gray_font);//btn_camera_debug->setStyleSheet(styleSheet_camera);btn_database->setStyleSheet(styleSheet_database);btn_log_in->setStyleSheet(styleSheet_user);//btn_log_info->setStyleSheet(styleSheet_loginfo);QString space2 = " ";btn_debug->setText(space2 + btn_debug->text());//btn_camera_debug->setText(space2 + btn_camera_debug->text());btn_database->setText(space2 + btn_database->text());btn_log_in->setText(space2 + btn_log_in->text());//btn_log_info->setText(space2 + btn_log_info->text());QStringList list;// list.append("aa");// list.append("bb");// list.append("cc");list << "aa" << "bb" << "cc";// QTableView aa;//table_view_msg->setModel(&model2);model = new QStandardItemModel(this);QStandardItemModel* model_box_label = new QStandardItemModel(this);//QStandardItem aa = new QStandardItem();model->setColumnCount(8);model->setHeaderData(0, Qt::Horizontal, ("序号"));model->setHeaderData(1, Qt::Horizontal, ("批次"));model->setHeaderData(2, Qt::Horizontal, ("类型"));model->setHeaderData(3, Qt::Horizontal, ("刻字"));model->setHeaderData(4, Qt::Horizontal, ("数量(总)"));model->setHeaderData(5, Qt::Horizontal, ("数量(单盘)"));model->setHeaderData(6, Qt::Horizontal, ("卷盘总数"));model->setHeaderData(7, Qt::Horizontal, ("入站时间"));model->setItem(0, 0, new QStandardItem(("1")));model->setItem(0, 1, new QStandardItem(("ABC2345670")));model->setItem(0, 2, new QStandardItem(("SS355")));model->setItem(0, 3, new QStandardItem(("A1")));model->setItem(0, 4, new QStandardItem(("150000")));model->setItem(0, 5, new QStandardItem(("1500")));model->setItem(0, 6, new QStandardItem(("10")));model->setItem(0, 7, new QStandardItem(("2024/4/22 11:20:30")));model->setItem(1, 0, new QStandardItem(("2")));model->setItem(1, 1, new QStandardItem(("CBC2345670")));model->setItem(1, 2, new QStandardItem(("SS358")));model->setItem(1, 3, new QStandardItem(("A2")));model->setItem(1, 4, new QStandardItem(("150000")));model->setItem(1, 5, new QStandardItem(("1500")));model->setItem(1, 6, new QStandardItem(("10")));model->setItem(1, 7, new QStandardItem(("2024/4/22 11:20:30")));QList<QStandardItem*> qq1;for (int i = 0; i < 6; i++){QString value = "aa" + QString::number(i + 1); //数字转字符qq1.append(new QStandardItem(value));}QString aa = "111";int aa_int = aa.toInt();//字符转数字model->appendRow(qq1);table_view_msg->setModel(model);table_view_msg->verticalHeader()->setVisible(false);model_box_label->setColumnCount(6);model_box_label->setHeaderData(0, Qt::Horizontal, ("序号"));model_box_label->setHeaderData(1, Qt::Horizontal, ("批次"));model_box_label->setHeaderData(2, Qt::Horizontal, ("类型"));model_box_label->setHeaderData(3, Qt::Horizontal, ("dateCode"));model_box_label->setHeaderData(4, Qt::Horizontal, ("数量(盒)"));model_box_label->setHeaderData(5, Qt::Horizontal, ("查询时间"));model_box_label->setItem(0, 0, new QStandardItem(("1")));model_box_label->setItem(0, 1, new QStandardItem(("LA12345670")));model_box_label->setItem(0, 2, new QStandardItem(("SOT23")));model_box_label->setItem(0, 3, new QStandardItem(("DTE2351")));model_box_label->setItem(0, 4, new QStandardItem(("10")));model_box_label->setItem(0, 5, new QStandardItem(("2024/4/22 11:20:30")));model_box_label->setItem(1, 0, new QStandardItem(("2")));model_box_label->setItem(1, 1, new QStandardItem(("LA12345671")));model_box_label->setItem(1, 2, new QStandardItem(("SOT123")));model_box_label->setItem(1, 3, new QStandardItem(("DTE2351")));model_box_label->setItem(1, 4, new QStandardItem(("10")));model_box_label->setItem(1, 5, new QStandardItem(("2024/4/22 11:20:30")));//table_view_box_label->setModel(model_box_label);//table_view_box_label->verticalHeader()->setVisible(false);}
设置:参数配置

调试界面测试:TCP通信

模拟连接PLC进行modbus TCP通信,线圈与寄存器的读写操作

http的get应用

串口RS485 modbus RTU通信
普通串口通信:

多线程的操作:
通过两种方法创建了多个线程,同时运行,实时更新主界面控件
void auto_pack_line_demo::StartTask()
{// QMessageBox::information(this,"提示","ab");// QMessageBox::information(this,"提示1","baaa");AddToTableView_lot_info();if (btn_start->text() == start_value){QMessageBox::StandardButton select_ret = QMessageBox::information(this, ("提示"), (" 确认启动设备吗? "), QMessageBox::Yes, QMessageBox::No);if (select_ret == ret_yes){b_main_thread = true;btn_start->setText(stop_value);AddToMainLog("点击开始");connect(main_thread, &MainTaskThread::sig_update_main_loginfo, this, &auto_pack_line_demo::AddToMainLog);connect(main_thread, &MainTaskThread::sig_update_main_equ_info, this, &auto_pack_line_demo::EquStateChanged);connect(main_thread, &MainTaskThread::sig_update_main_ocr_info, this, &auto_pack_line_demo::OcrChanged);connect(main_thread, &MainTaskThread::sig_update_main_label_process_info, this, &auto_pack_line_demo::ProcessStateChanged);main_thread->start();QFuture<void> future1 = QtConcurrent::run(this, &auto_pack_line_demo::UpdateVisionComm); //窗口按钮里面写法//QFuture<void> future1 = QtConcurrent::run(UpdateVisionComm); //控制台的代码// future1.waitForFinished(); //表示阻塞模式QFuture<void> future2 = QtConcurrent::run(this, &auto_pack_line_demo::UpdateVisionComm2); //窗口按钮里面写法//QFuture<void> future1 = QtConcurrent::run(UpdateVisionComm); //控制台的代码// future1.waitForFinished();//QMessageBox::information(this, (" 提示 "), btn_start->text() + (",选择了是"));QFuture<int> future3 = QtConcurrent::run(this, &auto_pack_line_demo::UpdateVisionComm3);//future3.waitForFinished();//表示阻塞模式//int fu3 = future3.result();// qDebug() << "fu3的结果:" << QString::number(fu3);}else{QMessageBox::information(this, (" 提示 "), btn_start->text() + (",选择了否"));}}else if (btn_start->text() == stop_value){btn_start->setText(start_value);disconnect(main_thread,nullptr, nullptr, nullptr);AddToMainLog("已点击停止");main_thread->stop();b_main_thread = false;}
}

数据库的查询:

相关文章:
QtExa001自动包装流水线的框架设计vs2019QT
QtExa001自动包装流水线的框架设计 工程代码: https://download.csdn.net/download/txwtech/89636815https://download.csdn.net/download/txwtech/89636815 主界面: 设置:进行参数配置,保存ini文件 调试:tcp/ip&…...
SpringBoot拦截器的使用介绍
SpringBoot拦截器的使用介绍 本篇文章主要讲的是 SpringBoot 拦截器的使用介绍。 1、定义拦截器 拦截器:所谓拦截器,就是能够在进行某个操作之前拦截请求,如果请求符合条件就允许在往下执行。 定义拦截器的几种方式。 1.1 实现HandleInt…...
Spring Boot应用中的资源分离与高效打包实践
在电商网站项目中,前端资源通常包括HTML、CSS、JavaScript、图片、字体等静态文件,以及Thymeleaf或Freemarker等模板引擎渲染的页面。将这些资源从Spring Boot主应用中分离出来,不仅有利于前后端团队的并行开发,还能提高应用的加载…...
分析 avformat_open_input 数据读取过程
------------------------------------------------------------ author: hjjdebug date: 2024年 08月 13日 星期二 17:31:43 CST descriptor: 分析 avformat_open_input 数据读取过程 ------------------------------------------------------------ avformat_open_input 中读…...
Apache HOP (Hop Orchestration Platform) VS Data Integration (通常被称为 Kettle)
Apache HOP (Hop Orchestration Platform) 和 Data Integration (通常被称为 Kettle) 都是强大的 ETL (Extract, Transform, Load) 工具, 它们都由 Hitachi Vantara 开发和支持。尽管它们有着相似的目标,即帮助用户进行数据集成任务,但它们在…...
如何判断一个dll/exe是32位还是64位
通过记事本判断(可判断C或者C#) 64位、将dll用记事本打开,可以看到一堆乱码,但是找到乱码行的第一个PE,如果后面是d?则为64位 32位、将dll用记事本打开,可以看到一堆乱码,但是找到乱码行的第…...
加速网页加载,提升用户体验:HTML、JS 和 Vue 项目优化全攻略
在信息爆炸的时代,网页加载速度成为了用户体验的重中之重。试想一下,如果一个页面加载超过 3 秒,你还有耐心等待吗? 为了留住用户,提升转化率,网页优化势在必行! 本文将从 HTML、JavaScript 和…...
LVS服务器基础环境配置
环境配置 1 基础服务关闭 setenforce 0 # 临时关闭selinuxvi /etc/sysconfig/selinux # 永久关闭selinuxsystemctl disable --now firewalld # 关闭防火墙systemctl disable --now NetworkManager # 关闭网络管理器2 centos7软件仓库的配置 mount /dev/cdrom /media以防万一&…...
【Python OpenCV】使用OpenCV实现两张图片拼接
问题引入: 如何使用Python OpenCV实现两张图片的水平拼接和垂直拼接 代码实现: import cv2 import numpy as npdef image_hstack(image_path_1, image_path_2):"""两张图片左右拼接"""img1 cv2.imread(image_path_1)img…...
springboot jar -jar centos后台运行的几种方式
在CentOS系统中,如果你想要在后台运行一个Spring Boot应用程序,你可以使用nohup命令或者使用screen会话。以下是两种常用的方法: 1. **使用nohup命令**: nohup命令可以使进程在你退出SSH会话后继续运行。它还会把标准输出和标…...
【GitLab】使用 Docker 安装 GitLab:配置 SSH 端口
使用 Docker 安装 GitLab 要求修改ssh端口 GitLab 使用 SSH 通过 SSH 与 Git 交互。默认情况下,GitLab 使用端口22。 要在使用 GitLab Docker 映像时使用其他端口,您可以执行以下操作之一: 更改服务器的 SSH 端口(推荐)。 更改 GitLab Shell SSH 端口。 更改服务器的 SSH …...
【pdf文件生成】如何将盖章的文件生成PDF文件
一、提出问题 在我们的工作中,有时候上级让下级将盖章的文件生成PDF文件通过内部平台发送到上级邮箱,那如何解决呢?是去找一个扫描仪,还是用手机拍图转。用Python基实就能实现。 二、分析问题 现在网上好多的软件都是收费的&am…...
铝壳电阻在电路中的作用和影响是什么?
铝壳电阻,顾名思义,就是用铝材料制成的电阻。在电路中,它主要起到限流、分压、负载等作用。下面详细介绍铝壳电阻在电路中的作用和影响。 1. 限流作用:铝壳电阻可以限制电流的大小,防止电流过大而损坏电路。当电路中的…...
# Python 判断入参日期是周几
在数据分析和软件开发中,经常需要判断某个特定日期是星期几。Python 提供了强大的日期时间处理功能,可以轻松实现这一功能。本篇文章将介绍如何使用 Python 的内置库来判断给定日期是星期几,并提供具体实例。 1. 使用 datetime 模块 Python…...
井字棋游戏(HTML+CSS+JavaScript)
🌏个人博客主页:心.c 前言:这两天在写植物大战僵尸,写不动了,现在和大家分享一下之前我写的一个很简单的小游戏井字棋,这个没有AI,可以两个人一起玩,如果大家觉得我哪里写的有一些问…...
HTML 列表和容器元素——WEB开发系列10
HTML 提供了多种方式来组织和展示内容,其中包括无序列表、有序列表、分区元素 <div> 和内联元素 <span>、以及如何使用 <div> 进行布局和表格布局。 一、HTML 列表 1. 无序列表 (<ul>) 无序列表用于展…...
Java数组的高级使用技巧与性能优化
Java数组的高级使用技巧与性能优化 大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿! Java数组是程序设计中的基础数据结构,提供了一种存储固定大小的同类型元素的方式。本文将介绍Jav…...
python spyne报No module named ‘http.cookies‘的解决
python spyne报No module named ‘http.cookies’ python实现webservice服务端时,会使用spyne这个库,安装后,运行会提示No module named ‘http.cookies’。 尝试过不行的方法 pip install http.cookiespip install http.cookiejar 可行的…...
vmware虚拟机玩GPU显卡直通
安装好exsi以后,找到管理----硬件-----PCI设备,勾选想要直通的显卡,然后点击“切换直通” 切换以后可以看到列表中的直通列显示为活动就对了。 然后编辑虚拟机设置,CPU关闭硬件虚拟化(向客户机操作系统公开硬件辅助的…...
Linux下Oracle 11g升级19c实录
1.组件信息 source /home/oracle/.bash_profile11g && sqlplus "/ as sysdba"<<EOF set line 200 col COMP_NAME for a40 select comp_name,VERSION,STATUS from dba_registry; exit; EOF COMP_NAME VERSION …...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...
深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...
调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
Springboot社区养老保险系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,社区养老保险系统小程序被用户普遍使用,为方…...
站群服务器的应用场景都有哪些?
站群服务器主要是为了多个网站的托管和管理所设计的,可以通过集中管理和高效资源的分配,来支持多个独立的网站同时运行,让每一个网站都可以分配到独立的IP地址,避免出现IP关联的风险,用户还可以通过控制面板进行管理功…...
Bean 作用域有哪些?如何答出技术深度?
导语: Spring 面试绕不开 Bean 的作用域问题,这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开,结合典型面试题及实战场景,帮你厘清重点,打破模板式回答,…...
通过MicroSip配置自己的freeswitch服务器进行调试记录
之前用docker安装的freeswitch的,启动是正常的, 但用下面的Microsip连接不上 主要原因有可能一下几个 1、通过下面命令可以看 [rootlocalhost default]# docker exec -it freeswitch fs_cli -x "sofia status profile internal"Name …...
0x-3-Oracle 23 ai-sqlcl 25.1 集成安装-配置和优化
是不是受够了安装了oracle database之后sqlplus的简陋,无法删除无法上下翻页的苦恼。 可以安装readline和rlwrap插件的话,配置.bahs_profile后也能解决上下翻页这些,但是很多生产环境无法安装rpm包。 oracle提供了sqlcl免费许可,…...
