修复乱码

This commit is contained in:
zhengxuan.zhang
2026-05-11 15:16:33 +08:00
parent 53f44ffdbf
commit 72695007c3
35 changed files with 493 additions and 493 deletions
@@ -7,21 +7,21 @@
extern SmartMotor_Proto* pSmartMotor_Proto;
// CAnimatics_UtilDlg 对话框
// CAnimatics_UtilDlg 对话框
class CAnimatics_UtilDlg : public CDialog
{
DECLARE_DYNAMIC(CAnimatics_UtilDlg)
public:
CAnimatics_UtilDlg(CWnd* pParent = NULL); // 标准构造函数
CAnimatics_UtilDlg(CWnd* pParent = NULL); // 标准构造函数
virtual ~CAnimatics_UtilDlg();
// 对话框数据
// 对话框数据
enum { IDD = IDD_ANIMATICS_UTIL_DIALOG };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
virtual BOOL OnInitDialog();
DECLARE_MESSAGE_MAP()
public:
@@ -1,4 +1,4 @@
// GraphView.cpp : 实现文件
// GraphView.cpp : 实现文件
//
#include "stdafx.h"
@@ -12,7 +12,7 @@ IMPLEMENT_DYNAMIC(CDrawGraph, CWnd)
//========================================================
CDrawGraph::CDrawGraph()
{
//注册控件类
//注册控件类
RegisterCtrlClass();
m_nMarginLeft = 40;
@@ -28,7 +28,7 @@ CDrawGraph::CDrawGraph()
m_dbStartX = m_dbStartY = 0;
m_dbEndX = m_dbEndY = 100;
//颜色表
//颜色表
m_clrCoordBkg = RGB(255, 255, 255);
m_clrFrame = RGB(0, 0, 0);
m_clrWave = RGB(0, 0, 255);
@@ -48,7 +48,7 @@ void CDrawGraph::RegisterCtrlClass()
if(::GetClassInfo(hInstance, STR_CLASS_NAME, &wndclsCtrl))
return;
//设置控件类信息
//设置控件类信息
wndclsCtrl.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC;
wndclsCtrl.lpfnWndProc = ::DefWindowProc;
wndclsCtrl.cbClsExtra = 0;
@@ -60,7 +60,7 @@ void CDrawGraph::RegisterCtrlClass()
wndclsCtrl.lpszMenuName = NULL;
wndclsCtrl.lpszClassName = STR_CLASS_NAME;
//注册控件类
//注册控件类
AfxRegisterClass(&wndclsCtrl);
}
//========================================================
@@ -70,18 +70,18 @@ void CDrawGraph::SetViewFont(const CString& strFont, int nPointSize, int nWeight
LOGFONT lf;
memset(&lf, 0, sizeof(LOGFONT));
//设置字体样式
//设置字体样式
nCount = sizeof(lf.lfFaceName)/sizeof(TCHAR);
COPYSTRING(lf.lfFaceName, nCount, strFont);
lf.lfHeight = nPointSize;
lf.lfWeight = nWeight;
lf.lfCharSet = GB2312_CHARSET;
//清楚已有样式
//清楚已有样式
if(m_fontView.GetSafeHandle())
m_fontView.DeleteObject();
//设置字体
//设置字体
m_fontView.CreateFontIndirect(&lf);
if(bIsRedraw)
@@ -245,7 +245,7 @@ void CDrawGraph::DrawCoordinate(CDC* pDC, CRect rectCoord)
font.CreatePointFontIndirect (&lf);
CFont* pOldFont = pDC->SelectObject (&font);
pDC->TextOut(rectCoord.left-40,rectCoord.top+(rectCoord.Height()/2)+30,m_YAxisLabel);//旋转90°输出
pDC->TextOut(rectCoord.left-40,rectCoord.top+(rectCoord.Height()/2)+30,m_YAxisLabel);//旋转90°输出
pDC->SelectObject (pOldFont);
pDC->TextOut(rectCoord.left-20+(rectCoord.Width()/2),rectCoord.bottom+15,m_XAxisLabel);
@@ -344,13 +344,13 @@ BEGIN_MESSAGE_MAP(CDrawGraph, CWnd)
ON_WM_ERASEBKGND()
END_MESSAGE_MAP()
// CDrawGraph 消息处理程序
// CDrawGraph 消息处理程序
//========================================================
void CDrawGraph::PreSubclassWindow()
{
CWnd::PreSubclassWindow();
SetViewFont(_T("宋体"), 12, FW_NORMAL);
SetViewFont(_T("宋体"), 12, FW_NORMAL);
}
//========================================================
void CDrawGraph::OnPaint()
@@ -363,25 +363,25 @@ void CDrawGraph::OnPaint()
CFont* pOldFont;
CDC* pMemDC = new CDC;
//获取控件信息
//获取控件信息
GetClientRect(rectClient);
GetWindowText(strCaption);
//创建位图内存
//创建位图内存
bitmapTemp.CreateCompatibleBitmap(&dc, rectClient.Width(), rectClient.Height());
pMemDC->CreateCompatibleDC(&dc);
pOldBitmap = pMemDC->SelectObject(&bitmapTemp);
pOldFont = pMemDC->SelectObject(&m_fontView);
nMode = pMemDC->SetBkMode(TRANSPARENT);
//填充客户区
//填充客户区
pMemDC->FillSolidRect(&rectClient, GetSysColor(COLOR_BTNFACE));
//绘制视图标题
//绘制视图标题
pMemDC->DrawText(strCaption, strCaption.GetLength(), rectClient, DT_CENTER);
//绘制坐标框
//绘制坐标框
rectCoord.SetRect(rectClient.left+m_nMarginLeft, rectClient.top+m_nMarginTop, rectClient.right-m_nMarginRight, rectClient.bottom-m_nMarginBottom);
DrawCoordinate(pMemDC, rectCoord);
//绘制波形
//绘制波形
DrawActualCurve(pMemDC, rectCoord);
dc.BitBlt(0, 0, rectClient.Width(), rectClient.Height(), pMemDC, 0, 0, SRCCOPY);
@@ -26,75 +26,75 @@ CEF1AUsbDevice::~CEF1AUsbDevice()
BOOL CEF1AUsbDevice::EF1AOpenDevice()
{
//用来保存设备是否已经找到
//用来保存设备是否已经找到
BOOL DevFound=FALSE;
//用来保存找到的设备路径
//用来保存找到的设备路径
CString DevPathName=_T("");
//定义一个GUID的结构体HidGuid来保存HID设备的接口类GUID。
//定义一个GUID的结构体HidGuid来保存HID设备的接口类GUID。
GUID HidGuid;
//定义一个DEVINFO的句柄hDevInfoSet来保存获取到的设备信息集合句柄。
//定义一个DEVINFO的句柄hDevInfoSet来保存获取到的设备信息集合句柄。
HDEVINFO hDevInfoSet;
//定义MemberIndex,表示当前搜索到第几个设备,0表示第一个设备。
//定义MemberIndex,表示当前搜索到第几个设备,0表示第一个设备。
DWORD MemberIndex;
//DevInterfaceData,用来保存设备的驱动接口信息
//DevInterfaceData,用来保存设备的驱动接口信息
SP_DEVICE_INTERFACE_DATA DevInterfaceData;
//定义一个BOOL变量,保存函数调用是否返回成功
//定义一个BOOL变量,保存函数调用是否返回成功
BOOL Result;
//定义一个RequiredSize的变量,用来接收需要保存详细信息的缓冲长度。
//定义一个RequiredSize的变量,用来接收需要保存详细信息的缓冲长度。
DWORD RequiredSize;
//定义一个指向设备详细信息的结构体指针。
//定义一个指向设备详细信息的结构体指针。
PSP_DEVICE_INTERFACE_DETAIL_DATA pDevDetailData;
//定义一个用来保存打开设备的句柄。
//定义一个用来保存打开设备的句柄。
HANDLE hDevHandle;
//定义一个HIDD_ATTRIBUTES的结构体变量,保存设备的属性。
//定义一个HIDD_ATTRIBUTES的结构体变量,保存设备的属性。
HIDD_ATTRIBUTES DevAttributes;
//对DevInterfaceData结构体的cbSize初始化为结构体大小
//对DevInterfaceData结构体的cbSize初始化为结构体大小
DevInterfaceData.cbSize=sizeof(DevInterfaceData);
//对DevAttributes结构体的Size初始化为结构体大小
//对DevAttributes结构体的Size初始化为结构体大小
DevAttributes.Size=sizeof(DevAttributes);
//调用HidD_GetHidGuid函数获取HID设备的GUID,并保存在HidGuid中。
//调用HidD_GetHidGuid函数获取HID设备的GUID,并保存在HidGuid中。
HidD_GetHidGuid(&HidGuid);
//根据HidGuid来获取设备信息集合。其中Flags参数设置为
//DIGCF_DEVICEINTERFACE|DIGCF_PRESENT,前者表示使用的GUID为
//接口类GUID,后者表示只列举正在使用的设备,因为我们这里只
//查找已经连接上的设备。返回的句柄保存在hDevinfo中。注意设备
//信息集合在使用完毕后,要使用函数SetupDiDestroyDeviceInfoList
//销毁,不然会造成内存泄漏。
//根据HidGuid来获取设备信息集合。其中Flags参数设置为
//DIGCF_DEVICEINTERFACE|DIGCF_PRESENT,前者表示使用的GUID为
//接口类GUID,后者表示只列举正在使用的设备,因为我们这里只
//查找已经连接上的设备。返回的句柄保存在hDevinfo中。注意设备
//信息集合在使用完毕后,要使用函数SetupDiDestroyDeviceInfoList
//销毁,不然会造成内存泄漏。
hDevInfoSet=SetupDiGetClassDevs(&HidGuid,
NULL,
NULL,
DIGCF_DEVICEINTERFACE|DIGCF_PRESENT);
//MessageBox(NULL,"开始查找设备!",NULL,MB_OK);
//MessageBox(NULL,"开始查找设备!",NULL,MB_OK);
//然后对设备集合中每个设备进行列举,检查是否是我们要找的设备
//当找到我们指定的设备,或者设备已经查找完毕时,就退出查找。
//首先指向第一个设备,即将MemberIndex置为0。
//然后对设备集合中每个设备进行列举,检查是否是我们要找的设备
//当找到我们指定的设备,或者设备已经查找完毕时,就退出查找。
//首先指向第一个设备,即将MemberIndex置为0。
MemberIndex=0;
while(1)
{
//调用SetupDiEnumDeviceInterfaces在设备信息集合中获取编号为
//MemberIndex的设备信息。
//调用SetupDiEnumDeviceInterfaces在设备信息集合中获取编号为
//MemberIndex的设备信息。
Result=SetupDiEnumDeviceInterfaces(hDevInfoSet,
NULL,
&HidGuid,
MemberIndex,
&DevInterfaceData);
//如果获取信息失败,则说明设备已经查找完毕,退出循环。
//如果获取信息失败,则说明设备已经查找完毕,退出循环。
if(Result==FALSE) break;
//将MemberIndex指向下一个设备
//将MemberIndex指向下一个设备
MemberIndex++;
//如果获取信息成功,则继续获取该设备的详细信息。在获取设备
//详细信息时,需要先知道保存详细信息需要多大的缓冲区,这通过
//第一次调用函数SetupDiGetDeviceInterfaceDetail来获取。这时
//提供缓冲区和长度都为NULL的参数,并提供一个用来保存需要多大
//缓冲区的变量RequiredSize。
//如果获取信息成功,则继续获取该设备的详细信息。在获取设备
//详细信息时,需要先知道保存详细信息需要多大的缓冲区,这通过
//第一次调用函数SetupDiGetDeviceInterfaceDetail来获取。这时
//提供缓冲区和长度都为NULL的参数,并提供一个用来保存需要多大
//缓冲区的变量RequiredSize。
Result=SetupDiGetDeviceInterfaceDetail(hDevInfoSet,
&DevInterfaceData,
NULL,
@@ -102,21 +102,21 @@ BOOL CEF1AUsbDevice::EF1AOpenDevice()
&RequiredSize,
NULL);
//然后,分配一个大小为RequiredSize缓冲区,用来保存设备详细信息。
//然后,分配一个大小为RequiredSize缓冲区,用来保存设备详细信息。
pDevDetailData=(PSP_DEVICE_INTERFACE_DETAIL_DATA)malloc(RequiredSize);
if(pDevDetailData==NULL) //如果内存不足,则直接返回。
if(pDevDetailData==NULL) //如果内存不足,则直接返回。
{
MessageBox(NULL,_T("内存不足!"),NULL,MB_OK);
MessageBox(NULL,_T("内存不足!"),NULL,MB_OK);
SetupDiDestroyDeviceInfoList(hDevInfoSet);
return false;
}
//并设置pDevDetailData的cbSize为结构体的大小(注意只是结构体大小,
//不包括后面缓冲区)。
//并设置pDevDetailData的cbSize为结构体的大小(注意只是结构体大小,
//不包括后面缓冲区)。
pDevDetailData->cbSize=sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA);
//然后再次调用SetupDiGetDeviceInterfaceDetail函数来获取设备的
//详细信息。这次调用设置使用的缓冲区以及缓冲区大小。
//然后再次调用SetupDiGetDeviceInterfaceDetail函数来获取设备的
//详细信息。这次调用设置使用的缓冲区以及缓冲区大小。
Result=SetupDiGetDeviceInterfaceDetail(hDevInfoSet,
&DevInterfaceData,
pDevDetailData,
@@ -124,17 +124,17 @@ BOOL CEF1AUsbDevice::EF1AOpenDevice()
NULL,
NULL);
//将设备路径复制出来,然后销毁刚刚申请的内存。
//将设备路径复制出来,然后销毁刚刚申请的内存。
DevPathName=pDevDetailData->DevicePath;
free(pDevDetailData);
//如果调用失败,则查找下一个设备。
//如果调用失败,则查找下一个设备。
if(Result==FALSE) continue;
//如果调用成功,则使用不带读写访问的CreateFile函数
//来获取设备的属性,包括VID、PID、版本号等。
//对于一些独占设备(例如USB键盘),使用读访问方式是无法打开的,
//而使用不带读写访问的格式才可以打开这些设备,从而获取设备的属性。
//如果调用成功,则使用不带读写访问的CreateFile函数
//来获取设备的属性,包括VID、PID、版本号等。
//对于一些独占设备(例如USB键盘),使用读访问方式是无法打开的,
//而使用不带读写访问的格式才可以打开这些设备,从而获取设备的属性。
hDevHandle=CreateFile(DevPathName,
NULL,
FILE_SHARE_READ|FILE_SHARE_WRITE,
@@ -143,31 +143,31 @@ BOOL CEF1AUsbDevice::EF1AOpenDevice()
FILE_ATTRIBUTE_NORMAL,
NULL);
//如果打开成功,则获取设备属性。
//如果打开成功,则获取设备属性。
if(hDevHandle!=INVALID_HANDLE_VALUE)
{
//获取设备的属性并保存在DevAttributes结构体中
//获取设备的属性并保存在DevAttributes结构体中
Result=HidD_GetAttributes(hDevHandle,
&DevAttributes);
//关闭刚刚打开的设备
//关闭刚刚打开的设备
CloseHandle(hDevHandle);
//获取失败,查找下一个
//获取失败,查找下一个
if(Result==FALSE) continue;
//如果获取成功,则将属性中的VID、PID以及设备版本号与我们需要的
//进行比较,如果都一致的话,则说明它就是我们要找的设备。
if(DevAttributes.VendorID==m_nVID) //如果VID相等
if(DevAttributes.ProductID==m_nPID) //并且PID相等
//if(DevAttributes.VersionNumber==MyPvn) //并且设备版本号相等
//如果获取成功,则将属性中的VID、PID以及设备版本号与我们需要的
//进行比较,如果都一致的话,则说明它就是我们要找的设备。
if(DevAttributes.VendorID==m_nVID) //如果VID相等
if(DevAttributes.ProductID==m_nPID) //并且PID相等
//if(DevAttributes.VersionNumber==MyPvn) //并且设备版本号相等
{
DevFound=TRUE; //设置设备已经找到
//MessageBox(NULL,"设备已经找到!",NULL,MB_OK);
DevFound=TRUE; //设置设备已经找到
//MessageBox(NULL,"设备已经找到!",NULL,MB_OK);
//那么就是我们要找的设备,分别使用读写方式打开之,并保存其句柄
//并且选择为异步访问方式。
//读方式打开设备
//那么就是我们要找的设备,分别使用读写方式打开之,并保存其句柄
//并且选择为异步访问方式。
//读方式打开设备
m_hReadHandle=CreateFile(DevPathName,
GENERIC_READ,
FILE_SHARE_READ|FILE_SHARE_WRITE,
@@ -178,12 +178,12 @@ BOOL CEF1AUsbDevice::EF1AOpenDevice()
if(m_hReadHandle!=INVALID_HANDLE_VALUE)
{
//MessageBox(NULL,"读访问打开设备成功!",NULL,MB_OK);
//MessageBox(NULL,"读访问打开设备成功!",NULL,MB_OK);
}
else
MessageBox(NULL,_T("读访问打开设备失败!"),NULL,MB_OK);
MessageBox(NULL,_T("读访问打开设备失败!"),NULL,MB_OK);
//写方式打开设备
//写方式打开设备
m_hWriteHandle=CreateFile(DevPathName,
GENERIC_WRITE,
FILE_SHARE_READ|FILE_SHARE_WRITE,
@@ -193,22 +193,22 @@ BOOL CEF1AUsbDevice::EF1AOpenDevice()
NULL);
if(m_hWriteHandle!=INVALID_HANDLE_VALUE)
{
//MessageBox(NULL,"写访问打开设备成功!",NULL,MB_OK);
//MessageBox(NULL,"写访问打开设备成功!",NULL,MB_OK);
}
else
MessageBox(NULL,_T("写访问打开设备失败!"),NULL,MB_OK);
MessageBox(NULL,_T("写访问打开设备失败!"),NULL,MB_OK);
break;
}
}
//如果打开失败,则查找下一个设备
//如果打开失败,则查找下一个设备
else continue;
}
//调用SetupDiDestroyDeviceInfoList函数销毁设备信息集合
//调用SetupDiDestroyDeviceInfoList函数销毁设备信息集合
SetupDiDestroyDeviceInfoList(hDevInfoSet);
//如果设备已经找到,那么应该使能各操作按钮,并同时禁止打开设备按钮
//如果设备已经找到,那么应该使能各操作按钮,并同时禁止打开设备按钮
if(DevFound)
{
m_isOpen = TRUE;
@@ -242,9 +242,9 @@ int CEF1AUsbDevice::EF1AReadData(ULONG /*iIndex*/, char* oBuffer,int /*ioLength*
{
DWORD iLen = 0;
UCHAR ReadReportBuffer[65]={0};
if(m_hReadHandle==INVALID_HANDLE_VALUE) //如果读句柄无效
if(m_hReadHandle==INVALID_HANDLE_VALUE) //如果读句柄无效
{
MessageBox(NULL,_T("无效的读报告句柄!"),NULL,MB_OK);
MessageBox(NULL,_T("无效的读报告句柄!"),NULL,MB_OK);
return FALSE;
}
@@ -275,7 +275,7 @@ int CEF1AUsbDevice::EF1AWriteData(ULONG /*iIndex*/, char* Buffer, int ioLength)
if(m_hWriteHandle==INVALID_HANDLE_VALUE)
{
MessageBox(NULL,_T("无效的写报告句柄!"),NULL,MB_OK);
MessageBox(NULL,_T("无效的写报告句柄!"),NULL,MB_OK);
return FALSE;
}
@@ -1,4 +1,4 @@
// Keyence_LKG5000_Ethernet.cpp : 实现文件
// Keyence_LKG5000_Ethernet.cpp : 实现文件
//
#include "stdafx.h"
@@ -13,7 +13,7 @@ const int LK_H_MAX_STORAGE_DATA_SIZE=65535;
extern CKeyence_Laser_LK_H* m_pKeyence_Laser_LK_H;
// CKeyence_LKG5000_Ethernet 对话框
// CKeyence_LKG5000_Ethernet 对话框
IMPLEMENT_DYNAMIC(CKeyence_LKG5000_Ethernet, CDialogEx)
@@ -54,7 +54,7 @@ BEGIN_MESSAGE_MAP(CKeyence_LKG5000_Ethernet, CDialogEx)
END_MESSAGE_MAP()
// CKeyence_LKG5000_Ethernet 消息处理程序
// CKeyence_LKG5000_Ethernet 消息处理程序
//======================================================
BOOL CKeyence_LKG5000_Ethernet::OnInitDialog()
{
@@ -1,21 +1,21 @@
#pragma once
// CKeyence_LKG5000_Ethernet 对话框
// CKeyence_LKG5000_Ethernet 对话框
class CKeyence_LKG5000_Ethernet : public CDialogEx
{
DECLARE_DYNAMIC(CKeyence_LKG5000_Ethernet)
public:
CKeyence_LKG5000_Ethernet(CWnd* pParent = NULL); // 标准构造函数
CKeyence_LKG5000_Ethernet(CWnd* pParent = NULL); // 标准构造函数
virtual ~CKeyence_LKG5000_Ethernet();
// 对话框数据
// 对话框数据
enum { IDD = IDD_DIALOG_KEYENCE_LKG5000_ETHERNET };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
virtual BOOL OnInitDialog();
DECLARE_MESSAGE_MAP()
@@ -1,4 +1,4 @@
// Keyence_UtilDlg.cpp : 实现文件
// Keyence_UtilDlg.cpp : 实现文件
//
#include "stdafx.h"
@@ -36,7 +36,7 @@ float fLaserVaule1(0);
float fLaserVaule2(0);
std::vector<KeyenceReport> LK_GReport;
// CKeyence_UtilDlg 对话框
// CKeyence_UtilDlg 对话框
IMPLEMENT_DYNAMIC(CKeyence_UtilDlg, CDialog)
@@ -330,7 +330,7 @@ BOOL CKeyence_UtilDlg::ExportReportCSV(const CString &FilePathName)
};
#pragma endregion
// CKeyence_UtilDlg 消息处理程序
// CKeyence_UtilDlg 消息处理程序
#pragma region LK_G_LASER
//===========================================================
void CKeyence_UtilDlg::OnBnClickedButtonKeyenceLaserCalibrateValue0()
@@ -1,6 +1,6 @@
#pragma once
// CKeyence_UtilDlg 对话框
// CKeyence_UtilDlg 对话框
typedef struct{
char ProgramNo;
float OUT1Value;
@@ -13,14 +13,14 @@ class CKeyence_UtilDlg : public CDialog
DECLARE_DYNAMIC(CKeyence_UtilDlg)
public:
CKeyence_UtilDlg(CWnd* pParent = NULL); // 标准构造函数
CKeyence_UtilDlg(CWnd* pParent = NULL); // 标准构造函数
virtual ~CKeyence_UtilDlg();
// 对话框数据
// 对话框数据
enum { IDD = IDD_DIALOG_KEYENCE_LKG3000 };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
virtual BOOL OnInitDialog();
DECLARE_MESSAGE_MAP()
protected: