环境配置

先后安装VS2015,Halcon13,HuaTengVersion

VS2015配置

项目属性–>常规
在这里插入图片描述
VC++目录–>包含目录:D:\softwares\halcon\include\cpp;D:\softwares\halcon\include\halconcpp;D:\softwares\halcon\include;

VC++目录–>库目录:D:\softwares\halcon\lib\x86sse2-win32;
在这里插入图片描述
C/C+±->常规–>附加包含目录:C:\Users\GHOST\Desktop\小任务\震荡级加工程序\ShockLevel\Include;D:\softwares\halcon\include;D:\softwares\halcon\include\halconcpp;
在这里插入图片描述
C/C+±->代码生成–>运行库
在这里插入图片描述
链接器–>附加库目录:D:\softwares\halcon\lib\x86sse2-win32;
在这里插入图片描述

链接器–>输入–>附加依赖项:halconcpp.lib;
在这里插入图片描述
把绘图相关库扔到相应位置
在这里插入图片描述

HuaTengVersion配置

==安装好halcon后点击下图文件夹中SetUp.exe安装相关插件
在这里插入图片描述

Halcon13配置

将下图框选的动态链接库复制进D:\softwares\halcon\bin\x86sse2-win32下

在这里插入图片描述
将下图框选文件复制进D:\softwares\halcon\lib\x86sse2-win32
在这里插入图片描述
打开halcon,注意接口选择(HuaTengVersion),连接后方可修改参数。
在这里插入图片描述
halcon端程序,结合可视化窗口及变量区调节视频流灰度梯度阈值

* Image Acquisition 01: Attention: The initialization may fail in case parameters need to
* Image Acquisition 01: be set in a specific order (e.g., image resolution vs. offset).
open_framegrabber ('HuaTengVision13', 1, 1, 0, 0, 0, 0, 'progressive', 8, 'Gray', -1, 'false', 'auto', 'Camera HT-SUA134GM#0003-0016', 0, -1, AcqHandle)* Image Acquisition 01: Code generated by Image Acquisition 01
* open_framegrabber ('DirectFile', 1, 1, 0, 0, 0, 0, 'default', 8, 'rgb', -1, 'false', 'C:/Users/GHOST/Desktop/testavi_01.avi', 'default', -1, -1, AcqHandle)grab_image_start (AcqHandle, -1)
i :=1
area := 0
startFlagPos := 1
count := 1
while (true)grab_image_async (Image, AcqHandle, -1)* Image Acquisition 01: Do somethingbinary_threshold (Image, Region, 'max_separability', 'light', UsedThreshold1)* opening_circle (Region, RegionOpening, 5)* closing_circle (RegionOpening, RegionClosing, 5)area_1 := areaarea_center (Region, Area, Row, Column)area := Areaif ((area > 5000 and area <100000) and (area_1 < 5000 or area_1 > 100000))startFlagPos := iendifif(i == (startFlagPos + 5))* 获取图片整个区域get_domain (Image, Domain)* 取得图片平均灰度Meanintensity (Domain, Image, Mean, Deviation) * 获取图像大小get_image_pointer1 (Image, Pointer, Type, Width, Height)* 获取图像总灰度grayVal := Mean * Width * Heightfilename := 'C:/Users/GHOST/Desktop/catch/'+count+'grayVal' + grayVal +'.png'write_image (Image, 'png', 0, filename)count := count + 1endif* 获取开闭后连通的区域* connection (RegionClosing, Region)* 获取开闭后连通的区域数量* count_obj (Region, Number)i := i+1
endwhile
close_framegrabber (AcqHandle)

导出,生成c++程序,将Action代码块中程序嵌入到mfc中

MFC程序

主窗体

在这里插入图片描述

主体.h


// ShockLevel.h : PROJECT_NAME 应用程序的主头文件
//#pragma once#ifndef __AFXWIN_H__#error "在包含此文件之前包含“stdafx.h”以生成 PCH 文件"
#endif#include "resource.h"		// 主符号// CShockLevelApp: 
// 有关此类的实现,请参阅 ShockLevel.cpp
//class CShockLevelApp : public CWinApp
{
public:CShockLevelApp();// 重写
public:virtual BOOL InitInstance();// 实现DECLARE_MESSAGE_MAP()
};extern CShockLevelApp theApp;

主体.cpp


// ShockLevel.cpp : 定义应用程序的类行为。
//#include "stdafx.h"
#include "ShockLevel.h"
#include "ShockLevelDlg.h"#ifdef _DEBUG
#define new DEBUG_NEW
#endif// CShockLevelAppBEGIN_MESSAGE_MAP(CShockLevelApp, CWinApp)ON_COMMAND(ID_HELP, &CWinApp::OnHelp)
END_MESSAGE_MAP()// CShockLevelApp 构造CShockLevelApp::CShockLevelApp()
{// 支持重新启动管理器m_dwRestartManagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_RESTART;// TODO: 在此处添加构造代码,// 将所有重要的初始化放置在 InitInstance 中
}// 唯一的一个 CShockLevelApp 对象CShockLevelApp theApp;// CShockLevelApp 初始化BOOL CShockLevelApp::InitInstance()
{// 如果一个运行在 Windows XP 上的应用程序清单指定要// 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式,//则需要 InitCommonControlsEx()。  否则,将无法创建窗口。INITCOMMONCONTROLSEX InitCtrls;InitCtrls.dwSize = sizeof(InitCtrls);// 将它设置为包括所有要在应用程序中使用的// 公共控件类。InitCtrls.dwICC = ICC_WIN95_CLASSES;InitCommonControlsEx(&InitCtrls);CWinApp::InitInstance();AfxEnableControlContainer();// 创建 shell 管理器,以防对话框包含// 任何 shell 树视图控件或 shell 列表视图控件。CShellManager *pShellManager = new CShellManager;// 激活“Windows Native”视觉管理器,以便在 MFC 控件中启用主题CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerWindows));// 标准初始化// 如果未使用这些功能并希望减小// 最终可执行文件的大小,则应移除下列// 不需要的特定初始化例程// 更改用于存储设置的注册表项// TODO: 应适当修改该字符串,// 例如修改为公司或组织名SetRegistryKey(_T("应用程序向导生成的本地应用程序"));CShockLevelDlg dlg;m_pMainWnd = &dlg;INT_PTR nResponse = dlg.DoModal();if (nResponse == IDOK){// TODO: 在此放置处理何时用//  “确定”来关闭对话框的代码}else if (nResponse == IDCANCEL){// TODO: 在此放置处理何时用//  “取消”来关闭对话框的代码}else if (nResponse == -1){TRACE(traceAppMsg, 0, "警告: 对话框创建失败,应用程序将意外终止。\n");TRACE(traceAppMsg, 0, "警告: 如果您在对话框上使用 MFC 控件,则无法 #define _AFX_NO_MFC_CONTROLS_IN_DIALOGS。\n");}// 删除上面创建的 shell 管理器。if (pShellManager != NULL){delete pShellManager;}#ifndef _AFXDLLControlBarCleanUp();
#endif// 由于对话框已关闭,所以将返回 FALSE 以便退出应用程序,//  而不是启动应用程序的消息泵。return FALSE;
}

主窗口.h


// ShockLevelDlg.h : 头文件
//#pragma once
#include "TabSheet.h"
#include "InitSystem.h"
#include "Vortex.h"
#include "afxwin.h"// CShockLevelDlg 对话框
class CShockLevelDlg : public CDialogEx
{
// 构造
public:CShockLevelDlg(CWnd* pParent = NULL);	// 标准构造函数// 对话框数据
#ifdef AFX_DESIGN_TIMEenum { IDD = IDD_SHOCKLEVEL_DIALOG };
#endifprotected:virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV 支持// 实现
protected:HICON m_hIcon;// 生成的消息映射函数virtual BOOL OnInitDialog();afx_msg void OnSysCommand(UINT nID, LPARAM lParam);afx_msg void OnPaint();afx_msg HCURSOR OnQueryDragIcon();DECLARE_MESSAGE_MAP()
public:CTabSheet mTab;//声明标签页控件CInitSystem digInitSystem; //系统初始化标签页对象CVortex digVortex;//涡旋光检测标签页对象};

主窗口.cpp


// ShockLevelDlg.cpp : 实现文件
//#include "stdafx.h"
#include "ShockLevel.h"
#include "ShockLevelDlg.h"
#include "afxdialogex.h"
#include "InitSystem.h"
#include "Vortex.h"#ifdef _DEBUG
#define new DEBUG_NEW
#endif// 用于应用程序“关于”菜单项的 CAboutDlg 对话框class CAboutDlg : public CDialogEx
{
public:CAboutDlg();// 对话框数据
#ifdef AFX_DESIGN_TIMEenum { IDD = IDD_ABOUTBOX };
#endifprotected:virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持// 实现
protected:DECLARE_MESSAGE_MAP()
};CAboutDlg::CAboutDlg() : CDialogEx(IDD_ABOUTBOX)
{
}void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{CDialogEx::DoDataExchange(pDX);
}BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)
END_MESSAGE_MAP()// CShockLevelDlg 对话框CShockLevelDlg::CShockLevelDlg(CWnd* pParent /*=NULL*/): CDialogEx(IDD_SHOCKLEVEL_DIALOG, pParent)
{m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}void CShockLevelDlg::DoDataExchange(CDataExchange* pDX)
{CDialogEx::DoDataExchange(pDX);DDX_Control(pDX, IDC_TAB1, mTab);}BEGIN_MESSAGE_MAP(CShockLevelDlg, CDialogEx)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()
END_MESSAGE_MAP()// CShockLevelDlg 消息处理程序BOOL CShockLevelDlg::OnInitDialog()
{CDialogEx::OnInitDialog();// 将“关于...”菜单项添加到系统菜单中。// IDM_ABOUTBOX 必须在系统命令范围内。ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL){BOOL bNameValid;CString strAboutMenu;bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);ASSERT(bNameValid);if (!strAboutMenu.IsEmpty()){pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);}}// 设置此对话框的图标。  当应用程序主窗口不是对话框时,框架将自动//  执行此操作SetIcon(m_hIcon, TRUE);			// 设置大图标SetIcon(m_hIcon, FALSE);		// 设置小图标// TODO: 在此添加额外的初始化代码//添加标签页mTab.AddPage(TEXT("系统初始化"), &digInitSystem, IDD_DIALOG_INIT);mTab.AddPage(TEXT("涡旋光检测"), &digVortex, IDD_DIALOG_VORTEX);//显示mTab.Show();return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}void CShockLevelDlg::OnSysCommand(UINT nID, LPARAM lParam)
{if ((nID & 0xFFF0) == IDM_ABOUTBOX){CAboutDlg dlgAbout;dlgAbout.DoModal();}else{CDialogEx::OnSysCommand(nID, lParam);}
}// 如果向对话框添加最小化按钮,则需要下面的代码
//  来绘制该图标。  对于使用文档/视图模型的 MFC 应用程序,
//  这将由框架自动完成。void CShockLevelDlg::OnPaint()
{if (IsIconic()){CPaintDC dc(this); // 用于绘制的设备上下文SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);// 使图标在工作区矩形中居中int cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;// 绘制图标dc.DrawIcon(x, y, m_hIcon);}else{CDialogEx::OnPaint();}
}//当用户拖动最小化窗口时系统调用此函数取得光标
//显示。
HCURSOR CShockLevelDlg::OnQueryDragIcon()
{return static_cast<HCURSOR>(m_hIcon);
}

系统初始化

在这里插入图片描述
系统初始化.h

#pragma once
#include "afxwin.h"#ifdef _WIN64
#pragma comment(lib, ".\\MVCAMSDK_X64.lib")
#else
#pragma comment(lib, ".\\MVCAMSDK.lib")
#endif
// CInitSystem 对话框class CInitSystem : public CDialogEx
{DECLARE_DYNAMIC(CInitSystem)public:CInitSystem(CWnd* pParent = NULL);   // 标准构造函数virtual ~CInitSystem();// 对话框数据
#ifdef AFX_DESIGN_TIMEenum { IDD = IDD_DIALOG_INIT };
#endifprotected:virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持DECLARE_MESSAGE_MAP()
public:////////////////////////////////压电台相关////////////////////////////////*+---------------------------------+*/CComboBox controllerCom;//控制器串口控件int controllerComIndex;//控制器串口号索引CString controllerComName;//控制器串口号名称HANDLE mHandleE545;//E545工作台串口句柄DCB comE545;//E545串口信息CStringA temp;//暂存e545字符串命令,一定要定义成ASCII字符串,否则发送命令不正确unsigned long mWrite;//串口文件写时返回的数据暂存/*+-------------------------------------+*/void CloseAllController();void InitialController();//初始化工作台方法void GetCurrentPos();//更新当前工作台位置方法void ManualAdjustment(bool dir, int axis, float draw, float mMoveStep);/*+----------------------------------------+*/float DrawX;float DrawY;float DrawZ;//工作台当前位置(并非实际,而是根据命令)float mMoveStepX;float mMoveStepY;float mMoveStepZ;//压电台调整步长/*+-----------------------------------------+*/afx_msg void OnBnClickedButtonInitController();afx_msg void OnCbnSelchangeComboInitController();afx_msg void OnEnChangeEditStepX();afx_msg void OnBnClickedPosMinusX();afx_msg void OnBnClickedPosPlusX();afx_msg void OnEnChangeEditStepY();afx_msg void OnBnClickedPosMinusY();afx_msg void OnBnClickedPosPlusY();afx_msg void OnBnClickedPosMinusZ();afx_msg void OnEnChangeEditStepZ();afx_msg void OnBnClickedPosPlusZ();////////////////////////////光闸相关//////////////////////////CComboBox shutterCom;int shutterComIndex;//光闸串口号索引CString shutterComName;//光闸串口号名称HANDLE mHandleSC10;//SC10光闸串口句柄DCB comSC10;//SC10串口信息void InitialShutter();//初始化光闸方法bool shutterState;//光闸开关状态void CloseShutter();void OpenShutter();void CloseAllShutter();afx_msg void OnCbnSelchangeComboShutter();afx_msg void OnBnClickedButtonInitShutter();afx_msg void OnBnClickedButtonShutterOnOff();CButton btnShutterOnOff;
};

系统初始化.cpp

// InitSystem.cpp : 实现文件
//#include "stdafx.h"
#include "ShockLevel.h"
#include "InitSystem.h"
#include "afxdialogex.h"
// CInitSystem 对话框IMPLEMENT_DYNAMIC(CInitSystem, CDialogEx)CInitSystem::CInitSystem(CWnd* pParent /*=NULL*/): CDialogEx(IDD_DIALOG_INIT, pParent)
{DrawX = 0;mMoveStepX = 10;DrawY = 0;mMoveStepY = 10;DrawZ = 0;mMoveStepZ = 10;shutterState = false;
}CInitSystem::~CInitSystem()
{
}void CInitSystem::DoDataExchange(CDataExchange* pDX)
{CDialogEx::DoDataExchange(pDX);DDX_Control(pDX, IDC_COMBO_INIT_CONTROLLER, controllerCom);DDX_Text(pDX, IDC_EDIT_STEP_X, mMoveStepX);DDX_Text(pDX, IDC_EDIT_STEP_Y, mMoveStepY);DDX_Text(pDX, IDC_EDIT_STEP_Z, mMoveStepZ);DDX_Control(pDX, IDC_COMBO_SHUTTER, shutterCom);DDX_Control(pDX, IDC_BUTTON_SHUTTER_ON_OFF, btnShutterOnOff);
}BEGIN_MESSAGE_MAP(CInitSystem, CDialogEx)ON_BN_CLICKED(IDC_BUTTON_INIT_CONTROLLER, &CInitSystem::OnBnClickedButtonInitController)ON_CBN_SELCHANGE(IDC_COMBO_INIT_CONTROLLER, &CInitSystem::OnCbnSelchangeComboInitController)ON_EN_CHANGE(IDC_EDIT_STEP_X, &CInitSystem::OnEnChangeEditStepX)ON_BN_CLICKED(IDC_POS_MINUS_X, &CInitSystem::OnBnClickedPosMinusX)ON_BN_CLICKED(IDC_POS_PLUS_X, &CInitSystem::OnBnClickedPosPlusX)ON_EN_CHANGE(IDC_EDIT_STEP_Y, &CInitSystem::OnEnChangeEditStepY)ON_BN_CLICKED(IDC_POS_MINUS_Y, &CInitSystem::OnBnClickedPosMinusY)ON_BN_CLICKED(IDC_POS_PLUS_Y, &CInitSystem::OnBnClickedPosPlusY)ON_BN_CLICKED(IDC_POS_MINUS_Z, &CInitSystem::OnBnClickedPosMinusZ)ON_EN_CHANGE(IDC_EDIT_STEP_Z, &CInitSystem::OnEnChangeEditStepZ)ON_BN_CLICKED(IDC_POS_PLUS_Z, &CInitSystem::OnBnClickedPosPlusZ)ON_CBN_SELCHANGE(IDC_COMBO_SHUTTER, &CInitSystem::OnCbnSelchangeComboShutter)ON_BN_CLICKED(IDC_BUTTON_INIT_SHUTTER, &CInitSystem::OnBnClickedButtonInitShutter)ON_BN_CLICKED(IDC_BUTTON_SHUTTER_ON_OFF, &CInitSystem::OnBnClickedButtonShutterOnOff)END_MESSAGE_MAP()// CInitSystem 消息处理程序/*+------------------------------------------+*/
////////////////////////压电台当前位置送显/////////////////
void CInitSystem::GetCurrentPos() {CString x, y, z;x.Format(L"%.3f", DrawX);y.Format(L"%.3f", DrawY);z.Format(L"%.3f", DrawZ);SetDlgItemTextW(IDC_EDIT_CURRENT_POS_X, x);SetDlgItemTextW(IDC_EDIT_CURRENT_POS_Y, y);SetDlgItemTextW(IDC_EDIT_CURRENT_POS_Z, z);
}/////////////////////////压电台初始化////////////////////////////
void CInitSystem::InitialController() {CloseAllController();mHandleE545 = CreateFile(controllerComName, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);//创建e545串口文件if (mHandleE545 == INVALID_HANDLE_VALUE){MessageBox(L"e545串口创建错误!\n");return;}COMMTIMEOUTS cto = { 100,// 读间隔超时0,// 读时间系数0, // 读时间常量0, // 写时间系数0 // 写时间常量};if (!SetCommTimeouts(mHandleE545, &cto))  //超时控制,函数setcommtimeouts(,)?                                             {MessageBox(L"e545 设置超时错误!\n");return;}memset(&comE545, 0, sizeof(comE545)); //清空e545串口信息   GetCommState(mHandleE545, &comE545); //获取e545串口信息comE545.DCBlength = sizeof(comE545);comE545.BaudRate = CBR_115200; //波特率115200                                       comE545.fBinary = TRUE;comE545.fParity = TRUE;comE545.Parity = NOPARITY;  //无校检                                         comE545.StopBits = ONESTOPBIT;  //一位停止位,暂时不知道要不要                                      comE545.ByteSize = 8; //数据长度8位if (!SetCommState(mHandleE545, &comE545)) //设置e545串口信息                                                                       {AfxMessageBox(L"e545 串口设置错误!\n");return;}temp = "ONL 1 1 2 1 3 1\n";//设置三轴ONLINE模式WriteFile(mHandleE545, temp, temp.GetLength(), &mWrite, NULL);temp = "SVO A 1 B 1 C 1\n";//设置三轴为闭环WriteFile(mHandleE545, temp, temp.GetLength(), &mWrite, NULL);temp = "VCO A 1 B 1 C 1\n";//设置三轴速度可控WriteFile(mHandleE545, temp, temp.GetLength(), &mWrite, NULL);temp = "VEL A 1000 B 1000 C 1000\n";//设置三轴初始速度为1000um/sWriteFile(mHandleE545, temp, temp.GetLength(), &mWrite, NULL);temp = "GOH\n";//三轴回到原点WriteFile(mHandleE545, temp, temp.GetLength(), &mWrite, NULL);DrawX = 0;DrawY = 0;DrawZ = 0;GetCurrentPos();return;}
void CInitSystem::OnBnClickedButtonInitController()
{// TODO: 在此添加控件通知处理程序代码InitialController();//MessageBox(TEXT("2333"));
}
void CInitSystem::OnCbnSelchangeComboInitController()
{// TODO: 在此添加控件通知处理程序代码controllerComIndex = controllerCom.GetCurSel();//获取控制器串口号索引controllerCom.GetLBText(controllerComIndex, controllerComName);//获取控制器串口号名称
}
///////////////////////////关闭压电台///////////////////////////
void CInitSystem::CloseAllController()
{CloseHandle(mHandleE545);return;
}//////////////////////////压电台手动调整///////////////////////
void CInitSystem::ManualAdjustment(bool dir, int axis, float draw, float mMoveStep)
{if (dir) {if (draw + mMoveStep>200){MessageBox(L"超过工作台正极限!");return;}switch (axis){case 1: {temp.Format("MVR A %f\n", mMoveStep);//x方向负向调整一个步长,并等待1ms到位DrawX += mMoveStepX;break;}case 2: {temp.Format("MVR B %f\n", mMoveStep);//y方向负向调整一个步长,并等待1ms到位DrawY += mMoveStepY;break;}case 3: {temp.Format("MVR C %f\n", mMoveStep);//z方向负向调整一个步长,并等待1ms到位DrawZ += mMoveStepZ;break;}default:break;}}else {if (draw - mMoveStep<0){AfxMessageBox(L"超过工作台负极限!");return;}switch (axis){case 1: {temp.Format("MVR A %f\n", -1 * mMoveStep);//x方向正向调整一个步长,并等待1ms到位DrawX -= mMoveStepX;break;}case 2: {temp.Format("MVR B %f\n", -1 * mMoveStep);//y方向正向调整一个步长,并等待1ms到位DrawY -= mMoveStepY;break;}case 3: {temp.Format("MVR C %f\n", -1 * mMoveStep);//z方向正向调整一个步长,并等待1ms到位DrawZ -= mMoveStepZ;break;}default:break;}}WriteFile(mHandleE545, temp, temp.GetLength(), &mWrite, NULL);temp = "DEL 1\n";WriteFile(mHandleE545, temp, temp.GetLength(), &mWrite, NULL);GetCurrentPos();
}
void CInitSystem::OnEnChangeEditStepX()
{// TODO:  如果该控件是 RICHEDIT 控件,它将不// 发送此通知,除非重写 CDialogEx::OnInitDialog()// 函数并调用 CRichEditCtrl().SetEventMask(),// 同时将 ENM_CHANGE 标志“或”运算到掩码中。// TODO:  在此添加控件通知处理程序代码UpdateData(TRUE);
}
void CInitSystem::OnBnClickedPosMinusX()
{// TODO: 在此添加控件通知处理程序代码ManualAdjustment(0, 1, DrawX, mMoveStepX);
}
void CInitSystem::OnBnClickedPosPlusX()
{// TODO: 在此添加控件通知处理程序代码ManualAdjustment(1, 1, DrawX, mMoveStepX);
}
void CInitSystem::OnEnChangeEditStepY()
{// TODO:  如果该控件是 RICHEDIT 控件,它将不// 发送此通知,除非重写 CDialogEx::OnInitDialog()// 函数并调用 CRichEditCtrl().SetEventMask(),// 同时将 ENM_CHANGE 标志“或”运算到掩码中。// TODO:  在此添加控件通知处理程序代码UpdateData(TRUE);
}
void CInitSystem::OnBnClickedPosMinusY()
{// TODO: 在此添加控件通知处理程序代码ManualAdjustment(0, 2, DrawY, mMoveStepY);
}
void CInitSystem::OnBnClickedPosPlusY()
{// TODO: 在此添加控件通知处理程序代码ManualAdjustment(1, 2, DrawY, mMoveStepY);
}
void CInitSystem::OnEnChangeEditStepZ()
{// TODO:  如果该控件是 RICHEDIT 控件,它将不// 发送此通知,除非重写 CDialogEx::OnInitDialog()// 函数并调用 CRichEditCtrl().SetEventMask(),// 同时将 ENM_CHANGE 标志“或”运算到掩码中。// TODO:  在此添加控件通知处理程序代码UpdateData(TRUE);
}
void CInitSystem::OnBnClickedPosMinusZ()
{// TODO: 在此添加控件通知处理程序代码ManualAdjustment(0, 3, DrawZ, mMoveStepZ);
}
void CInitSystem::OnBnClickedPosPlusZ()
{// TODO: 在此添加控件通知处理程序代码ManualAdjustment(1, 3, DrawZ, mMoveStepZ);
}
/*+-----------------------------------------------------*/
/////////////////////////////光闸初始化/////////////////////////
void CInitSystem::InitialShutter()
{CloseAllShutter();mHandleSC10 = CreateFile(shutterComName, GENERIC_READ | GENERIC_WRITE, 0,NULL, OPEN_EXISTING, 0, NULL);//创建sc10串口文件if (mHandleSC10 == INVALID_HANDLE_VALUE){AfxMessageBox(L"sc10光闸串口创建错误!\n");return;}COMMTIMEOUTS cto = { 100,// 读间隔超时0,// 读时间系数0, // 读时间常量0, // 写时间系数0 // 写时间常量};if (!SetCommTimeouts(mHandleSC10, &cto))  //超时控制,函数setcommtimeouts(,)?                                             {AfxMessageBox(L"sc10 设置超时错误!\n");return;}memset(&comSC10, 0, sizeof(comSC10)); //清空sc10串口信息                                  GetCommState(mHandleSC10, &comSC10); //获取sc10串口信息comSC10.DCBlength = sizeof(comSC10);comSC10.BaudRate = CBR_9600; //波特率9600                                       comSC10.fBinary = TRUE;comSC10.fParity = TRUE;comSC10.Parity = NOPARITY;  //无校检                                         comSC10.StopBits = ONESTOPBIT;  //一位停止位                                      comSC10.ByteSize = 8; //数据长度8位if (!SetCommState(mHandleSC10, &comSC10)) //设置sc10串口信息                                                                       {AfxMessageBox(L"sc10 串口设置错误!\n");return;}temp = "baud=0\r";//设置baud:0-9.6K,1-115.2KWriteFile(mHandleSC10, temp, temp.GetLength(), &mWrite, NULL);temp = "trig=0\r";//设置trig触发模式:0-INT,1-EXTWriteFile(mHandleSC10, temp, temp.GetLength(), &mWrite, NULL);temp = "open=5\r";//设置开光闸时间,单位为ms,范围为1--1000WriteFile(mHandleSC10, temp, temp.GetLength(), &mWrite, NULL);temp = "shut=5\r";//设置关光闸时间,单位为ms,范围为1--1000WriteFile(mHandleSC10, temp, temp.GetLength(), &mWrite, NULL);temp = "mode=1\r";//设置mode:1-Manual,2-Auto,3-Single,4-Repeat,5-external gateWriteFile(mHandleSC10, temp, temp.GetLength(), &mWrite, NULL);//这几个状态设置的顺序很重要,否则有可能设置模式无效,//另外,光闸启动默认的参数为上次让光闸动的所有有效参数CloseShutter();return;
}
void CInitSystem::OnCbnSelchangeComboShutter()
{// TODO: 在此添加控件通知处理程序代码shutterComIndex = shutterCom.GetCurSel();//获取光闸串口号索引shutterCom.GetLBText(shutterComIndex, shutterComName);//获取光闸串口号名称
}
void CInitSystem::OnBnClickedButtonInitShutter()
{// TODO: 在此添加控件通知处理程序代码InitialShutter();
}/////////////////////////////关闭光闸////////////////////////////
void CInitSystem::CloseAllShutter()
{if (mHandleSC10)//如果sc10工作台串口句柄不为空CloseHandle(mHandleSC10);return;
}
///////////////////////////开关光闸//////////////////////////////
void CInitSystem::OnBnClickedButtonShutterOnOff()
{// TODO: 在此添加控件通知处理程序代码if (shutterState == false)//光闸是关的{OpenShutter();//开光闸}else //光闸是开的{CloseShutter();//关光闸}
}void CInitSystem::CloseShutter()
{if (shutterState == true)//如果光闸现在是开状态{temp = "ens\r";//切换光闸状态,WriteFile(mHandleSC10, temp, temp.GetLength(), &mWrite, NULL);shutterState = false;SetDlgItemText(IDC_BUTTON_SHUTTER_ON_OFF, TEXT("当前光闸状态:关"));}
}
void CInitSystem::OpenShutter()
{if (shutterState == false)//如果光闸现在是关状态{temp = "ens\r";//切换光闸状态WriteFile(mHandleSC10, temp, temp.GetLength(), &mWrite, NULL);shutterState = true;SetDlgItemText(IDC_BUTTON_SHUTTER_ON_OFF,TEXT("当前光闸状态:开"));}
}

涡旋光检测

涡旋光检测.h

#pragma once
#include "HalconCpp.h"
#include "afxwin.h"#include "process.h"
#include "CameraApi.h"
#include "CameraDefine.H"
#include "CameraStatus.h"#ifdef _WIN64
#pragma comment(lib, ".\\MVCAMSDK_X64.lib")
#else
#pragma comment(lib, "MVCAMSDK.lib")
#endif#include "resource.h"
#include "ChartCtrl\ChartCtrl.h"
#include "ChartCtrl\ChartTitle.h"
#include "ChartCtrl\ChartAxis.h"
#include "ChartCtrl\ChartAxisLabel.h"
#include "ChartCtrl\ChartLineSerie.h"#include <locale>//为了使用setlocale(LC_CTYPE, "chs");便于输入中文到txt中#include <string>
#include <sstream>#if defined _UNICODE ||defined UNICODE
typedef std::wstring TChartString;
typedef std::wstringstream TChartStringStream;
#else
typedef std::string TChartString;
typedef std::stringstream TChartStringStream;
#endif
//#pragma comment(lib,"halconcpp.lib")
using namespace HalconCpp;// CVortex 对话框
//void ThreadFunc(LPVOID lpParam);
class CVortex : public CDialogEx
{DECLARE_DYNAMIC(CVortex)public:CVortex(CWnd* pParent = NULL);   // 标准构造函数virtual ~CVortex();// 对话框数据
#ifdef AFX_DESIGN_TIMEenum { IDD = IDD_DIALOG_VORTEX };
#endifprotected:virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持DECLARE_MESSAGE_MAP()
public:virtual	BOOL OnInitDialog();bool PngCatchFlag;//抓图启动标志bool CCDOpenedFlag;//相机打开标志CWinThread* pThreadConnectCCD;//打开CCD的线程指针static UINT ConnectCCD(LPVOID pThreadParam);//打开CCD线程CStatic pictureCCD;CWnd* pWnd;CWnd* pWndPng;CRect Rect;CRect RectPng;afx_msg void OnBnClickedButtonPicInit();afx_msg void OnTimer(UINT_PTR nIDEvent);CStatic CCDInf;/////////////////////////CCD相关////////////////////////////BOOL InitCCD();BOOL CCDInitFlag;CameraHandle    m_hCamera;	//相机的设备句柄BYTE*           m_pFrameBuffer;//用于将原始图像数据转换为RGB的缓冲区UINT            m_threadID;//图像抓取线程的IDafx_msg void OnBnClickedButtonCcdInit();tSdkFrameHead   m_sFrInfo;//用于保存当前图像帧的帧头信息float           m_fDispFps;//显示帧率float           m_fCapFps;//捕获帧率HANDLE          m_hDispThread;//图像抓取线程的句柄BOOL            m_bExit;//用来通知图像抓取线程结束int	            m_iDispFrameNum;//用于记录当前已经显示的图像帧的数量CChartCtrl m_ChartCtrl1;void plot();/////////////////afx_msg void OnBnClickedButtonPlot();afx_msg void OnBnClickedButtonPlotClear();afx_msg void OnBnClickedButtonTxtSave();CEdit* mPtrTxtFileName;CString mTxtFileName;CStatic picturePng;afx_msg void OnBnClickedButtonCcdRun();afx_msg void OnBnClickedButtonCcdStop();afx_msg void OnBnClickedButtonCcdDiscont();afx_msg void OnBnClickedButtonCcdSets();
};

涡旋光.cpp

// Vortex.cpp : 实现文件
//
#include <windows.h>
#include <process.h>
#include "CameraApi.h"
#include <iostream>
#include "stdafx.h"
#include "ShockLevel.h"
#include "ShockLevelDlg.h"
#include "Vortex.h"
#include "afxdialogex.h"
#include "InitSystem.h"
#define TIMERID 1  //计时器ID//图像处理halcon变量
//+------------------------------------------------+//
HTuple m_HWindowID;//实时显示区句柄
HTuple m_HWindowPngID;//抓图显示区句柄
Hlong HWindowID;
Hlong HWindowPngID;
HObject ho_Image;//接收相机stream帧图片的变量
HTuple hv_AcqHandle;//相机句柄
HTuple m_ImageWidth, m_ImageHeight;
HObject  ho_Region, ho_Domain;
HTuple  hv_i, hv_area, hv_startFlagPos;
HTuple  hv_count, hv_UsedThreshold1, hv_area_1, hv_Area;
HTuple  hv_Row, hv_Column, hv_Mean, hv_Deviation, hv_Pointer;
HTuple  hv_Type, hv_Width, hv_Height, hv_grayVal, hv_filename;
//+--------------------------------------------------+//// CVortex 对话框IMPLEMENT_DYNAMIC(CVortex, CDialogEx)CVortex::CVortex(CWnd* pParent /*=NULL*/): CDialogEx(IDD_DIALOG_VORTEX, pParent)
{PngCatchFlag = false;CCDOpenedFlag = false;CCDInitFlag = false;
}CVortex::~CVortex()
{
}void CVortex::DoDataExchange(CDataExchange* pDX)
{CDialogEx::DoDataExchange(pDX);DDX_Control(pDX, IDC_CCD_SHOW, pictureCCD);DDX_Control(pDX, IDC_CUSTOM_CHART, m_ChartCtrl1);DDX_Control(pDX, IDC_PNG_SHOW, picturePng);
}BEGIN_MESSAGE_MAP(CVortex, CDialogEx)ON_BN_CLICKED(IDC_BUTTON_PIC_INIT, &CVortex::OnBnClickedButtonPicInit)ON_WM_TIMER()ON_BN_CLICKED(IDC_BUTTON_CCD_INIT, &CVortex::OnBnClickedButtonCcdInit)ON_BN_CLICKED(IDC_BUTTON_PLOT, &CVortex::OnBnClickedButtonPlot)ON_BN_CLICKED(IDC_BUTTON_PLOT_CLEAR, &CVortex::OnBnClickedButtonPlotClear)ON_BN_CLICKED(IDC_BUTTON_TXT_SAVE, &CVortex::OnBnClickedButtonTxtSave)ON_BN_CLICKED(IDC_BUTTON_CCD_RUN, &CVortex::OnBnClickedButtonCcdRun)ON_BN_CLICKED(IDC_BUTTON_CCD_STOP, &CVortex::OnBnClickedButtonCcdStop)ON_BN_CLICKED(IDC_BUTTON_CCD_DISCONT, &CVortex::OnBnClickedButtonCcdDiscont)ON_BN_CLICKED(IDC_BUTTON_CCD_SETS, &CVortex::OnBnClickedButtonCcdSets)
END_MESSAGE_MAP()
//初始化变量及窗口
BOOL CVortex::OnInitDialog()
{CDialogEx::OnInitDialog();//相机信息刷新显示时钟初始化,1000ms一刷SetTimer(TIMERID, 1000, 0);  //这里就相当于设定了timer,如果要停掉timer就是KillTimer(TIMERID)//绘图界面初始化//+-------------------------------------------------+//CRect rect, rectChart;GetDlgItem(IDC_CUSTOM_CHART)->GetWindowRect(&rect);ScreenToClient(rect);rectChart = rect;rectChart.top = rect.bottom + 3;rectChart.bottom = rectChart.top + rect.Height();CChartAxis *pAxis = NULL;pAxis = m_ChartCtrl1.CreateStandardAxis(CChartCtrl::BottomAxis);pAxis->SetAutomatic(true);pAxis = m_ChartCtrl1.CreateStandardAxis(CChartCtrl::LeftAxis);pAxis->SetAutomatic(true);TChartString str1;str1 = _T("涡旋光检测数据可视化图表");m_ChartCtrl1.GetTitle()->AddString(str1);//设置坐标lableCChartAxisLabel* pLabel = NULL;TChartString str1YAxisLabel = _T("归一化光强");pAxis = m_ChartCtrl1.GetLeftAxis();if (pAxis)pLabel = pAxis->GetLabel();if (pLabel)pLabel->SetText(str1YAxisLabel);TChartString str1XAxisLabel = _T("拓扑荷数");m_ChartCtrl1.GetBottomAxis()->GetLabel()->SetText(str1XAxisLabel);//+-------------------------------------------------+//pWnd = GetDlgItem(IDC_CCD_SHOW);/*if (!InitCamera()){EndDialog(0);return TRUE;}*/return true;
}
// CVortex 消息处理程序double grayVal[160] = { 0 };//绘图灰度变量
UINT CVortex::ConnectCCD(LPVOID pThreadParam)//Blob分析及抓图线程
{//类内定义窗口变量grayVal[160] = { 0 };int i = 0;hv_i = 1;hv_area = 0;hv_startFlagPos = 1;hv_count = 1;CVortex* pVortex = (CVortex*)pThreadParam;//CCD打开标志pVortex->CCDOpenedFlag = true;//开始抓图GrabImageStart(hv_AcqHandle, -1);//清空显示区ClearWindow(m_HWindowID);ClearWindow(m_HWindowPngID);//抓图一张图给ho_ImageGrabImage(&ho_Image, hv_AcqHandle);//得到图片尺寸GetImageSize(ho_Image, &m_ImageWidth, &m_ImageHeight);GetImagePointer1(ho_Image, NULL, NULL, &m_ImageWidth, &m_ImageHeight);SetPart(m_HWindowID, 0, 0, m_ImageHeight - 1, m_ImageWidth - 1);SetPart(m_HWindowPngID, 0, 0, m_ImageHeight - 1, m_ImageWidth - 1);//获取文件夹名称,未完成,缺乏CString向HTuple转换的方法pVortex->mPtrTxtFileName = (CEdit*)pVortex->GetDlgItem(IDC_EDIT_TXT_FILE_NAME);pVortex->mPtrTxtFileName->GetWindowText(pVortex->mTxtFileName);while (pVortex->PngCatchFlag) {//循环抓图GrabImageAsync(&ho_Image, hv_AcqHandle, -1);//显示图片DispObj(ho_Image, m_HWindowID);//自适应二值化BinaryThreshold(ho_Image, &ho_Region, "max_separability", "light", &hv_UsedThreshold1);//上张涡旋光区域大小hv_area_1 = hv_area;//本张涡旋光区域大小AreaCenter(ho_Region, &hv_Area, &hv_Row, &hv_Column);hv_area = hv_Area;//从光强无到有判断关键帧起始位if (0 != (HTuple(HTuple(hv_area>2000).TupleAnd(hv_area<150000)).TupleAnd(HTuple(hv_area_1<2000).TupleOr(hv_area_1>150000)))){hv_startFlagPos = hv_i;}//抓取关键帧,滞后5帧,等待图像稳定if ((0 != (hv_i == (hv_startFlagPos + 5))) && (i < 160)){//得到整个视野区域GetDomain(ho_Image, &ho_Domain);//得到整个区域平均灰度Intensity(ho_Domain, ho_Image, &hv_Mean, &hv_Deviation);//得到整个区域尺寸GetImagePointer1(ho_Image, &hv_Pointer, &hv_Type, &hv_Width, &hv_Height);//计算整个区域灰度hv_grayVal = (hv_Mean*hv_Width)*hv_Height;//赋值给绘图区变量grayVal[i] = hv_grayVal[0].D();//保存关键帧hv_filename = ((("C:/Users/GHOST/Desktop/catch/" + hv_count) + "grayVal") + hv_grayVal) + ".png";WriteImage(ho_Image, "png", 0, hv_filename);hv_count += 1;i++;DispObj(ho_Image, m_HWindowPngID);}hv_i += 1;}//清空显示区ClearWindow(m_HWindowID);ClearWindow(m_HWindowPngID);//停止抓图pVortex->CCDOpenedFlag = false;ExitThread(0);
}
////////////////绘图/////////////////////
void CVortex::plot(){m_ChartCtrl1.EnableRefresh(false);//绘图变量计算好前禁止操作绘图区double x[80] = { 0 };//横轴变量double y[80] = { 0 };//纵轴变量for (int i = 0; i<160; i++){//舍弃第一帧纯黑图,第二帧平面光if (i == 0 || i == 1)continue;/*+----------------------------------+*//*+------------计算VD值-------------+*//*                 Ar - Al            *//*     Gr = ——————————      *//*           (Ar + Al) * 1 / 2        */if ((i % 2) == 0){//共采集150帧,相邻两帧拓扑荷数相同,手性相反x[(i / 2) - 1] = (i / 2) - 1;y[(i / 2) - 1] = (grayVal[i] - grayVal[i + 1]) / (grayVal[i] + grayVal[i + 1]) * 2;}}CChartLineSerie *pLineSerie1;//画线ptr// m_ChartCtrl1.RemoveAllSeries();//不清空pLineSerie1 = m_ChartCtrl1.CreateLineSerie();pLineSerie1->SetSeriesOrdering(poNoOrdering);//设置轴参数为无序pLineSerie1->AddPoints(x, y, 80);//为每条线按次序命名TChartStringStream strs1;strs1 << _T("这是第")<< m_ChartCtrl1.GetSeriesCount()<< _T("条曲线");pLineSerie1->SetName(strs1.str());m_ChartCtrl1.EnableRefresh(true);//绘图结束允许鼠标右键操作绘图区
}///////////////初始化显示区//////////////
void CVortex::OnBnClickedButtonPicInit()
{// TODO: 在此添加控件通知处理程序代码pWnd = GetDlgItem(IDC_CCD_SHOW);HWindowID = (Hlong)pWnd->m_hWnd;//获取父窗口句柄pWnd->GetWindowRect(&Rect);OpenWindow(0, 0, Rect.Width(), Rect.Height(), HWindowID, "visible", "", &m_HWindowID);pWndPng = GetDlgItem(IDC_PNG_SHOW);HWindowPngID = (Hlong)pWndPng->m_hWnd;//获取父窗口句柄pWnd->GetWindowRect(&RectPng);OpenWindow(0, 0, RectPng.Width(), RectPng.Height(), HWindowPngID, "visible", "", &m_HWindowPngID);}//////////////更新CCD信息////////////////
void CVortex::OnTimer(UINT_PTR nIDEvent)
{CString strStatusText;int iTimeCurrnet = 0;iTimeCurrnet = GetTickCount();strStatusText.Format(TEXT("| 图像分辨率:%d*%d | 显示帧率:%4.2f FPS | 捕获帧率:%4.2f FPS |"),m_sFrInfo.iWidth, m_sFrInfo.iHeight,m_fDispFps, m_fCapFps);GetDlgItem(IDC_STATIC_CCD_INF)->SetWindowTextW(strStatusText);
}///////////////相机初始化//////////////
BOOL CVortex::InitCCD(){//打开抓图设备或路径if (!CCDInitFlag) {try {OpenFramegrabber("HuaTengVision13", 1, 1, 0, 0, 0, 0, "progressive", 8, "Gray",-1, "false", "auto", "Camera HT-SUA134GM#0003-0016", 0, -1, &hv_AcqHandle);return TRUE;}catch(...){MessageBox(TEXT("CCD未连接!"));return FALSE;}}}//+---------------------------------------------------+////启动抓图
void CVortex::OnBnClickedButtonCcdRun(){// TODO: 在此添加控件通知处理程序代码PngCatchFlag = true;if (CCDInitFlag){//如果CCD已初始化if (!CCDOpenedFlag)//如果CCD未在运行pThreadConnectCCD = AfxBeginThread(ConnectCCD, this, 0, 0, 0, NULL);//开启抓图线程elseMessageBox(TEXT("CCD已打开,正在抓图!"));}elseMessageBox(TEXT("CCD尚未初始化!"));}//停止抓图
void CVortex::OnBnClickedButtonCcdStop()
{// TODO: 在此添加控件通知处理程序代码PngCatchFlag = false;
}//初始化CCD
void CVortex::OnBnClickedButtonCcdInit(){// TODO: 在此添加控件通知处理程序代码CCDInitFlag = InitCCD();//初始化CCD,初始化成功CCD初始化标志置1
}//设置CCD
void CVortex::OnBnClickedButtonCcdSets(){// TODO: 在此添加控件通知处理程序代码if (CCDInitFlag){SetFramegrabberParam(hv_AcqHandle, "show_camera_settings", 1);//使用CCD SDK来设置,主要设置增益及曝光时间}elseMessageBox(TEXT("CCD尚未初始化!"));
}//断开CCD
void CVortex::OnBnClickedButtonCcdDiscont(){// TODO: 在此添加控件通知处理程序代码try {CloseFramegrabber(hv_AcqHandle);//断开CCD连接CCDInitFlag = false;//CCD初始化标志置0}catch (...) {MessageBox(TEXT("CCD还没连,断个锤子!"));}
}
//+---------------------------------------------------+////+---------------------------------------------------+////绘图
void CVortex::OnBnClickedButtonPlot(){// TODO: 在此添加控件通知处理程序代码plot();
}//清空绘图区
void CVortex::OnBnClickedButtonPlotClear(){// TODO: 在此添加控件通知处理程序代码m_ChartCtrl1.RemoveAllSeries();//清空
}//保存到txt
void CVortex::OnBnClickedButtonTxtSave(){// TODO: 在此添加控件通知处理程序代码//从label获取文件名mPtrTxtFileName = (CEdit*)GetDlgItem(IDC_EDIT_TXT_FILE_NAME);mPtrTxtFileName->GetWindowText(mTxtFileName);//获取保存路径及文件名CString filename = (_T("C:\\Users\\GHOST\\Desktop\\" ) + mTxtFileName + _T(".txt"));CString strWriteData;strWriteData.Format(_T("开始写入数据。\n\r"));CStdioFile csFile;CFileException cfException;if (csFile.Open(filename, CFile::typeText | CFile::modeCreate | CFile::modeReadWrite | CFile::modeNoTruncate, &cfException))//以txt方式读取|若没有文件则创建该文件|文件打开时不清除{csFile.SeekToEnd();//向文件尾部追加数据setlocale(LC_CTYPE, "chs");//为了能用csFile.WriteString(strWriteData)写入中文csFile.WriteString(strWriteData);//第一行写入数据意义strWriteData.Format(_T("右旋光总灰度,左旋光总灰度,相对差值\n"));csFile.SeekToEnd();csFile.WriteString(strWriteData);//写入数据for (int i = 0; i < 80; i++){csFile.SeekToEnd();strWriteData.Format(_T("%lf,%lf,%lf \n"),grayVal[ 2 * i], grayVal[2 * i + 1], ((grayVal[2 * i] - grayVal[2 * i + 1]) /(grayVal[2 * i] + grayVal[2 * i + 1]) * 2));csFile.WriteString(strWriteData);}}csFile.Close();//写完关闭文件
}
//+---------------------------------------------------+//
查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 关于MongoDB在Node环境下的安装与使用

    安装教程 首先在MongoDB官网下载我下载的是比较老的版本3.0.15,选择msi进行下载并安装,在安装过程中要自定义下安装路径 1.选择Custom自定义安装 将安装位置改为 C:\Mongo 【今后使用命令行比较方便】 2.待安装完成后进入(C:\Mongo)你自定义的文件夹里面创建db文件夹和log…...

    2024/5/2 23:49:14
  2. 语法7 【た形语法】

    语法 含义【た形】 加 【きり】【た形】 加 【まま】【た形】 去掉 【た】加 【たり】【た形】 去掉 【た】加 【たら】...

    2024/5/2 9:45:05
  3. 18文件处理 20200716

    文件处理 """ 1、什么是文件文件是操作系统提供给用户/应用程序操作硬盘的一个虚拟单位2、为何要用文件存取硬盘必须使用文件3、如何用文件f = open(文件路径,打开模式)f.write(数据)f.close()应用程序/用户 文件对象/文件句柄=================》遥控器操…...

    2024/4/9 0:31:45
  4. 设计模式学习之一个命令就可以搞定

    命令模式定义:命令模式是一种高内聚的模式,将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。在命令模式中,低层模块对高层模块是不可见的,高层模块对于低层模块的调用都通过命令接收者,降低…...

    2024/4/28 10:27:36
  5. 疫情过后第一次线下考试感想

    在疫情过后的第一次线下考试,在之前疫情在家的时候上的是网课,有时候会在上课的时候走神,然后导致现在有很都的知识点都不太会,在这次的考试中本来可以发挥的更好的,因为当时再写vs的时候电脑关机了,导致数据库的丢失,然后心情就非常的紧张,导致在重新写完数据库的时候…...

    2024/4/26 10:47:46
  6. CTF 竞赛入门指南(CTF All In One)学习(十)

    密码学导论密码学密码使用学对称密钥算法公开密钥算法密码分析学古典密码学常见替换密码单表置换密码凯撒密码简单替换密码仿射密码 密码学密码使用学 密码分析学密码使用学无密钥算法 对称密钥算法 公开密钥算法对称密钥算法双方共享一个密钥,并使用相同的加密和解密算法。 相…...

    2024/4/19 6:24:58
  7. python入门之编程环境安装

    目录安装Python3.8.4下载安装包选择版本开始安装测试(检查是否安装成功)写第一个Python程序小结 安装Python3.8.4 做为初学者,学习Python语言,这个轻便的编译器够用了。 下载安装包 现在下载的渠道有很多,推荐官方网站,下面给出了两个很好的下载地址。官方网站:打开链接…...

    2024/4/20 13:03:21
  8. 思科发布安全公告,公开致谢360发现Cisco AnyConnect文件损坏漏洞

    360-CERT [三六零CERT](javascript:void(0)😉 今天7月1日,思科Cisco在官网上发布了最新安全公告,公开致谢了360网络安全响应中心(360-CERT)团队协助发现了存在于Cisco AnyConnect的Mac OS客户端卸载程序组件中的文件损坏漏洞(CVE-2020-3432)。 Cisco公告表示,攻击者能…...

    2024/4/26 5:41:47
  9. 计算机网络详细总结

    IP地址 1、一个IP地址唯一标识一个网络接口; 2、IP地址分为IPv4(32位)和IPv6(128位); 3、IP地址分为公网IP地址和内网IP地址,公网IP地址可以直接访问,内网IP只能在内网中访问; 4、一个物理设备有多少快网卡,就有几个IP地址;连接两个网络的设备是路由器或者交换机,它至…...

    2024/5/2 22:08:59
  10. Day2

    领跑计划:102-Day2 CSS企业开发经验、习惯、盒子模型、层模型 0.开发经验、习惯a). 先定义功能,后组装功能(实现1 + 1 > 2)。b). 标签选择器、通配符通常用来初始化标签样式。 1.常见行级元素 & 块级元素 行级元素(inline): {a).内容决定元素所占位置;b).不可以通过 C…...

    2024/4/23 23:51:29
  11. 语法5 【ます形语法】

    语法 含义【ます形】 去掉 【ます】加 【たい】【ます形】 去掉 【ます】加 【なさい】【ます形】 去掉 【ます】加 【やすい】【ます形】 去掉 【ます】加 【にくい】...

    2024/4/22 21:30:59
  12. 面试官:一个TCP连接可以发多少个HTTP请求?

    曾经有这么一道面试题:从 URL 在浏览器被被输入到页面展现的过程中发生了什么?相信大多数准备过的同学都能回答出来,但是如果继续问:收到的 HTML 如果包含几十个图片标签,这些图片是以什么方式、什么顺序、建立了多少连接、使用什么协议被下载下来的呢?要搞懂这个问题,我…...

    2024/4/25 3:36:04
  13. 每次飞无人机前切记不要心急,要先仔细检查硬件

    每次飞无人机前切记不要心急,要先仔细检查,特别是硬件,很多时候是硬件出问题。心急必炸。螺丝扭没,轴的螺丝,电机的螺丝浆帽拧一拧防止射浆BB响插上没有,防止飞到电力不足,那样真的只会炸机。估计就是掉下来了。。...

    2024/4/15 11:44:35
  14. JavaScript-继承的实现方式

    继承的方式 1、传统形式 ----> 原型链 缺点一:过多的继承了没用的属性 原型链继承eg: Grand.prototype.lastName = Hong function Grand(){} var grand = new Grand() Father.prototype = grand; function Father(){} var father = new Father() Son.prototype = father; f…...

    2024/4/23 23:35:24
  15. Oracle数据库异地备份脚本

    #!/bin/bash# 解析配置文件 # 通过`source`加载配置文件 source config # 备份服务器地址 backIP=$BackIP # 数据库SID sid=$SID # 数据库连接端口 port=$Port # 数据库连接用户 user=$User # 备份服务器系统用户 backUser=$BackUser # 分解备份服务器用户名和密码 backUserNam…...

    2024/4/18 18:26:24
  16. Java小项目(功能齐全)-停车场管理系统(中英文版)

    一.项目目的: 停车场管理系统——对停车场进行更系统的管理,使整个过程更加高效有序。 二.主要功能: 1.进入停车场 2.离开停车场 3.搜索信息 4.停车场当前车位明细查询 5.历史查询 三.附加功能: 1.清除历史记录 2.语言选择(中英文) 3.停车费设置 四.整体展示(功能展示)…...

    2024/4/24 15:37:12
  17. Unreal Engine 4 卡通着色(Cel Shading)教程(上)

    原文地址|https://www.raywenderlich.com/146-unreal-engine-4-cel-shading-tutorial 作者|Tommy Tran Feb 27 2018 阅读时长|20分钟 内容难度|中等文章目录开始吧什么是卡通着色?卡通着色原理创建卡通着色器计算光照缓冲创建阈值 基于PBR渲染在Unreal Engine 4中制作写实风格…...

    2024/4/29 2:09:14
  18. STM32学习笔记(7)——SysTick定时器

    SysTicK定时器:芯片内部用于计数从而得到时长的外设。Systick定时器,是一个简单的定时器,对于CM3,CM4内核芯片,都有Systick定时器。常用来做延时,或者实时系统的心跳时钟。这样可以节省MCU资源,不用浪费一个定时器。比如uCOS中,分时复用,需要一个最小的时间戳,一般在S…...

    2024/4/24 2:37:03
  19. 趣谈网络协议——P2P协议

    文件传输协议(FTP) FTP 采用两个 TCP 连接来传输一个文件。控制连接:服务器以被动的方式, FTP 使用端口 21,客户端则主动发起连接。该连接将命令从客户端传给服务器,并传回服务器的应答。常用的命令有:list——获取文件目录;reter——取一个文件;store——存一个文件。…...

    2024/4/23 15:51:12
  20. Python 图片亮度

    https://blog.csdn.net/xiaogao_47/article/details/90261010Python处理图片亮度使用python 采用原生库PIL中的方式调节图片亮度! 代码片.import os import math from PIL import Image, ImageStat, ImageEnhance import sys# 读取图片原有的亮度值 def brightness(path):im =…...

    2024/4/10 16:30:32

最新文章

  1. 【Linux】深入探讨 Linux 中的 `ln` 命令:创建链接的艺术

    我把我唱给你听 把你纯真无邪的笑容给我吧 我们应该有快乐的 幸福的晴朗的时光 我把我唱给你听 用我炙热的感情感动你好吗 岁月是值得怀念的留恋的 害羞的红色脸庞 谁能够代替你呀 趁年轻尽情的爱吧 最最亲爱的人啊 路途遥远我们在一起吧 &#x1f3b5; 叶…...

    2024/5/3 5:41:00
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. 《c++》多态案例一.电脑组装

    一.代码展示 #include <iostream> using namespace std; class CPU { public://抽象计算函数virtual void calculate() 0;};class CVideoCard { public://抽象显示函数virtual void display() 0;}; class Memory { public://抽象存储函数virtual void storage() 0;};…...

    2024/5/2 3:23:54
  4. 【C++】类和对象①(什么是面向对象 | 类的定义 | 类的访问限定符及封装 | 类的作用域和实例化 | 类对象的存储方式 | this指针)

    目录 前言 什么是面向对象&#xff1f; 类的定义 类的访问限定符及封装 访问限定符 封装 类的作用域 类的实例化 类对象的存储方式 this指针 结语 前言 最早的C版本&#xff08;C with classes&#xff09;中&#xff0c;最先加上的就是类的机制&#xff0c;它构成…...

    2024/5/1 13:18:37
  5. 416. 分割等和子集问题(动态规划)

    题目 题解 class Solution:def canPartition(self, nums: List[int]) -> bool:# badcaseif not nums:return True# 不能被2整除if sum(nums) % 2 ! 0:return False# 状态定义&#xff1a;dp[i][j]表示当背包容量为j&#xff0c;用前i个物品是否正好可以将背包填满&#xff…...

    2024/5/2 11:19:01
  6. 【Java】ExcelWriter自适应宽度工具类(支持中文)

    工具类 import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet;/*** Excel工具类** author xiaoming* date 2023/11/17 10:40*/ public class ExcelUti…...

    2024/5/2 16:04:58
  7. Spring cloud负载均衡@LoadBalanced LoadBalancerClient

    LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon&#xff0c;直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件&#xff0c;我们讨论Spring负载均衡以Spring Cloud2020之后版本为主&#xff0c;学习Spring Cloud LoadBalance&#xff0c;暂不讨论Ribbon…...

    2024/5/2 23:55:17
  8. TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案

    一、背景需求分析 在工业产业园、化工园或生产制造园区中&#xff0c;周界防范意义重大&#xff0c;对园区的安全起到重要的作用。常规的安防方式是采用人员巡查&#xff0c;人力投入成本大而且效率低。周界一旦被破坏或入侵&#xff0c;会影响园区人员和资产安全&#xff0c;…...

    2024/5/2 9:47:31
  9. VB.net WebBrowser网页元素抓取分析方法

    在用WebBrowser编程实现网页操作自动化时&#xff0c;常要分析网页Html&#xff0c;例如网页在加载数据时&#xff0c;常会显示“系统处理中&#xff0c;请稍候..”&#xff0c;我们需要在数据加载完成后才能继续下一步操作&#xff0c;如何抓取这个信息的网页html元素变化&…...

    2024/5/2 9:47:31
  10. 【Objective-C】Objective-C汇总

    方法定义 参考&#xff1a;https://www.yiibai.com/objective_c/objective_c_functions.html Objective-C编程语言中方法定义的一般形式如下 - (return_type) method_name:( argumentType1 )argumentName1 joiningArgument2:( argumentType2 )argumentName2 ... joiningArgu…...

    2024/5/2 6:03:07
  11. 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】

    &#x1f468;‍&#x1f4bb;博客主页&#xff1a;花无缺 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】&#x1f30f;题目描述&#x1f30f;输入格…...

    2024/5/2 9:47:30
  12. 【ES6.0】- 扩展运算符(...)

    【ES6.0】- 扩展运算符... 文章目录 【ES6.0】- 扩展运算符...一、概述二、拷贝数组对象三、合并操作四、参数传递五、数组去重六、字符串转字符数组七、NodeList转数组八、解构变量九、打印日志十、总结 一、概述 **扩展运算符(...)**允许一个表达式在期望多个参数&#xff0…...

    2024/5/2 23:47:43
  13. 摩根看好的前智能硬件头部品牌双11交易数据极度异常!——是模式创新还是饮鸩止渴?

    文 | 螳螂观察 作者 | 李燃 双11狂欢已落下帷幕&#xff0c;各大品牌纷纷晒出优异的成绩单&#xff0c;摩根士丹利投资的智能硬件头部品牌凯迪仕也不例外。然而有爆料称&#xff0c;在自媒体平台发布霸榜各大榜单喜讯的凯迪仕智能锁&#xff0c;多个平台数据都表现出极度异常…...

    2024/5/2 5:31:39
  14. Go语言常用命令详解(二)

    文章目录 前言常用命令go bug示例参数说明 go doc示例参数说明 go env示例 go fix示例 go fmt示例 go generate示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令&#xff0c;这些命令可以帮助您在Go开发中进行编译、测试、运行和…...

    2024/5/3 1:55:15
  15. 用欧拉路径判断图同构推出reverse合法性:1116T4

    http://cplusoj.com/d/senior/p/SS231116D 假设我们要把 a a a 变成 b b b&#xff0c;我们在 a i a_i ai​ 和 a i 1 a_{i1} ai1​ 之间连边&#xff0c; b b b 同理&#xff0c;则 a a a 能变成 b b b 的充要条件是两图 A , B A,B A,B 同构。 必要性显然&#xff0…...

    2024/5/2 9:47:28
  16. 【NGINX--1】基础知识

    1、在 Debian/Ubuntu 上安装 NGINX 在 Debian 或 Ubuntu 机器上安装 NGINX 开源版。 更新已配置源的软件包信息&#xff0c;并安装一些有助于配置官方 NGINX 软件包仓库的软件包&#xff1a; apt-get update apt install -y curl gnupg2 ca-certificates lsb-release debian-…...

    2024/5/2 9:47:27
  17. Hive默认分割符、存储格式与数据压缩

    目录 1、Hive默认分割符2、Hive存储格式3、Hive数据压缩 1、Hive默认分割符 Hive创建表时指定的行受限&#xff08;ROW FORMAT&#xff09;配置标准HQL为&#xff1a; ... ROW FORMAT DELIMITED FIELDS TERMINATED BY \u0001 COLLECTION ITEMS TERMINATED BY , MAP KEYS TERMI…...

    2024/5/3 1:55:09
  18. 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法

    文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中&#xff0c;传感器和控制器产生大量周…...

    2024/5/2 8:37:00
  19. --max-old-space-size=8192报错

    vue项目运行时&#xff0c;如果经常运行慢&#xff0c;崩溃停止服务&#xff0c;报如下错误 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 因为在 Node 中&#xff0c;通过JavaScript使用内存时只能使用部分内存&#xff08;64位系统&…...

    2024/5/2 9:47:26
  20. 基于深度学习的恶意软件检测

    恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞&#xff0c;例如可以被劫持的合法软件&#xff08;例如浏览器或 Web 应用程序插件&#xff09;中的错误。 恶意软件渗透可能会造成灾难性的后果&#xff0c;包括数据被盗、勒索或网…...

    2024/5/2 9:47:25
  21. JS原型对象prototype

    让我简单的为大家介绍一下原型对象prototype吧&#xff01; 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定&#xff0c;每一个构造函数都有一个 prototype 属性&#xff0c;指向另一个对象&#xff0c;所以我们也称为原型对象…...

    2024/5/2 23:47:16
  22. C++中只能有一个实例的单例类

    C中只能有一个实例的单例类 前面讨论的 President 类很不错&#xff0c;但存在一个缺陷&#xff1a;无法禁止通过实例化多个对象来创建多名总统&#xff1a; President One, Two, Three; 由于复制构造函数是私有的&#xff0c;其中每个对象都是不可复制的&#xff0c;但您的目…...

    2024/5/2 18:46:52
  23. python django 小程序图书借阅源码

    开发工具&#xff1a; PyCharm&#xff0c;mysql5.7&#xff0c;微信开发者工具 技术说明&#xff1a; python django html 小程序 功能介绍&#xff1a; 用户端&#xff1a; 登录注册&#xff08;含授权登录&#xff09; 首页显示搜索图书&#xff0c;轮播图&#xff0…...

    2024/5/2 7:30:11
  24. 电子学会C/C++编程等级考试2022年03月(一级)真题解析

    C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...

    2024/5/3 1:54:59
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57