1、合并master与2021.1

This commit is contained in:
xiejunjie
2021-12-03 11:25:35 +08:00
parent dc07b8879b
commit 4bd7d1b80b
981 changed files with 384342 additions and 6470 deletions
@@ -0,0 +1,302 @@
#include "stdafx.h"
#include "EF1A_Manual_Machine.h"
#include "resource.h"
extern "C" {
#include <setupapi.h>
#include <hidsdi.h>
}
CEF1AUsbDevice::CEF1AUsbDevice()
{
m_hWriteHandle = INVALID_HANDLE_VALUE;
m_hReadHandle = INVALID_HANDLE_VALUE;
m_nVID = 0x4532;
m_nPID = 0x5567;
m_isOpen = FALSE;
}
CEF1AUsbDevice::~CEF1AUsbDevice()
{
if(m_isOpen)
{
EF1ACloseDevice();
}
}
BOOL CEF1AUsbDevice::EF1AOpenDevice()
{
//用来保存设备是否已经找到
BOOL DevFound=FALSE;
//用来保存找到的设备路径
CString DevPathName=_T("");
//定义一个GUID的结构体HidGuid来保存HID设备的接口类GUID。
GUID HidGuid;
//定义一个DEVINFO的句柄hDevInfoSet来保存获取到的设备信息集合句柄。
HDEVINFO hDevInfoSet;
//定义MemberIndex,表示当前搜索到第几个设备,0表示第一个设备。
DWORD MemberIndex;
//DevInterfaceData,用来保存设备的驱动接口信息
SP_DEVICE_INTERFACE_DATA DevInterfaceData;
//定义一个BOOL变量,保存函数调用是否返回成功
BOOL Result;
//定义一个RequiredSize的变量,用来接收需要保存详细信息的缓冲长度。
DWORD RequiredSize;
//定义一个指向设备详细信息的结构体指针。
PSP_DEVICE_INTERFACE_DETAIL_DATA pDevDetailData;
//定义一个用来保存打开设备的句柄。
HANDLE hDevHandle;
//定义一个HIDD_ATTRIBUTES的结构体变量,保存设备的属性。
HIDD_ATTRIBUTES DevAttributes;
//对DevInterfaceData结构体的cbSize初始化为结构体大小
DevInterfaceData.cbSize=sizeof(DevInterfaceData);
//对DevAttributes结构体的Size初始化为结构体大小
DevAttributes.Size=sizeof(DevAttributes);
//调用HidD_GetHidGuid函数获取HID设备的GUID,并保存在HidGuid中。
HidD_GetHidGuid(&HidGuid);
//根据HidGuid来获取设备信息集合。其中Flags参数设置为
//DIGCF_DEVICEINTERFACE|DIGCF_PRESENT,前者表示使用的GUID为
//接口类GUID,后者表示只列举正在使用的设备,因为我们这里只
//查找已经连接上的设备。返回的句柄保存在hDevinfo中。注意设备
//信息集合在使用完毕后,要使用函数SetupDiDestroyDeviceInfoList
//销毁,不然会造成内存泄漏。
hDevInfoSet=SetupDiGetClassDevs(&HidGuid,
NULL,
NULL,
DIGCF_DEVICEINTERFACE|DIGCF_PRESENT);
//MessageBox(NULL,"开始查找设备!",NULL,MB_OK);
//然后对设备集合中每个设备进行列举,检查是否是我们要找的设备
//当找到我们指定的设备,或者设备已经查找完毕时,就退出查找。
//首先指向第一个设备,即将MemberIndex置为0。
MemberIndex=0;
while(1)
{
//调用SetupDiEnumDeviceInterfaces在设备信息集合中获取编号为
//MemberIndex的设备信息。
Result=SetupDiEnumDeviceInterfaces(hDevInfoSet,
NULL,
&HidGuid,
MemberIndex,
&DevInterfaceData);
//如果获取信息失败,则说明设备已经查找完毕,退出循环。
if(Result==FALSE) break;
//将MemberIndex指向下一个设备
MemberIndex++;
//如果获取信息成功,则继续获取该设备的详细信息。在获取设备
//详细信息时,需要先知道保存详细信息需要多大的缓冲区,这通过
//第一次调用函数SetupDiGetDeviceInterfaceDetail来获取。这时
//提供缓冲区和长度都为NULL的参数,并提供一个用来保存需要多大
//缓冲区的变量RequiredSize。
Result=SetupDiGetDeviceInterfaceDetail(hDevInfoSet,
&DevInterfaceData,
NULL,
NULL,
&RequiredSize,
NULL);
//然后,分配一个大小为RequiredSize缓冲区,用来保存设备详细信息。
pDevDetailData=(PSP_DEVICE_INTERFACE_DETAIL_DATA)malloc(RequiredSize);
if(pDevDetailData==NULL) //如果内存不足,则直接返回。
{
MessageBox(NULL,_T("内存不足!"),NULL,MB_OK);
SetupDiDestroyDeviceInfoList(hDevInfoSet);
return false;
}
//并设置pDevDetailData的cbSize为结构体的大小(注意只是结构体大小,
//不包括后面缓冲区)。
pDevDetailData->cbSize=sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA);
//然后再次调用SetupDiGetDeviceInterfaceDetail函数来获取设备的
//详细信息。这次调用设置使用的缓冲区以及缓冲区大小。
Result=SetupDiGetDeviceInterfaceDetail(hDevInfoSet,
&DevInterfaceData,
pDevDetailData,
RequiredSize,
NULL,
NULL);
//将设备路径复制出来,然后销毁刚刚申请的内存。
DevPathName=pDevDetailData->DevicePath;
free(pDevDetailData);
//如果调用失败,则查找下一个设备。
if(Result==FALSE) continue;
//如果调用成功,则使用不带读写访问的CreateFile函数
//来获取设备的属性,包括VID、PID、版本号等。
//对于一些独占设备(例如USB键盘),使用读访问方式是无法打开的,
//而使用不带读写访问的格式才可以打开这些设备,从而获取设备的属性。
hDevHandle=CreateFile(DevPathName,
NULL,
FILE_SHARE_READ|FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
//如果打开成功,则获取设备属性。
if(hDevHandle!=INVALID_HANDLE_VALUE)
{
//获取设备的属性并保存在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) //并且设备版本号相等
{
DevFound=TRUE; //设置设备已经找到
//MessageBox(NULL,"设备已经找到!",NULL,MB_OK);
//那么就是我们要找的设备,分别使用读写方式打开之,并保存其句柄
//并且选择为异步访问方式。
//读方式打开设备
m_hReadHandle=CreateFile(DevPathName,
GENERIC_READ,
FILE_SHARE_READ|FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,//|FILE_FLAG_OVERLAPPED,
NULL);
if(m_hReadHandle!=INVALID_HANDLE_VALUE)
{
//MessageBox(NULL,"读访问打开设备成功!",NULL,MB_OK);
}
else
MessageBox(NULL,_T("读访问打开设备失败!"),NULL,MB_OK);
//写方式打开设备
m_hWriteHandle=CreateFile(DevPathName,
GENERIC_WRITE,
FILE_SHARE_READ|FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,//|FILE_FLAG_OVERLAPPED,
NULL);
if(m_hWriteHandle!=INVALID_HANDLE_VALUE)
{
//MessageBox(NULL,"写访问打开设备成功!",NULL,MB_OK);
}
else
MessageBox(NULL,_T("写访问打开设备失败!"),NULL,MB_OK);
break;
}
}
//如果打开失败,则查找下一个设备
else continue;
}
//调用SetupDiDestroyDeviceInfoList函数销毁设备信息集合
SetupDiDestroyDeviceInfoList(hDevInfoSet);
//如果设备已经找到,那么应该使能各操作按钮,并同时禁止打开设备按钮
if(DevFound)
{
m_isOpen = TRUE;
return true;
}
else
{
return false;
}
}
void CEF1AUsbDevice::EF1ACloseDevice()
{
if(m_isOpen)
{
if(m_hReadHandle!=INVALID_HANDLE_VALUE)
{
CloseHandle(m_hReadHandle);
m_hReadHandle=INVALID_HANDLE_VALUE;
}
if(m_hWriteHandle!=INVALID_HANDLE_VALUE)
{
CloseHandle(m_hWriteHandle);
m_hWriteHandle=INVALID_HANDLE_VALUE;
}
m_isOpen = FALSE;
}
}
int CEF1AUsbDevice::EF1AReadData(ULONG /*iIndex*/, char* oBuffer,int /*ioLength*/)
{
DWORD iLen = 0;
UCHAR ReadReportBuffer[65]={0};
if(m_hReadHandle==INVALID_HANDLE_VALUE) //如果读句柄无效
{
MessageBox(NULL,_T("无效的读报告句柄!"),NULL,MB_OK);
return FALSE;
}
BOOL _ret;
_ret=ReadFile(m_hReadHandle,
ReadReportBuffer,
65,
&iLen,
NULL);
if(!_ret)
{
return -1;
}
else
{
for(int i=0;i<64;i++)
oBuffer[i]=ReadReportBuffer[i+1];
return iLen;
}
}
int CEF1AUsbDevice::EF1AWriteData(ULONG /*iIndex*/, char* Buffer, int ioLength)
{
BOOL _ret;
DWORD iLen = ioLength;
if(m_hWriteHandle==INVALID_HANDLE_VALUE)
{
MessageBox(NULL,_T("无效的写报告句柄!"),NULL,MB_OK);
return FALSE;
}
unsigned char sendBuffer[65] = {0};
sendBuffer[1] =static_cast<unsigned char>(ioLength);
for(DWORD i = 0; i < iLen; i++)
{
sendBuffer[i+2] = Buffer[i];
}
_ret=WriteFile(m_hWriteHandle,
sendBuffer,
65,
&iLen,
NULL);
if (!_ret)
{
AfxMessageBox(_T("Sent Error"));
return -1;
}
else
return iLen;
}
@@ -0,0 +1,18 @@
#pragma once
#include "resource.h"
class CEF1AUsbDevice
{
public:
CEF1AUsbDevice();
~CEF1AUsbDevice();
BOOL EF1AOpenDevice();
void EF1ACloseDevice();
int EF1AReadData(ULONG iIndex, char* oBuffer, int ioLength);
int EF1AWriteData(ULONG iIndex, char* iBuffer, int ioLength);
private:
HANDLE m_hReadHandle;
HANDLE m_hWriteHandle;
int m_nVID;
int m_nPID;
BOOL m_isOpen;
};
@@ -48,6 +48,11 @@ void CFileUtilitiesDlg::OnBnClickedOk()
if (((CButton *)GetDlgItem(IDC_RADIO_2BIN))->GetCheck())
{
}
else
if (((CButton *)GetDlgItem(IDC_RADIO_BIN2HEX))->GetCheck())
{
m_FileUtilities->Bin2Hex(&m_csInputFile);
}
else
if (((CButton *)GetDlgItem(IDC_RADIO_DEDUPE))->GetCheck())
{
@@ -137,6 +137,49 @@ CMv_File_Utilities::~CMv_File_Utilities(void)
{
}
// ==========================================================================================
// Read in a buffer. Look for the key. Match one of them.
// iFmt = -1 not used.
// ==========================================================================================
int CMv_File_Utilities::Bin2Hex(CString *_InFileName)
{
FILE* pInFile;
FILE* pOutFile;
unsigned char *fBuff = NULL;
int bytes_read = 0;
CString OutFileName = *_InFileName + _T("_Hex.txt");
_wfopen_s(&pOutFile, OutFileName, _T("wt"));
if (!pOutFile)
return -1;
_wfopen_s(&pInFile, *_InFileName, _T("rb"));
if (!pInFile)
{
fprintf(pOutFile, "%s not found.\n", _InFileName);
fclose(pOutFile);
return(-1);
};
fBuff = (unsigned char *)malloc(MAX_BUFF_SIZE);
memset(fBuff, 0, MAX_BUFF_SIZE);
while (!feof(pInFile))
{
bytes_read = fread(fBuff, 1, 32, pInFile);
if (bytes_read > 0)
{
for (int jj=0;jj<bytes_read;jj++)
{
fprintf(pOutFile, "0x%02X,", *(fBuff+jj));
}
};
};
fclose(pInFile);
fclose(pOutFile);
free(fBuff);
return 0;
}
// ==========================================================================================
// Read in a buffer. Look for the key. Match one of them.
// iFmt = -1 not used.
@@ -160,7 +203,7 @@ int CMv_File_Utilities::DumpBin(CString *_InFileName)
fclose(pOutFile);
return(-1);
};
fBuff = (unsigned char *)malloc(MAX_BUFF_SIZE);
memset(fBuff, 0, MAX_BUFF_SIZE);
while (!feof(pInFile))
@@ -183,7 +226,6 @@ int CMv_File_Utilities::DumpBin(CString *_InFileName)
free(fBuff);
return 0;
}
// ==========================================================================================
// Read the entire file. It should be 41K
//
@@ -7,6 +7,8 @@ public:
CMv_File_Utilities(void);
~CMv_File_Utilities(void);
int DumpBin(CString* InFileName);
int Bin2Hex(CString* InFileName);
int DedupeFunction(CString* InFileName);
int ExtractCommand(CString* InFileName, char *_criteriaString, int bNegate);
int DumpPrs(CString *_InFileName);
@@ -37,7 +37,7 @@ BEGIN
CONTROL "输出口 (J1)",IDC_RADIO_READ_OUTPUT_PORT,"Button",BS_AUTORADIOBUTTON,315,159,55,10
CONTROL "输出口 (J3)",IDC_RADIO_READ_OUTPUT_PORT2,"Button",BS_AUTORADIOBUTTON,315,169,55,10
EDITTEXT IDC_EDIT_STATUS,247,270,199,117,ES_MULTILINE | ES_AUTOVSCROLL | ES_WANTRETURN | WS_VSCROLL
GROUPBOX "CMD",IDC_STATIC,102,12,193,116
GROUPBOX "CMD",IDC_STATIC,102,12,193,133
CONTROL "连续读取",IDC_CHECK_CONTINUOUS_READ_IO_STATUS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,380,144,47,10
PUSHBUTTON "点击读取",IDC_BUTTON_SO7_READ_IN_PORT_STATUS,378,156,61,14
COMBOBOX IDC_COMBO_OUTPORT_NUMBER,304,189,39,75,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
@@ -76,7 +76,7 @@ BEGIN
PUSHBUTTON "手动复位",IDC_BUTTON_MANUAL_HOME,219,195,76,22,BS_MULTILINE
PUSHBUTTON "自动复位",IDC_BUTTON_RESET_WORKTABLE,219,227,40,22
PUSHBUTTON "RESET_RIGHT",IDC_BUTTON_RESET_WORKTABLE_RIGHT,167,45,60,15,BS_MULTILINE
PUSHBUTTON "AutoZoom",IDC_BUTTON_AUTO_ZOOM,167,144,60,18,BS_MULTILINE
PUSHBUTTON "AutoZoom",IDC_BUTTON_AUTO_ZOOM,165,159,60,18,BS_MULTILINE
PUSHBUTTON "Set Reset Flag",IDC_BUTTON_SET_RESET_FLAG,104,108,60,15
PUSHBUTTON "Home V",IDC_BUTTON_RESET_V,167,87,60,15
EDITTEXT IDC_EDIT_X_SCALE_COEFFICIENT,37,290,39,12,ES_CENTER | ES_AUTOHSCROLL
@@ -84,7 +84,7 @@ BEGIN
EDITTEXT IDC_EDIT_Z_SCALE_COEFFICIENT,155,290,39,12,ES_CENTER | ES_AUTOHSCROLL
EDITTEXT IDC_EDIT_SET_VER_NO,261,25,29,14,ES_AUTOHSCROLL
GROUPBOX "USB Control",IDC_STATIC,17,12,81,59
GROUPBOX "Advanced Function",IDC_STATIC,102,129,193,44
GROUPBOX "Advanced Function",IDC_STATIC,101,149,193,31
LTEXT "Ver NO.",IDC_STATIC,232,27,26,8
GROUPBOX "R/W Data",IDC_STATIC,301,211,144,54
CONTROL "X",IDC_RADIO_SELECT_X,"Button",BS_AUTORADIOBUTTON | WS_GROUP,307,224,20,10
@@ -114,7 +114,7 @@ BEGIN
LTEXT "Pulse",IDC_STATIC,55,311,18,8
LTEXT "mm",IDC_STATIC,125,311,12,8
LTEXT "ms",IDC_STATIC_SEC,214,386,16,9
EDITTEXT IDC_EDIT_UPDATE_FREQ,185,384,25,13,ES_AUTOHSCROLL | ES_READONLY
EDITTEXT IDC_EDIT_UPDATE_FREQ,185,390,25,13,ES_AUTOHSCROLL | ES_READONLY
GROUPBOX "光栅尺坐标",IDC_STATIC,17,266,224,136
GROUPBOX "MOVE XYZV",IDC_STATIC,17,178,282,86
EDITTEXT IDC_EDIT_X_POSITION_59,176,325,54,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP
@@ -142,8 +142,8 @@ BEGIN
CONTROL "",IDC_MFCBUTTON_STATUS_IN_PORT5,"MfcButton",WS_TABSTOP,414,90,21,14
CONTROL "",IDC_MFCBUTTON_STATUS_IN_PORT6,"MfcButton",WS_TABSTOP,414,106,21,14
PUSHBUTTON "测试零位信号",IDC_BUTTON_SO7_TEST_Z_SIGNAL,167,108,60,15
PUSHBUTTON "CNC Program",IDC_BUTTON_SO7_CNC_PROGRAM,104,144,60,18
GROUPBOX "Config",IDC_STATIC,17,73,81,99
PUSHBUTTON "CNC Program",IDC_BUTTON_SO7_CNC_PROGRAM,103,158,60,18
GROUPBOX "Config",IDC_STATIC,17,73,81,100
EDITTEXT IDC_EDIT_RWDATA_DATA,353,244,44,13,ES_AUTOHSCROLL
PUSHBUTTON "写",IDC_BUTTON_SO7_SENDDATATOFPGA,406,218,34,19
PUSHBUTTON "读",IDC_BUTTON_SO7_READDATAFROMFPGA,406,241,34,19
@@ -171,7 +171,9 @@ BEGIN
PUSHBUTTON "确定",IDC_BUTTON_SET_SCALE_COEFFICIENT,202,285,34,19
GROUPBOX "光栅尺分辨率(μm)",IDC_STATIC,18,277,223,31
PUSHBUTTON "IO用途",IDC_BUTTON_S07_SET_IO_PURPOSE,104,65,60,15
PUSHBUTTON "外触发测试",IDC_BUTTON_SO7_EXTERNAL_TRIG,230,144,60,18
PUSHBUTTON "外触发测试",IDC_BUTTON_SO7_EXTERNAL_TRIG,229,158,60,18
PUSHBUTTON "IO Test",IDC_BUTTON_IO_TEST,103,129,61,14
PUSHBUTTON "设置机器类型",IDC_BUTTON_SET_MOTION_TYPE,169,129,59,14
END
IDD_SO7_UTIL_SEND_PARAMETER DIALOGEX 0, 0, 750, 480
@@ -337,6 +339,7 @@ BEGIN
CONTROL "Y闭环",IDC_CHECK_SO7_CONTROL_MODE_Y,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,25,429,36,10
CONTROL "Z闭环",IDC_CHECK_SO7_CONTROL_MODE_Z,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,25,442,36,10
GROUPBOX "控制模式",IDC_STATIC,16,404,55,51
PUSHBUTTON "另存为...",IDC_BUTTON_SAVE2,231,420,50,24
END
IDD_SO7_UTIL_AUTO_ZOOM DIALOGEX 0, 0, 426, 460
@@ -396,7 +399,7 @@ BEGIN
EDITTEXT IDC_EDIT_ZOOM_TIME,14,159,112,112,ES_MULTILINE | ES_AUTOVSCROLL | ES_WANTRETURN | WS_VSCROLL
END
IDD_SO7_OPTION_DIALOG DIALOGEX 0, 0, 335, 194
IDD_SO7_OPTION_DIALOG DIALOGEX 0, 0, 336, 193
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Utility for SO7"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
@@ -405,7 +408,7 @@ BEGIN
CONTROL "SV2000E视频卡",IDC_RADIO_VIDEOCARD_SV2000E,"Button",BS_AUTORADIOBUTTON,235,40,69,10
CONTROL "SV4000E视频卡",IDC_RADIO_VIDEOCARD_SV4000E,"Button",BS_AUTORADIOBUTTON,235,56,68,10
CONTROL "TC4000视频卡",IDC_RADIO_VIDEOCARD_TC4000,"Button",BS_AUTORADIOBUTTON,235,72,69,10
CONTROL "IP Camera",IDC_RADIO_SO7_IP_CAMERA,"Button",BS_AUTORADIOBUTTON | NOT WS_VISIBLE,235,104,62,10
CONTROL "Mindvision",IDC_RADIO_SO7_IP_CAMERA,"Button",BS_AUTORADIOBUTTON,235,104,62,10
CONTROL "USB Camera",IDC_RADIO_SO7_USB_CAMERA,"Button",BS_AUTORADIOBUTTON | NOT WS_VISIBLE,235,120,62,10
CONTROL "LK_G激光",IDC_RADIO_KEYENCE_LASER,"Button",BS_AUTORADIOBUTTON,129,24,76,10
CONTROL "LK_H激光(USB)",IDC_RADIO_KEYENCE_LASER_LK_H,"Button",BS_AUTORADIOBUTTON,129,40,76,10
@@ -419,16 +422,19 @@ BEGIN
CONTROL "控制器(RS232",IDC_RADIO__SO7_RS232,"Button",BS_AUTORADIOBUTTON,26,56,77,10
CONTROL "Verifcation algorithm",IDC_RADIO_SO7_VERIFICATION_ALGORITHM,
"Button",BS_AUTORADIOBUTTON | NOT WS_VISIBLE,235,152,81,10
CONTROL "Image.dll",IDC_RADIO_TEST_IMAGE_DLL,"Button",BS_AUTORADIOBUTTON,235,136,45,10
DEFPUSHBUTTON "OK",IDOK,195,173,50,14
PUSHBUTTON "Cancel",IDCANCEL,270,173,50,14
CONTROL "Image.dll",IDC_RADIO_TEST_IMAGE_DLL,"Button",BS_AUTORADIOBUTTON | NOT WS_VISIBLE,235,136,45,10
DEFPUSHBUTTON "OK",IDOK,195,172,50,14
PUSHBUTTON "Cancel",IDCANCEL,271,172,50,14
GROUPBOX "测试选项",IDC_STATIC,11,8,304,158
CONTROL "MV900视频卡",IDC_RADIO_VIDEOCARD_MV900,"Button",BS_AUTORADIOBUTTON,235,88,69,10
CONTROL "TCPIP Client(CJ2M PLC)",IDC_RADIO_SO7_OMRON_PLC,"Button",BS_AUTORADIOBUTTON,26,88,89,10
CONTROL "TCPIP Server(CJ2M PLC)",IDC_RADIO_SO7_OMRON_PLC_SERVER,
CONTROL "TCPIP Client(PLC)",IDC_RADIO_SO7_OMRON_PLC,"Button",BS_AUTORADIOBUTTON,26,88,89,10
CONTROL "TCPIP Server(PLC)",IDC_RADIO_SO7_OMRON_PLC_SERVER,
"Button",BS_AUTORADIOBUTTON,26,72,91,10
CONTROL "Temperature Sensor",IDC_RADIO_SO7_TEMPERATURE_SENSOR,
"Button",BS_AUTORADIOBUTTON,26,104,81,10
CONTROL "keyence9011",IDC_RADIO_SO7_keyence9011,"Button",BS_AUTORADIOBUTTON,25,118,59,10
CONTROL "Robot",IDC_RADIO_SO7_ROBOT,"Button",BS_AUTORADIOBUTTON,25,133,35,10
CONTROL "控制器(EF1A)",IDC_RADIO_CONTROL_EF1A,"Button",BS_AUTORADIOBUTTON,26,149,62,10
END
IDD_SO7_VIDEOCARD_SDK3000 DIALOGEX 0, 0, 488, 316
@@ -825,52 +831,58 @@ BEGIN
GROUPBOX "降噪(5-100)",IDC_STATIC,437,75,47,39
END
IDD_SO7_UTIL_PROGRAM DIALOGEX 0, 0, 590, 386
IDD_SO7_UTIL_PROGRAM DIALOGEX 0, 0, 759, 451
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "CNC Program"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
PUSHBUTTON "Exit",IDCANCEL,533,365,50,14
GROUPBOX "Motion",IDC_STATIC,163,11,253,130
CONTROL "",IDC_MFCBUTTON_SO7_PROGRAM_X_LEFT,"MfcButton",WS_TABSTOP,295,56,37,31
CONTROL "",IDC_MFCBUTTON_SO7_PROGRAM_X_RIGHT,"MfcButton",WS_TABSTOP,369,56,37,31
CONTROL "",IDC_MFCBUTTON_SO7_PROGRAM_Y_FRONTWARD,"MfcButton",WS_TABSTOP,332,26,37,31
CONTROL "",IDC_MFCBUTTON_SO7_PROGRAM_Y_BACKWARD,"MfcButton",WS_TABSTOP,332,86,37,31
CONTROL "",IDC_MFCBUTTON_SO7_PROGRAM_Z_UP,"MfcButton",WS_TABSTOP,295,26,37,31
CONTROL "",IDC_MFCBUTTON_SO7_PROGRAM_Z_DOWN,"MfcButton",WS_TABSTOP,295,86,37,31
CONTROL "3",IDC_MFCBUTTON_SPEEDGEAR,"MfcButton",WS_TABSTOP,332,56,37,31
CONTROL "",IDC_MFCBUTTON_SO7_PROGRAM_PLUS_SPEED,"MfcButton",WS_TABSTOP,369,26,37,31
CONTROL "",IDC_MFCBUTTON_SO7_PROGRAM_MINUS_SPEED,"MfcButton",WS_TABSTOP,369,86,37,31
CONTROL "",IDC_LIST_REPORT_OUTPUT,"SysListView32",LVS_REPORT | WS_BORDER | WS_TABSTOP,17,151,557,117
GROUPBOX "Readout",IDC_STATIC,420,11,157,130
GROUPBOX "Motion Type",IDC_STATIC,169,32,52,82
CONTROL "Move",IDC_RADIO_SO7_PROGRAM_MOVE,"Button",BS_AUTORADIOBUTTON,174,54,33,10
CONTROL "MoveTo",IIDC_RADIO_SO7_PROGRAM_MOVE_TO,"Button",BS_AUTORADIOBUTTON,174,84,41,10
EDITTEXT IDC_EDIT_SO7_PROGRAM_X_MOVETO,241,37,40,14,ES_AUTOHSCROLL
EDITTEXT IDC_EDIT_SO7_PROGRAM_Y_MOVETO,241,63,40,14,ES_AUTOHSCROLL
EDITTEXT IDC_EDIT_SO7_PROGRAM_Z_MOVETO,241,89,40,14,ES_AUTOHSCROLL
LTEXT "X",IDC_STATIC,230,39,8,8
LTEXT "Y",IDC_STATIC,230,65,8,8
LTEXT "Z",IDC_STATIC,230,92,8,8
PUSHBUTTON "X",IDC_BUTTON_PROGRAM_SET_ZERO_X,427,41,27,21
PUSHBUTTON "Y",IDC_BUTTON_PROGRAM_SET_ZERO_Y,427,64,27,21
PUSHBUTTON "Z",IDC_BUTTON_PROGRAM_SET_ZERO_Z,427,87,27,21
GROUPBOX "CNC Program",IDC_STATIC,15,11,140,130
PUSHBUTTON "Add CNC Point",IDC_BUTTON_SO7_PROGRAM_ADD_CNC_PROGRAM,22,113,53,21
PUSHBUTTON "Run",IDC_BUTTON_SO7_PROGRAM_RUN_CNC,87,115,53,21
EDITTEXT IDC_EDIT_SO7_PROGRAM_MSG_OUTPUT,17,276,554,77,ES_MULTILINE | ES_AUTOVSCROLL | ES_WANTRETURN | WS_VSCROLL
EDITTEXT IDC_EDIT_READOUT_X,459,42,113,22,ES_RIGHT | ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER
EDITTEXT IDC_EDIT_READOUT_Z,459,85,113,22,ES_RIGHT | ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER
EDITTEXT IDC_EDIT_READOUT_Y,459,63,113,22,ES_RIGHT | ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER
PUSHBUTTON "New",IDC_BUTTON_SO7_PROGRAM_NEW_CNC,22,29,53,21
PUSHBUTTON "Save as...",IDC_BUTTON_SO7_PROGRAM_SAVE_CNC_FILE,22,85,53,21
PUSHBUTTON "Open",IDC_BUTTON_SO7_PROGRAM_OPEN_CNC,22,57,53,21
EDITTEXT IDC_EDIT_SO7_PROGEAM_CNC_RUING_TIMES,97,49,40,14,ES_AUTOHSCROLL
PUSHBUTTON "Exit",IDCANCEL,702,430,50,14
GROUPBOX "Motion",IDC_STATIC,331,10,253,130
CONTROL "",IDC_MFCBUTTON_SO7_PROGRAM_X_LEFT,"MfcButton",WS_TABSTOP,463,55,37,31
CONTROL "",IDC_MFCBUTTON_SO7_PROGRAM_X_RIGHT,"MfcButton",WS_TABSTOP,537,55,37,31
CONTROL "",IDC_MFCBUTTON_SO7_PROGRAM_Y_FRONTWARD,"MfcButton",WS_TABSTOP,500,25,37,31
CONTROL "",IDC_MFCBUTTON_SO7_PROGRAM_Y_BACKWARD,"MfcButton",WS_TABSTOP,500,85,37,31
CONTROL "",IDC_MFCBUTTON_SO7_PROGRAM_Z_UP,"MfcButton",WS_TABSTOP,463,25,37,31
CONTROL "",IDC_MFCBUTTON_SO7_PROGRAM_Z_DOWN,"MfcButton",WS_TABSTOP,463,85,37,31
CONTROL "3",IDC_MFCBUTTON_SPEEDGEAR,"MfcButton",WS_TABSTOP,500,55,37,31
CONTROL "",IDC_MFCBUTTON_SO7_PROGRAM_PLUS_SPEED,"MfcButton",WS_TABSTOP,537,25,37,31
CONTROL "",IDC_MFCBUTTON_SO7_PROGRAM_MINUS_SPEED,"MfcButton",WS_TABSTOP,537,85,37,31
CONTROL "",IDC_LIST_REPORT_OUTPUT,"SysListView32",LVS_REPORT | WS_BORDER | WS_TABSTOP,17,151,727,117
GROUPBOX "Readout",IDC_STATIC,588,10,157,130
GROUPBOX "Motion Type",IDC_STATIC,337,31,52,82
CONTROL "Jog",IDC_RADIO_SO7_PROGRAM_MOVE,"Button",BS_AUTORADIOBUTTON,342,53,27,10
CONTROL "MoveTo",IIDC_RADIO_SO7_PROGRAM_MOVE_TO,"Button",BS_AUTORADIOBUTTON,342,83,41,10
EDITTEXT IDC_EDIT_SO7_PROGRAM_X_MOVETO,409,36,40,14,ES_AUTOHSCROLL
EDITTEXT IDC_EDIT_SO7_PROGRAM_Y_MOVETO,409,61,40,14,ES_AUTOHSCROLL
EDITTEXT IDC_EDIT_SO7_PROGRAM_Z_MOVETO,409,88,40,14,ES_AUTOHSCROLL
LTEXT "X",IDC_STATIC,398,37,8,8
LTEXT "Y",IDC_STATIC,398,64,8,8
LTEXT "Z",IDC_STATIC,398,91,8,8
PUSHBUTTON "X",IDC_BUTTON_PROGRAM_SET_ZERO_X,595,40,27,21
PUSHBUTTON "Y",IDC_BUTTON_PROGRAM_SET_ZERO_Y,595,63,27,21
PUSHBUTTON "Z",IDC_BUTTON_PROGRAM_SET_ZERO_Z,595,85,27,21
GROUPBOX "CNC Program",IDC_STATIC,15,11,308,130
PUSHBUTTON "Add CNC Point",IDC_BUTTON_SO7_PROGRAM_ADD_CNC_PROGRAM,254,31,53,21
PUSHBUTTON "Run",IDC_BUTTON_SO7_PROGRAM_RUN_CNC,255,103,53,21
EDITTEXT IDC_EDIT_SO7_PROGRAM_MSG_OUTPUT,17,274,663,136,ES_MULTILINE | ES_AUTOVSCROLL | ES_WANTRETURN | WS_VSCROLL
EDITTEXT IDC_EDIT_READOUT_X,627,41,113,22,ES_RIGHT | ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER
EDITTEXT IDC_EDIT_READOUT_Z,627,84,113,22,ES_RIGHT | ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER
EDITTEXT IDC_EDIT_READOUT_Y,627,61,113,22,ES_RIGHT | ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER
PUSHBUTTON "New",IDC_BUTTON_SO7_PROGRAM_NEW_CNC,23,29,53,21
PUSHBUTTON "Save as...",IDC_BUTTON_SO7_PROGRAM_SAVE_CNC_FILE,177,30,53,21
PUSHBUTTON "Open",IDC_BUTTON_SO7_PROGRAM_OPEN_CNC,100,30,53,21
EDITTEXT IDC_EDIT_SO7_PROGEAM_CNC_RUING_TIMES,147,107,40,14,ES_AUTOHSCROLL
CONTROL "Infinite",IDC_CHECK_SO7_RUNING_PROGRAM_RUNING_INFINITE,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,100,34,39,10
GROUPBOX "Times",IDC_STATIC,89,22,56,47
GROUPBOX "Interval(ms)",IDC_STATIC,89,72,56,39
EDITTEXT IDC_EDIT_SO7_PROGEAM_INTERCAL_TIME_PER_CNC,97,86,40,14,ES_AUTOHSCROLL
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,200,109,39,10
GROUPBOX "Times",IDC_STATIC,143,92,102,39
GROUPBOX "Interval(ms)",IDC_STATIC,80,93,56,39
EDITTEXT IDC_EDIT_SO7_PROGEAM_INTERCAL_TIME_PER_CNC,88,107,40,14,ES_AUTOHSCROLL
PUSHBUTTON "Clear",IDC_BUTTON_PROGRAM_CLEAR_LOG,691,335,50,14
PUSHBUTTON "Export....",IDC_BUTTON_PROGRAM_EXPORT,691,275,50,14
EDITTEXT IDC_EDIT_SO7_PROGRAM_DEADBAND,30,107,40,14,ES_AUTOHSCROLL
GROUPBOX "Warning para",IDC_STATIC,24,93,56,39
COMBOBOX IDC_COMBO_SO7_PROGRAM_CNCLIST,26,65,67,30,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "MovetoPnt",IDC_BUTTON_SO7_PROGRAM_MOVETO_POINT,100,62,53,21
END
IDD_DIALOG_TESA_STAR_E DIALOGEX 0, 0, 403, 284
@@ -1000,12 +1012,12 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSM
CAPTION "External Trigger"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
CONTROL "等间距触发",IDC_RADIO_SO7_EXTRIG_EQDIS,"Button",BS_AUTORADIOBUTTON | WS_GROUP,36,75,56,10
CONTROL "等间距触发II",IDC_RADIO_SO7_EXTRIG_EQDIS2,"Button",BS_AUTORADIOBUTTON,36,86,61,10
CONTROL "指定位移触发",IDC_RADIO_SO7_EXTRIG_SPECLOCATION,"Button",BS_AUTORADIOBUTTON,36,97,64,10
CONTROL "X",IDC_RADIO_SO7_EXTRIG_X,"Button",BS_AUTORADIOBUTTON | WS_GROUP,41,33,20,10
CONTROL "Y",IDC_RADIO_SO7_EXTRIG_Y,"Button",BS_AUTORADIOBUTTON,77,33,20,10
CONTROL "Z",IDC_RADIO_SO7_EXTRIG_Z,"Button",BS_AUTORADIOBUTTON,113,33,20,10
CONTROL "等间距触发",IDC_RADIO_SO7_EXTRIG_EQDIS,"Button",BS_AUTORADIOBUTTON | WS_GROUP,36,75,56,10
CONTROL "等间距触发II",IDC_RADIO_SO7_EXTRIG_EQDIS2,"Button",BS_AUTORADIOBUTTON | WS_GROUP,36,86,61,10
CONTROL "指定位移触发",IDC_RADIO_SO7_EXTRIG_SPECLOCATION,"Button",BS_AUTORADIOBUTTON,36,97,64,10
CONTROL "",IDC_LIST_SO7_EXTRIG_SPECLOCATION,"SysListView32",LVS_REPORT | WS_BORDER | WS_TABSTOP,33,113,254,77
LTEXT "触发间距",IDC_STATIC,113,74,33,8
LTEXT "触发点数",IDC_STATIC,113,92,33,8
@@ -1073,6 +1085,9 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSM
CAPTION "PLC TCP/IP SERVER"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
CONTROL "598/603",IDC_RADIO_PROJECT_598603,"Button",BS_AUTORADIOBUTTON | WS_GROUP,33,113,43,10
CONTROL "583/584",IDC_RADIO_PROJECT_583584,"Button",BS_AUTORADIOBUTTON,82,113,43,10
GROUPBOX "Diagnose",IDC_STATIC,17,99,145,58
PUSHBUTTON "Exit",IDCANCEL,534,389,39,14
GROUPBOX "TCP/IP Server Control",IDC_STATIC,17,12,87,81
PUSHBUTTON "Start",IDC_BUTTON_PLC_TCPIP_SERVER_START,29,49,63,18
@@ -1085,7 +1100,7 @@ BEGIN
EDITTEXT IDC_EDIT_PLC_TCPIP_SERVER_STATE_LASER2,174,71,40,14,ES_AUTOHSCROLL
LTEXT "LASER1-1 STATE",IDC_STATIC,168,26,55,8
EDITTEXT IDC_EDIT_PLC_TCPIP_SERVER_STATE_CCD1,118,38,40,14,ES_AUTOHSCROLL
LTEXT "CCD1-1 STATE",IDC_STATIC,116,26,48,8
LTEXT "PLC TRIGE",IDC_STATIC,116,26,35,8
EDITTEXT IDC_EDIT_PLC_TCPIP_SERVER_STATE_LASER1,174,39,40,14,ES_AUTOHSCROLL
LTEXT "LASER2-1 STATE",IDC_STATIC,168,59,55,8
EDITTEXT IDC_EDIT_PLC_TCPIP_SERVER_STATE_CCD2,118,71,40,14,ES_AUTOHSCROLL
@@ -1093,20 +1108,27 @@ BEGIN
PUSHBUTTON "Clear",IDC_BUTTON_CLEAR_MSG,453,389,39,14
CONTROL "",IDC_LIST_PLC_TCPIP_SERVER_CCDDATA,"SysListView32",LVS_REPORT | WS_BORDER | WS_TABSTOP,25,189,294,166
GROUPBOX "地址表",IDC_STATIC,18,164,307,214
PUSHBUTTON "Update",IDC_BUTTON_PLC_TCPIP_SERVER_UPDATEDATA,279,358,40,14
PUSHBUTTON "Update",IDC_BUTTON_PLC_TCPIP_SERVER_UPDATEDATA,279,360,40,14
EDITTEXT IDC_EDIT_PLC_TCPIP_SERVER_PORTNUMBER,51,30,40,14,ES_AUTOHSCROLL
LTEXT "Port",IDC_STATIC,29,33,14,8
CONTROL "CCD1 DM",IDC_RADIO_PLC_TCPIP_SERVER_ADDR_CCD_DM,"Button",BS_AUTORADIOBUTTON | WS_GROUP,33,174,46,10
CONTROL "DM 5000",IDC_RADIO_PLC_TCPIP_SERVER_ADDR_DM5000,"Button",BS_AUTORADIOBUTTON,97,174,44,10
CONTROL "DM 8000",IDC_RADIO_PLC_TCPIP_SERVER_ADDR_DM8000,"Button",BS_AUTORADIOBUTTON,159,174,44,10
CONTROL "DM 200",IDC_RADIO_PLC_TCPIP_SERVER_ADDR_DM200,"Button",BS_AUTORADIOBUTTON,221,174,40,10
GROUPBOX "Static",IDC_STATIC,17,97,307,63
GROUPBOX "IO Signal",IDC_STATIC,166,97,158,63
CONTROL "Trig Measure",IDC_CHECK_PLC_TCPIP_SERVER_MEASURE_TRIG,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,41,114,57,10
CONTROL "E_STOP",IDC_CHECK_PLC_TCPIP_SERVER_E__STOP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,41,138,41,10
CONTROL "Fix1",IDC_CHECK_PLC_TCPIP_SERVER_FIX1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,151,114,29,10
CONTROL "Fix2",IDC_CHECK_PLC_TCPIP_SERVER_FIX2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,151,138,29,10
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,176,114,57,10
CONTROL "E_STOP",IDC_CHECK_PLC_TCPIP_SERVER_E__STOP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,176,138,41,10
CONTROL "Fix1",IDC_CHECK_PLC_TCPIP_SERVER_FIX1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,242,114,29,10
CONTROL "Fix2",IDC_CHECK_PLC_TCPIP_SERVER_FIX2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,242,138,29,10
PUSHBUTTON "Update",IDC_BUTTON_PLC_TCPIP_SERVER_UPDATESTATE_DM200,277,133,40,14
PUSHBUTTON "Auto Test",IDC_BUTTON_PLC_TCPIP_SERVER_AUTOTEST,27,134,50,14
PUSHBUTTON "Export...",IDC_BUTTON_PLC_TCPIP_SERVER_EXPORT,88,360,50,14
PUSHBUTTON "Import...",IDC_BUTTON_PLC_TCPIP_SERVER_IMPORT,26,360,50,14
PUSHBUTTON "Set",IDC_BUTTON_PLC_TCPIP_SERVER_AUTOTEST2,137,113,19,14
PUSHBUTTON "Get",IDC_BUTTON_PLC_TCPIP_SERVER_AUTOTEST3,137,134,19,14
PUSHBUTTON "Gauss Test",IDC_BUTTON_PLC_TCPIP_SERVER_GAUSS_TEST,81,134,50,14
CONTROL "Log",IDC_CHECK_MSG_LOG_ENABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,423,389,27,10
END
IDD_SO7_UTIL_CAMERA DIALOGEX 0, 0, 417, 271
@@ -1194,6 +1216,100 @@ BEGIN
EDITTEXT IDC_EDIT_SO7_UTIL_TEMPERATURE_DISPLAY_VALUE_C4,277,221,90,14,ES_AUTOHSCROLL
END
IDD_SO7_UTIL_Robot_Control DIALOGEX 0, 0, 436, 343
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Robot Control"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
PUSHBUTTON "退出",IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_EXIT,379,322,50,14
EDITTEXT IDC_EDIT_SO7_REBOT_CONTROL_POSITION_X1,62,266,308,15,ES_AUTOHSCROLL
PUSHBUTTON "连接",IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_CONNECT,17,15,50,14
PUSHBUTTON "断开",IDC_BUTTON_So7_UTIL_REBOT_CONTROL_DISCONNECT,18,34,50,14
GROUPBOX "坐标信息",IDC_STATIC,7,245,422,59
LTEXT "当前位置:",IDC_STATIC,14,269,41,8
PUSHBUTTON "开始运动",IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_RUN,177,16,50,14
PUSHBUTTON "停止运动",IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_END,176,34,50,14
EDITTEXT IDC_EDIT_SO7_REBOT_CONTROL_POSITION_PROGRAM,62,86,316,17,ES_AUTOHSCROLL | ES_WANTRETURN
CONTROL "执行",IDC_EDIT_SO7_REBOT_CONTROL_POSITION_PRO_SELECT,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,383,101,32,10
LTEXT "程序名:",IDC_STATIC,15,89,33,8
LTEXT "程序名:",IDC_STATIC,16,151,33,8
EDITTEXT IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_WRITEPROGNAME,58,147,317,15,ES_AUTOHSCROLL | ES_WANTRETURN
PUSHBUTTON "保存程序",IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_SAVEPROG,379,222,50,14
GROUPBOX "编写变量",IDC_STATIC,7,123,422,118
GROUPBOX "执行程序",IDC_STATIC,7,66,422,53
GROUPBOX "",IDC_STATIC,7,7,240,49
PUSHBUTTON "伺服开",IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_SERVON,100,16,50,14
PUSHBUTTON "伺服关",IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_SERVOFF,101,33,50,14
PUSHBUTTON "设置速度",IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_SETSPEED,356,30,50,14
EDITTEXT IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_SPEED,301,28,40,14,ES_AUTOHSCROLL
LTEXT "运行速度",IDC_STATIC,254,31,33,8
GROUPBOX "",IDC_STATIC,247,7,182,49
CONTROL "循环",IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_CYCLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,383,82,32,10
PUSHBUTTON "读取位置",IDC_BUTTON_ReadPosition,379,266,50,14
EDITTEXT IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_WRITEPROGNUMBER,57,168,317,14,ES_AUTOHSCROLL
EDITTEXT IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_WRITEPROGVALUE,57,188,316,40,ES_MULTILINE | ES_AUTOHSCROLL
LTEXT "变量数量:",IDC_STATIC,7,172,42,8
LTEXT "变量值:",IDC_STATIC,14,190,28,8
END
IDD_So7_Util_Keyence9011 DIALOGEX 0, 0, 410, 252
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Keyence9011"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
LTEXT "端口号:",IDC_STATIC,25,23,33,8
LTEXT "波特率:",IDC_STATIC,135,23,33,8
COMBOBOX IDC_COMBO_SO7_UTIL_Keyence9011_PORT,57,21,48,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
COMBOBOX IDC_COMBO_SO7_UTIL_Keyence9011_BAUD,169,20,48,30,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "打开串口",IDC_BUTTON_SO7_UTIL_Keyence9011_OPEN,350,14,50,14
PUSHBUTTON "关闭串口",IDC_BUTTON_SO7_UTIL_Keyence9011_CLOSE,350,54,50,14
PUSHBUTTON "接收数据",IDC_BUTTON_SO7_UTIL_Keyence9011_RECV,350,92,50,14
PUSHBUTTON "终止接收",IDC_BUTTON_SO7_UTIL_Keyence9011_STOP,350,130,50,14
PUSHBUTTON "保存",IDC_BUTTON_SO7_UTIL_Keyence9011_SAVE,350,176,50,14
PUSHBUTTON "退出",IDC_BUTTON_SO7_UTIL_Keyence9011_EXIT,350,221,50,14
EDITTEXT IDC_EDIT_SO7_UTIL_Keyence9011_RECVDATA,7,71,308,134,ES_MULTILINE | ES_AUTOVSCROLL | ES_READONLY | ES_WANTRETURN
GROUPBOX "通信设置",IDC_STATIC,7,7,308,44
GROUPBOX "",IDC_STATIC,7,54,308,181
GROUPBOX "",IDC_STATIC,325,7,75,231
CONTROL "循环接收数据",IDC_CHECK_SO7_UTIL_Keyence9011_CYCLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,260,212,64,10
EDITTEXT IDC_EDIT_SO7_UTIL_Keyence9011_TIMER,187,211,40,14,ES_AUTOHSCROLL | ES_NUMBER
LTEXT "接收间隔:",IDC_STATIC,149,215,41,8
LTEXT "数据显示:",IDC_STATIC,7,55,52,12
LTEXT "秒",IDC_STATIC,231,212,9,8
END
IDD_SO7_VIDEOCARD_MINDVISION DIALOGEX 0, 0, 488, 316
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "MindVision Camera"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
CONTROL "彩色图像",IDC_RADIO_RGB,"Button",BS_AUTORADIOBUTTON,436,31,48,10
CONTROL "黑白图像",IDC_RADIO_GRAY,"Button",BS_AUTORADIOBUTTON,436,51,48,10
CONTROL "二值化图像",IDC_RADIO_BINARZATION,"Button",BS_AUTORADIOBUTTON,436,71,56,10
CONTROL "垂直镜像",IDC_CHECK_MIRROR_VERTICALLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,436,94,48,10
PUSHBUTTON "保存图片",IDC_BUTTON_SAVE_PICTURE,436,117,49,14
DEFPUSHBUTTON "开始",IDOK,372,298,50,14
PUSHBUTTON "退出",IDCANCEL,436,298,49,14
CONTROL "",IDC_STATIC_SDK3000_PICTURE,"Static",SS_BLACKFRAME | NOT WS_VISIBLE,228,296,68,16
PUSHBUTTON "参数设置",IDC_BUTTON_SET_PARA,436,143,49,14
END
IDD_DIALOG_OPERATE_EXTRA_IO DIALOGEX 0, 0, 243, 126
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Dialog"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
LTEXT "选择IO",IDC_STATIC_SELECT_IO,30,43,29,14
PUSHBUTTON "IO置1",IDC_BUTTON_SET_IO_1,143,53,50,14
EDITTEXT IDC_EDIT_IO_NUMBER,77,43,48,14,ES_AUTOHSCROLL
PUSHBUTTON "IO置0",IDC_BUTTON_SET_IO_0,142,26,50,14
GROUPBOX "IO口操作",IDC_STATIC_IO_OPRATION,17,15,208,93
PUSHBUTTON "读取IO",IDC_BUTTON_READ_IO,143,82,50,14
LTEXT "IO口状态",IDC_STATIC_IO_STAURT,27,81,42,13
CONTROL "",IDC_MFCBUTTON_IO_STAURT,"MfcButton",WS_TABSTOP,79,79,46,17
END
/////////////////////////////////////////////////////////////////////////////
//
@@ -1229,9 +1345,9 @@ BEGIN
IDD_SO7_OPTION_DIALOG, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 320
RIGHTMARGIN, 321
TOPMARGIN, 6
BOTTOMMARGIN, 187
BOTTOMMARGIN, 186
END
IDD_SO7_VIDEOCARD_SDK3000, DIALOG
@@ -1313,9 +1429,9 @@ BEGIN
IDD_SO7_UTIL_PROGRAM, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 583
RIGHTMARGIN, 752
TOPMARGIN, 7
BOTTOMMARGIN, 379
BOTTOMMARGIN, 444
END
IDD_DIALOG_TESA_STAR_E, DIALOG
@@ -1414,6 +1530,39 @@ BEGIN
TOPMARGIN, 7
BOTTOMMARGIN, 274
END
IDD_SO7_UTIL_Robot_Control, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 429
TOPMARGIN, 7
BOTTOMMARGIN, 336
END
IDD_So7_Util_Keyence9011, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 400
TOPMARGIN, 7
BOTTOMMARGIN, 245
END
IDD_SO7_VIDEOCARD_MINDVISION, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 485
VERTGUIDE, 436
TOPMARGIN, 7
BOTTOMMARGIN, 312
END
IDD_DIALOG_OPERATE_EXTRA_IO, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 236
TOPMARGIN, 6
BOTTOMMARGIN, 119
END
END
#endif // APSTUDIO_INVOKED
@@ -1828,6 +1977,33 @@ BEGIN
0
END
IDD_DIALOG_OPERATE_EXTRA_IO DLGINIT
BEGIN
IDC_MFCBUTTON_IO_STAURT, 0x37c, 369, 0
0x4d3c, 0x4346, 0x7542, 0x7474, 0x6e6f, 0x535f, 0x7974, 0x656c, 0x343e,
0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x7453, 0x6c79, 0x3e65,
0x4d3c, 0x4346, 0x7542, 0x7474, 0x6e6f, 0x415f, 0x7475, 0x736f, 0x7a69,
0x3e65, 0x4146, 0x534c, 0x3c45, 0x4d2f, 0x4346, 0x7542, 0x7474, 0x6e6f,
0x415f, 0x7475, 0x736f, 0x7a69, 0x3e65, 0x4d3c, 0x4346, 0x7542, 0x7474,
0x6e6f, 0x545f, 0x6f6f, 0x746c, 0x7069, 0x3c3e, 0x4d2f, 0x4346, 0x7542,
0x7474, 0x6e6f, 0x545f, 0x6f6f, 0x746c, 0x7069, 0x3c3e, 0x464d, 0x4243,
0x7475, 0x6f74, 0x5f6e, 0x7546, 0x6c6c, 0x6554, 0x7478, 0x6f54, 0x6c6f,
0x543e, 0x5552, 0x3c45, 0x4d2f, 0x4346, 0x7542, 0x7474, 0x6e6f, 0x465f,
0x6c75, 0x546c, 0x7865, 0x5474, 0x6f6f, 0x3e6c, 0x4d3c, 0x4346, 0x7542,
0x7474, 0x6e6f, 0x435f, 0x7275, 0x6f73, 0x5472, 0x7079, 0x3e65, 0x3131,
0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x7543, 0x7372, 0x726f,
0x7954, 0x6570, 0x3c3e, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49,
0x6761, 0x5465, 0x7079, 0x3e65, 0x3c38, 0x4d2f, 0x4346, 0x7542, 0x7474,
0x6e6f, 0x495f, 0x616d, 0x6567, 0x7954, 0x6570, 0x3c3e, 0x464d, 0x4243,
0x7475, 0x6f74, 0x5f6e, 0x6d49, 0x6761, 0x4f65, 0x546e, 0x706f, 0x463e,
0x4c41, 0x4553, 0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49,
0x6761, 0x4f65, 0x546e, 0x706f, 0x3c3e, 0x464d, 0x4243, 0x7475, 0x6f74,
0x5f6e, 0x6d49, 0x6761, 0x4f65, 0x526e, 0x6769, 0x7468, 0x463e, 0x4c41,
0x4553, 0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, 0x6761,
0x4f65, 0x526e, 0x6769, 0x7468, "\076"
0
END
/////////////////////////////////////////////////////////////////////////////
//
@@ -2468,17 +2644,18 @@ CAPTION "File Utilities"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
CONTROL "De-Dupe Text Lines",IDC_RADIO_DEDUPE,"Button",BS_AUTORADIOBUTTON,27,40,78,10
CONTROL "Hex to Binary",IDC_RADIO_2BIN,"Button",BS_AUTORADIOBUTTON,27,55,61,10
CONTROL "Dump Binary",IDC_RADIO_DUMP_BINARY,"Button",BS_AUTORADIOBUTTON,27,70,60,10
CONTROL "Extract",IDC_RADIO_OUT_EXTRACT,"Button",BS_AUTORADIOBUTTON,27,101,38,10
EDITTEXT IDC_EDIT_CRITERIA,67,101,179,12,ES_AUTOHSCROLL
CONTROL "Exclude",IDC_CHECK_NEGATE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,250,102,43,11
CONTROL "Hex to Binary",IDC_RADIO_2BIN,"Button",BS_AUTORADIOBUTTON,27,54,61,10
CONTROL "Binary to Hex",IDC_RADIO_BIN2HEX,"Button",BS_AUTORADIOBUTTON,27,68,61,10
CONTROL "Dump Binary",IDC_RADIO_DUMP_BINARY,"Button",BS_AUTORADIOBUTTON,27,82,60,10
CONTROL "Dump PRS",IDC_RADIO_DUMP_PRS,"Button",BS_AUTORADIOBUTTON,27,96,60,10
CONTROL "Extract",IDC_RADIO_OUT_EXTRACT,"Button",BS_AUTORADIOBUTTON,27,114,38,10
DEFPUSHBUTTON "OK",IDOK,203,140,50,14
PUSHBUTTON "Cancel",IDCANCEL,256,140,50,14
EDITTEXT IDC_EDIT_CRITERIA,67,113,179,12,ES_AUTOHSCROLL
CONTROL "Exclude",IDC_CHECK_NEGATE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,250,114,43,11
LTEXT "Input File : ",IDC_STATIC,19,19,38,10
EDITTEXT IDC_EDIT_INPUT_FILE,59,18,187,12,ES_AUTOHSCROLL
PUSHBUTTON "Browse",IDC_BUTTON_BROWSE,253,17,33,14
CONTROL "Dump PRS",IDC_RADIO_DUMP_PRS,"Button",BS_AUTORADIOBUTTON,27,85,60,10
END
IDD_DIALOG_KEYENCE_LKG3000 DIALOGEX 0, 0, 740, 353
@@ -2792,8 +2969,8 @@ END
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 7,0,9,0
PRODUCTVERSION 7,0,9,0
FILEVERSION 7,1,0,0
PRODUCTVERSION 7,1,0,0
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
@@ -2810,12 +2987,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "Hexagon Metrology"
VALUE "FileDescription", "Utility for Hexagon Metrology"
VALUE "FileVersion", "7.0.9.0"
VALUE "FileVersion", "7.1.0.0"
VALUE "InternalName", "Usb_Util.exe"
VALUE "LegalCopyright", "Copyright 2015 Hexagon Metrology."
VALUE "OriginalFilename", "Usb_Util.exe"
VALUE "ProductName", "Utility"
VALUE "ProductVersion", "7.0.9.0"
VALUE "ProductVersion", "7.1.0.0"
END
END
BLOCK "VarFileInfo"
@@ -0,0 +1,705 @@
[Display]=1
[CONNECT1]=1
[Comment1]=
[ComPort1]=1
[ComSpeed1]=9600
[ComSize1]=8
[ComParity1]=2
[ComStopPits1]=2
[ComSendTimeout1]=5000
[ComRecvTimeput1]=30000
[ComRetry1]=3
[ComProtcol1]=1
[LanAddress1]=192.168.1.200
[LanPortNo1]=10001
[LanSendTimeout1]=5000
[LanRecvTimeout1]=30000
[LanRetry1]=0
[DeviceName1]=TOOLBOX
[Device#1]=1
[SimType1]=NarcPC
[SimSendTimeout1]=2000
[SimRecvTimeout1]=4000
[SimRetry1]=2
[CONNECT2]=-1
[Comment2]=
[ComPort2]=1
[ComSpeed2]=9600
[ComSize2]=8
[ComParity2]=2
[ComStopPits2]=2
[ComSendTimeout2]=5000
[ComRecvTimeput2]=30000
[ComRetry2]=3
[ComProtcol2]=1
[LanAddress2]=
[LanPortNo2]=10001
[LanSendTimeout2]=5000
[LanRecvTimeout2]=30000
[LanRetry2]=0
[DeviceName2]=TOOLBOX
[Device#2]=1
[SimType2]=NarcPC
[SimSendTimeout2]=2000
[SimRecvTimeout2]=4000
[SimRetry2]=2
[CONNECT3]=-1
[Comment3]=
[ComPort3]=1
[ComSpeed3]=9600
[ComSize3]=8
[ComParity3]=2
[ComStopPits3]=2
[ComSendTimeout3]=5000
[ComRecvTimeput3]=30000
[ComRetry3]=3
[ComProtcol3]=1
[LanAddress3]=
[LanPortNo3]=10001
[LanSendTimeout3]=5000
[LanRecvTimeout3]=30000
[LanRetry3]=0
[DeviceName3]=TOOLBOX
[Device#3]=1
[SimType3]=NarcPC
[SimSendTimeout3]=2000
[SimRecvTimeout3]=4000
[SimRetry3]=2
[CONNECT4]=-1
[Comment4]=
[ComPort4]=1
[ComSpeed4]=9600
[ComSize4]=8
[ComParity4]=2
[ComStopPits4]=2
[ComSendTimeout4]=5000
[ComRecvTimeput4]=30000
[ComRetry4]=3
[ComProtcol4]=1
[LanAddress4]=
[LanPortNo4]=10001
[LanSendTimeout4]=5000
[LanRecvTimeout4]=30000
[LanRetry4]=0
[DeviceName4]=TOOLBOX
[Device#4]=1
[SimType4]=NarcPC
[SimSendTimeout4]=2000
[SimRecvTimeout4]=4000
[SimRetry4]=2
[CONNECT5]=-1
[Comment5]=
[ComPort5]=1
[ComSpeed5]=9600
[ComSize5]=8
[ComParity5]=2
[ComStopPits5]=2
[ComSendTimeout5]=5000
[ComRecvTimeput5]=30000
[ComRetry5]=3
[ComProtcol5]=1
[LanAddress5]=
[LanPortNo5]=10001
[LanSendTimeout5]=5000
[LanRecvTimeout5]=30000
[LanRetry5]=0
[DeviceName5]=TOOLBOX
[Device#5]=1
[SimType5]=NarcPC
[SimSendTimeout5]=2000
[SimRecvTimeout5]=4000
[SimRetry5]=2
[CONNECT6]=-1
[Comment6]=
[ComPort6]=1
[ComSpeed6]=9600
[ComSize6]=8
[ComParity6]=2
[ComStopPits6]=2
[ComSendTimeout6]=5000
[ComRecvTimeput6]=30000
[ComRetry6]=3
[ComProtcol6]=1
[LanAddress6]=
[LanPortNo6]=10001
[LanSendTimeout6]=5000
[LanRecvTimeout6]=30000
[LanRetry6]=0
[DeviceName6]=TOOLBOX
[Device#6]=1
[SimType6]=NarcPC
[SimSendTimeout6]=2000
[SimRecvTimeout6]=4000
[SimRetry6]=2
[CONNECT7]=-1
[Comment7]=
[ComPort7]=1
[ComSpeed7]=9600
[ComSize7]=8
[ComParity7]=2
[ComStopPits7]=2
[ComSendTimeout7]=5000
[ComRecvTimeput7]=30000
[ComRetry7]=3
[ComProtcol7]=1
[LanAddress7]=
[LanPortNo7]=10001
[LanSendTimeout7]=5000
[LanRecvTimeout7]=30000
[LanRetry7]=0
[DeviceName7]=TOOLBOX
[Device#7]=1
[SimType7]=NarcPC
[SimSendTimeout7]=2000
[SimRecvTimeout7]=4000
[SimRetry7]=2
[CONNECT8]=-1
[Comment8]=
[ComPort8]=1
[ComSpeed8]=9600
[ComSize8]=8
[ComParity8]=2
[ComStopPits8]=2
[ComSendTimeout8]=5000
[ComRecvTimeput8]=30000
[ComRetry8]=3
[ComProtcol8]=1
[LanAddress8]=
[LanPortNo8]=10001
[LanSendTimeout8]=5000
[LanRecvTimeout8]=30000
[LanRetry8]=0
[DeviceName8]=TOOLBOX
[Device#8]=1
[SimType8]=NarcPC
[SimSendTimeout8]=2000
[SimRecvTimeout8]=4000
[SimRetry8]=2
[CONNECT9]=-1
[Comment9]=
[ComPort9]=1
[ComSpeed9]=9600
[ComSize9]=8
[ComParity9]=2
[ComStopPits9]=2
[ComSendTimeout9]=5000
[ComRecvTimeput9]=30000
[ComRetry9]=3
[ComProtcol9]=1
[LanAddress9]=
[LanPortNo9]=10001
[LanSendTimeout9]=5000
[LanRecvTimeout9]=30000
[LanRetry9]=0
[DeviceName9]=TOOLBOX
[Device#9]=1
[SimType9]=NarcPC
[SimSendTimeout9]=2000
[SimRecvTimeout9]=4000
[SimRetry9]=2
[CONNECT10]=-1
[Comment10]=
[ComPort10]=1
[ComSpeed10]=9600
[ComSize10]=8
[ComParity10]=2
[ComStopPits10]=2
[ComSendTimeout10]=5000
[ComRecvTimeput10]=30000
[ComRetry10]=3
[ComProtcol10]=1
[LanAddress10]=
[LanPortNo10]=10001
[LanSendTimeout10]=5000
[LanRecvTimeout10]=30000
[LanRetry10]=0
[DeviceName10]=TOOLBOX
[Device#10]=1
[SimType10]=NarcPC
[SimSendTimeout10]=2000
[SimRecvTimeout10]=4000
[SimRetry10]=2
[CONNECT11]=-1
[Comment11]=
[ComPort11]=1
[ComSpeed11]=9600
[ComSize11]=8
[ComParity11]=2
[ComStopPits11]=2
[ComSendTimeout11]=5000
[ComRecvTimeput11]=30000
[ComRetry11]=3
[ComProtcol11]=1
[LanAddress11]=
[LanPortNo11]=10001
[LanSendTimeout11]=5000
[LanRecvTimeout11]=30000
[LanRetry11]=0
[DeviceName11]=TOOLBOX
[Device#11]=1
[SimType11]=NarcPC
[SimSendTimeout11]=2000
[SimRecvTimeout11]=4000
[SimRetry11]=2
[CONNECT12]=-1
[Comment12]=
[ComPort12]=1
[ComSpeed12]=9600
[ComSize12]=8
[ComParity12]=2
[ComStopPits12]=2
[ComSendTimeout12]=5000
[ComRecvTimeput12]=30000
[ComRetry12]=3
[ComProtcol12]=1
[LanAddress12]=
[LanPortNo12]=10001
[LanSendTimeout12]=5000
[LanRecvTimeout12]=30000
[LanRetry12]=0
[DeviceName12]=TOOLBOX
[Device#12]=1
[SimType12]=NarcPC
[SimSendTimeout12]=2000
[SimRecvTimeout12]=4000
[SimRetry12]=2
[CONNECT13]=-1
[Comment13]=
[ComPort13]=1
[ComSpeed13]=9600
[ComSize13]=8
[ComParity13]=2
[ComStopPits13]=2
[ComSendTimeout13]=5000
[ComRecvTimeput13]=30000
[ComRetry13]=3
[ComProtcol13]=1
[LanAddress13]=
[LanPortNo13]=10001
[LanSendTimeout13]=5000
[LanRecvTimeout13]=30000
[LanRetry13]=0
[DeviceName13]=TOOLBOX
[Device#13]=1
[SimType13]=NarcPC
[SimSendTimeout13]=2000
[SimRecvTimeout13]=4000
[SimRetry13]=2
[CONNECT14]=-1
[Comment14]=
[ComPort14]=1
[ComSpeed14]=9600
[ComSize14]=8
[ComParity14]=2
[ComStopPits14]=2
[ComSendTimeout14]=5000
[ComRecvTimeput14]=30000
[ComRetry14]=3
[ComProtcol14]=1
[LanAddress14]=
[LanPortNo14]=10001
[LanSendTimeout14]=5000
[LanRecvTimeout14]=30000
[LanRetry14]=0
[DeviceName14]=TOOLBOX
[Device#14]=1
[SimType14]=NarcPC
[SimSendTimeout14]=2000
[SimRecvTimeout14]=4000
[SimRetry14]=2
[CONNECT15]=-1
[Comment15]=
[ComPort15]=1
[ComSpeed15]=9600
[ComSize15]=8
[ComParity15]=2
[ComStopPits15]=2
[ComSendTimeout15]=5000
[ComRecvTimeput15]=30000
[ComRetry15]=3
[ComProtcol15]=1
[LanAddress15]=
[LanPortNo15]=10001
[LanSendTimeout15]=5000
[LanRecvTimeout15]=30000
[LanRetry15]=0
[DeviceName15]=TOOLBOX
[Device#15]=1
[SimType15]=NarcPC
[SimSendTimeout15]=2000
[SimRecvTimeout15]=4000
[SimRetry15]=2
[CONNECT16]=-1
[Comment16]=
[ComPort16]=1
[ComSpeed16]=9600
[ComSize16]=8
[ComParity16]=2
[ComStopPits16]=2
[ComSendTimeout16]=5000
[ComRecvTimeput16]=30000
[ComRetry16]=3
[ComProtcol16]=1
[LanAddress16]=
[LanPortNo16]=10001
[LanSendTimeout16]=5000
[LanRecvTimeout16]=30000
[LanRetry16]=0
[DeviceName16]=TOOLBOX
[Device#16]=1
[SimType16]=NarcPC
[SimSendTimeout16]=2000
[SimRecvTimeout16]=4000
[SimRetry16]=2
[CONNECT17]=-1
[Comment17]=
[ComPort17]=1
[ComSpeed17]=9600
[ComSize17]=8
[ComParity17]=2
[ComStopPits17]=2
[ComSendTimeout17]=5000
[ComRecvTimeput17]=30000
[ComRetry17]=3
[ComProtcol17]=1
[LanAddress17]=
[LanPortNo17]=10001
[LanSendTimeout17]=5000
[LanRecvTimeout17]=30000
[LanRetry17]=0
[DeviceName17]=TOOLBOX
[Device#17]=1
[SimType17]=NarcPC
[SimSendTimeout17]=2000
[SimRecvTimeout17]=4000
[SimRetry17]=2
[CONNECT18]=-1
[Comment18]=
[ComPort18]=1
[ComSpeed18]=9600
[ComSize18]=8
[ComParity18]=2
[ComStopPits18]=2
[ComSendTimeout18]=5000
[ComRecvTimeput18]=30000
[ComRetry18]=3
[ComProtcol18]=1
[LanAddress18]=
[LanPortNo18]=10001
[LanSendTimeout18]=5000
[LanRecvTimeout18]=30000
[LanRetry18]=0
[DeviceName18]=TOOLBOX
[Device#18]=1
[SimType18]=NarcPC
[SimSendTimeout18]=2000
[SimRecvTimeout18]=4000
[SimRetry18]=2
[CONNECT19]=-1
[Comment19]=
[ComPort19]=1
[ComSpeed19]=9600
[ComSize19]=8
[ComParity19]=2
[ComStopPits19]=2
[ComSendTimeout19]=5000
[ComRecvTimeput19]=30000
[ComRetry19]=3
[ComProtcol19]=1
[LanAddress19]=
[LanPortNo19]=10001
[LanSendTimeout19]=5000
[LanRecvTimeout19]=30000
[LanRetry19]=0
[DeviceName19]=TOOLBOX
[Device#19]=1
[SimType19]=NarcPC
[SimSendTimeout19]=2000
[SimRecvTimeout19]=4000
[SimRetry19]=2
[CONNECT20]=-1
[Comment20]=
[ComPort20]=1
[ComSpeed20]=9600
[ComSize20]=8
[ComParity20]=2
[ComStopPits20]=2
[ComSendTimeout20]=5000
[ComRecvTimeput20]=30000
[ComRetry20]=3
[ComProtcol20]=1
[LanAddress20]=
[LanPortNo20]=10001
[LanSendTimeout20]=5000
[LanRecvTimeout20]=30000
[LanRetry20]=0
[DeviceName20]=TOOLBOX
[Device#20]=1
[SimType20]=NarcPC
[SimSendTimeout20]=2000
[SimRecvTimeout20]=4000
[SimRetry20]=2
[CONNECT21]=-1
[Comment21]=
[ComPort21]=1
[ComSpeed21]=9600
[ComSize21]=8
[ComParity21]=2
[ComStopPits21]=2
[ComSendTimeout21]=5000
[ComRecvTimeput21]=30000
[ComRetry21]=3
[ComProtcol21]=1
[LanAddress21]=
[LanPortNo21]=10001
[LanSendTimeout21]=5000
[LanRecvTimeout21]=30000
[LanRetry21]=0
[DeviceName21]=TOOLBOX
[Device#21]=1
[SimType21]=NarcPC
[SimSendTimeout21]=2000
[SimRecvTimeout21]=4000
[SimRetry21]=2
[CONNECT22]=-1
[Comment22]=
[ComPort22]=1
[ComSpeed22]=9600
[ComSize22]=8
[ComParity22]=2
[ComStopPits22]=2
[ComSendTimeout22]=5000
[ComRecvTimeput22]=30000
[ComRetry22]=3
[ComProtcol22]=1
[LanAddress22]=
[LanPortNo22]=10001
[LanSendTimeout22]=5000
[LanRecvTimeout22]=30000
[LanRetry22]=0
[DeviceName22]=TOOLBOX
[Device#22]=1
[SimType22]=NarcPC
[SimSendTimeout22]=2000
[SimRecvTimeout22]=4000
[SimRetry22]=2
[CONNECT23]=-1
[Comment23]=
[ComPort23]=1
[ComSpeed23]=9600
[ComSize23]=8
[ComParity23]=2
[ComStopPits23]=2
[ComSendTimeout23]=5000
[ComRecvTimeput23]=30000
[ComRetry23]=3
[ComProtcol23]=1
[LanAddress23]=
[LanPortNo23]=10001
[LanSendTimeout23]=5000
[LanRecvTimeout23]=30000
[LanRetry23]=0
[DeviceName23]=TOOLBOX
[Device#23]=1
[SimType23]=NarcPC
[SimSendTimeout23]=2000
[SimRecvTimeout23]=4000
[SimRetry23]=2
[CONNECT24]=-1
[Comment24]=
[ComPort24]=1
[ComSpeed24]=9600
[ComSize24]=8
[ComParity24]=2
[ComStopPits24]=2
[ComSendTimeout24]=5000
[ComRecvTimeput24]=30000
[ComRetry24]=3
[ComProtcol24]=1
[LanAddress24]=
[LanPortNo24]=10001
[LanSendTimeout24]=5000
[LanRecvTimeout24]=30000
[LanRetry24]=0
[DeviceName24]=TOOLBOX
[Device#24]=1
[SimType24]=NarcPC
[SimSendTimeout24]=2000
[SimRecvTimeout24]=4000
[SimRetry24]=2
[CONNECT25]=-1
[Comment25]=
[ComPort25]=1
[ComSpeed25]=9600
[ComSize25]=8
[ComParity25]=2
[ComStopPits25]=2
[ComSendTimeout25]=5000
[ComRecvTimeput25]=30000
[ComRetry25]=3
[ComProtcol25]=1
[LanAddress25]=
[LanPortNo25]=10001
[LanSendTimeout25]=5000
[LanRecvTimeout25]=30000
[LanRetry25]=0
[DeviceName25]=TOOLBOX
[Device#25]=1
[SimType25]=NarcPC
[SimSendTimeout25]=2000
[SimRecvTimeout25]=4000
[SimRetry25]=2
[CONNECT26]=-1
[Comment26]=
[ComPort26]=1
[ComSpeed26]=9600
[ComSize26]=8
[ComParity26]=2
[ComStopPits26]=2
[ComSendTimeout26]=5000
[ComRecvTimeput26]=30000
[ComRetry26]=3
[ComProtcol26]=1
[LanAddress26]=
[LanPortNo26]=10001
[LanSendTimeout26]=5000
[LanRecvTimeout26]=30000
[LanRetry26]=0
[DeviceName26]=TOOLBOX
[Device#26]=1
[SimType26]=NarcPC
[SimSendTimeout26]=2000
[SimRecvTimeout26]=4000
[SimRetry26]=2
[CONNECT27]=-1
[Comment27]=
[ComPort27]=1
[ComSpeed27]=9600
[ComSize27]=8
[ComParity27]=2
[ComStopPits27]=2
[ComSendTimeout27]=5000
[ComRecvTimeput27]=30000
[ComRetry27]=3
[ComProtcol27]=1
[LanAddress27]=
[LanPortNo27]=10001
[LanSendTimeout27]=5000
[LanRecvTimeout27]=30000
[LanRetry27]=0
[DeviceName27]=TOOLBOX
[Device#27]=1
[SimType27]=NarcPC
[SimSendTimeout27]=2000
[SimRecvTimeout27]=4000
[SimRetry27]=2
[CONNECT28]=-1
[Comment28]=
[ComPort28]=1
[ComSpeed28]=9600
[ComSize28]=8
[ComParity28]=2
[ComStopPits28]=2
[ComSendTimeout28]=5000
[ComRecvTimeput28]=30000
[ComRetry28]=3
[ComProtcol28]=1
[LanAddress28]=
[LanPortNo28]=10001
[LanSendTimeout28]=5000
[LanRecvTimeout28]=30000
[LanRetry28]=0
[DeviceName28]=TOOLBOX
[Device#28]=1
[SimType28]=NarcPC
[SimSendTimeout28]=2000
[SimRecvTimeout28]=4000
[SimRetry28]=2
[CONNECT29]=-1
[Comment29]=
[ComPort29]=1
[ComSpeed29]=9600
[ComSize29]=8
[ComParity29]=2
[ComStopPits29]=2
[ComSendTimeout29]=5000
[ComRecvTimeput29]=30000
[ComRetry29]=3
[ComProtcol29]=1
[LanAddress29]=
[LanPortNo29]=10001
[LanSendTimeout29]=5000
[LanRecvTimeout29]=30000
[LanRetry29]=0
[DeviceName29]=TOOLBOX
[Device#29]=1
[SimType29]=NarcPC
[SimSendTimeout29]=2000
[SimRecvTimeout29]=4000
[SimRetry29]=2
[CONNECT30]=-1
[Comment30]=
[ComPort30]=1
[ComSpeed30]=9600
[ComSize30]=8
[ComParity30]=2
[ComStopPits30]=2
[ComSendTimeout30]=5000
[ComRecvTimeput30]=30000
[ComRetry30]=3
[ComProtcol30]=1
[LanAddress30]=
[LanPortNo30]=10001
[LanSendTimeout30]=5000
[LanRecvTimeout30]=30000
[LanRetry30]=0
[DeviceName30]=TOOLBOX
[Device#30]=1
[SimType30]=NarcPC
[SimSendTimeout30]=2000
[SimRecvTimeout30]=4000
[SimRetry30]=2
[CONNECT31]=-1
[Comment31]=
[ComPort31]=1
[ComSpeed31]=9600
[ComSize31]=8
[ComParity31]=2
[ComStopPits31]=2
[ComSendTimeout31]=5000
[ComRecvTimeput31]=30000
[ComRetry31]=3
[ComProtcol31]=1
[LanAddress31]=
[LanPortNo31]=10001
[LanSendTimeout31]=5000
[LanRecvTimeout31]=30000
[LanRetry31]=0
[DeviceName31]=TOOLBOX
[Device#31]=1
[SimType31]=NarcPC
[SimSendTimeout31]=2000
[SimRecvTimeout31]=4000
[SimRetry31]=2
[CONNECT32]=-1
[Comment32]=
[ComPort32]=1
[ComSpeed32]=9600
[ComSize32]=8
[ComParity32]=2
[ComStopPits32]=2
[ComSendTimeout32]=5000
[ComRecvTimeput32]=30000
[ComRetry32]=3
[ComProtcol32]=1
[LanAddress32]=
[LanPortNo32]=10001
[LanSendTimeout32]=5000
[LanRecvTimeout32]=30000
[LanRetry32]=0
[DeviceName32]=TOOLBOX
[Device#32]=1
[SimType32]=NarcPC
[SimSendTimeout32]=2000
[SimRecvTimeout32]=4000
[SimRetry32]=2
@@ -0,0 +1,101 @@
// SO7OperateIODlg.cpp : implementation file
//
#include "stdafx.h"
#include "SO7OperateIODlg.h"
#include "afxdialogex.h"
#include "..\..\..\SevenOcean\DLL.h"
#include "..\..\..\SevenOcean\EF8000_Interface.h"
#include "..\..\..\SevenOcean\SO7_Proto.h"
#include "SO7_UtilDlg.h"
extern CSO7_Proto* m_pSO7_Proto;
// CSO7OperateIODlg dialog
IMPLEMENT_DYNAMIC(CSO7OperateIODlg, CDialogEx)
CSO7OperateIODlg::CSO7OperateIODlg(CWnd* pParent /*=NULL*/)
: CDialogEx(CSO7OperateIODlg::IDD, pParent)
{
}
CSO7OperateIODlg::~CSO7OperateIODlg()
{
}
void CSO7OperateIODlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CSO7OperateIODlg, CDialogEx)
ON_BN_CLICKED(IDC_BUTTON_SET_IO_0, &CSO7OperateIODlg::OnBnClickedButtonSetIo0)
ON_BN_CLICKED(IDC_BUTTON_SET_IO_1, &CSO7OperateIODlg::OnBnClickedButtonSetIo1)
ON_BN_CLICKED(IDC_BUTTON_READ_IO, &CSO7OperateIODlg::OnBnClickedButtonReadIo)
END_MESSAGE_MAP()
// CSO7OperateIODlg message handlers
void CSO7OperateIODlg::OnBnClickedButtonSetIo0()
{
int n;
CString str;
GetDlgItem(IDC_EDIT_IO_NUMBER)->GetWindowText(str);
n = _ttoi(str);
if(n > 15 || n < 0)
{
AfxMessageBox(_T("超出范围,不可测试!"));
return ;
}
m_pSO7_Proto->_send_cmd_SO7_CMD_SET_EXTRA_IO(n,0);
}
void CSO7OperateIODlg::OnBnClickedButtonSetIo1()
{
int n;
CString str;
GetDlgItem(IDC_EDIT_IO_NUMBER)->GetWindowText(str);
n = _ttoi(str);
if(n > 15 || n < 0)
{
AfxMessageBox(_T("超出范围,不可测试!"));
return ;
}
m_pSO7_Proto->_send_cmd_SO7_CMD_SET_EXTRA_IO(n,1);
}
void CSO7OperateIODlg::OnBnClickedButtonReadIo()
{
int n;
CString str;
GetDlgItem(IDC_EDIT_IO_NUMBER)->GetWindowText(str);
n = _ttoi(str);
if(n > 15 || n < 0)
{
AfxMessageBox(_T("超出范围,不可测试!"));
return ;
}
m_pSO7_Proto->_send_cmd_SO7_CMD_GET_EXTRA_IO(n);
Sleep(10);
CString Str1(_T("1"));
CString Str0(_T("0"));
COLORREF ColorON=RGB(0,255,0);
COLORREF ColorOFF=RGB(240,240,240);
if(m_pSO7_Proto->g_machine.cIOStatus)
{
((CMFCButton*)GetDlgItem(IDC_MFCBUTTON_IO_STAURT))->SetWindowTextW(Str1);
((CMFCButton*)GetDlgItem(IDC_MFCBUTTON_IO_STAURT))->SetFaceColor(ColorON);
}
else
{
((CMFCButton*)GetDlgItem(IDC_MFCBUTTON_IO_STAURT))->SetWindowTextW(Str0);
((CMFCButton*)GetDlgItem(IDC_MFCBUTTON_IO_STAURT))->SetFaceColor(ColorOFF);
}
}
@@ -0,0 +1,25 @@
#pragma once
#include "resource.h"
// CSO7OperateIODlg dialog
class CSO7OperateIODlg : public CDialogEx
{
DECLARE_DYNAMIC(CSO7OperateIODlg)
public:
CSO7OperateIODlg(CWnd* pParent = NULL); // standard constructor
virtual ~CSO7OperateIODlg();
// Dialog Data
enum { IDD = IDD_DIALOG_OPERATE_EXTRA_IO };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnBnClickedButtonSetIo0();
afx_msg void OnBnClickedButtonSetIo1();
afx_msg void OnBnClickedButtonReadIo();
};
@@ -98,6 +98,8 @@ BEGIN_MESSAGE_MAP(CSO7_Move_Location, CMFCPropertyPage)
ON_BN_CLICKED(IDC_BUTTON_SO7_MOTION_GET_CNTS, &CSO7_Move_Location::OnBnClickedButtonSo7MotionGetCnts)
ON_BN_CLICKED(IDC_BUTTON_SO7_MOTION_SET_SEGMENT_DIS, &CSO7_Move_Location::OnBnClickedButtonSo7MotionSetSegmentDis)
ON_BN_CLICKED(IDC_BUTTON_SO7_MOTION_GET_SEGMENT_DIS, &CSO7_Move_Location::OnBnClickedButtonSo7MotionGetSegmentDis)
ON_WM_HSCROLL()
ON_WM_VSCROLL()
END_MESSAGE_MAP()
// CSO7_Move_Location 消息处理程序
@@ -183,6 +185,21 @@ BOOL CSO7_Move_Location::OnInitDialog()
}
UpdateData(FALSE);
CRect rc;
GetClientRect(rc);
SCROLLINFO si;
si.cbSize = sizeof(SCROLLINFO);
si.fMask = SIF_PAGE | SIF_POS | SIF_RANGE;
si.nPos = 0;
si.nMin = 0;
si.nMax = rc.Height();
si.nPage = rc.Height()/2;
SetScrollInfo(SB_VERT, &si, FALSE);
si.nMax = rc.Width();
si.nPage = rc.Width()/2;
SetScrollInfo(SB_HORZ, &si, FALSE);
return TRUE;
}
//=========================================================================================
@@ -2901,3 +2918,97 @@ void CSO7_Move_Location::OnBnClickedButtonSo7MotionGetSegmentDis()
}
m_UpdateListControl(E_LISTCTRL_UPDATEDATA);
}
void CSO7_Move_Location::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
SCROLLINFO si = {sizeof(si)};
si.fMask = SIF_ALL;
GetScrollInfo(SB_HORZ, &si);
int nPrevPos = si.nPos;
switch(nSBCode)
{
case SB_LEFT:
si.nPos = si.nMin;
break;
case SB_RIGHT:
si.nPos = si.nMax;
break;
case SB_LINELEFT:
si.nPos -= 100;
break;
case SB_LINERIGHT:
si.nPos += 100;
break;
case SB_PAGELEFT:
si.nPos -= si.nPage;
break;
case SB_PAGERIGHT:
si.nPos += si.nPage;
break;
case SB_THUMBTRACK:
si.nPos = si.nTrackPos;
break;
default:
break;
}
si.fMask = SIF_POS;
SetScrollInfo(SB_HORZ, &si, TRUE);
if (si.nPos != nPrevPos)
{
m_nScrollXPos += si.nPos - nPrevPos;
ScrollWindow(nPrevPos - si.nPos, 0, NULL, NULL);
Invalidate(FALSE);
UpdateWindow();
}
CMFCPropertyPage::OnHScroll(nSBCode, nPos, pScrollBar);
}
void CSO7_Move_Location::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
SCROLLINFO si = {sizeof(si)};
si.fMask = SIF_ALL;
GetScrollInfo(SB_VERT, &si);
int nPrevPos = si.nPos;
switch(nSBCode)
{
case SB_TOP:
si.nPos = si.nMin;
break;
case SB_BOTTOM:
si.nPos = si.nMax;
break;
case SB_LINEUP:
si.nPos -= 15;
break;
case SB_LINEDOWN:
si.nPos += 15;
break;
case SB_PAGEUP:
si.nPos -= si.nPage;
break;
case SB_PAGEDOWN:
si.nPos += si.nPage;
break;
case SB_THUMBTRACK:
si.nPos = si.nTrackPos;
break;
default:
break;
}
si.fMask = SIF_POS;
SetScrollInfo(SB_VERT, &si, TRUE);
if (si.nPos != nPrevPos)
{
m_nScrollYPos += si.nPos - nPrevPos;
ScrollWindow(0, nPrevPos - si.nPos, NULL, NULL);
Invalidate(FALSE);
UpdateWindow();
}
CMFCPropertyPage::OnVScroll(nSBCode, nPos, pScrollBar);
}
@@ -57,6 +57,8 @@ public:
int m_iRepeTest_Interval;
double m_dRepeTest_ErrRange;
long m_lRepeTest_ErrRange;
int m_nScrollXPos;
int m_nScrollYPos;
bool bRepeTestDone;
BOOL m_bRepeTestAxisX;
@@ -118,4 +120,6 @@ public:
afx_msg void OnBnClickedButtonSo7MotionGetCnts();
afx_msg void OnBnClickedButtonSo7MotionSetSegmentDis();
afx_msg void OnBnClickedButtonSo7MotionGetSegmentDis();
afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
};
@@ -171,6 +171,8 @@ BEGIN_MESSAGE_MAP(CSO7_Send_Parameter, CMFCPropertyPage)
ON_BN_CLICKED(IDC_BUTTON_STOP_SAMPLE_SCURVE, &CSO7_Send_Parameter::OnBnClickedButtonStopSampleScurve)
ON_BN_CLICKED(IDCANCEL, &CSO7_Send_Parameter::OnBnClickedCancel)
ON_BN_CLICKED(IDC_CHECK_SO7_MOTION_PARA_MOVETO_REVERSE, &CSO7_Send_Parameter::OnBnClickedCheckSo7MotionParaMovetoReverse)
ON_WM_HSCROLL()
ON_WM_VSCROLL()
END_MESSAGE_MAP()
@@ -242,6 +244,21 @@ BOOL CSO7_Send_Parameter::OnInitDialog()
{
UpdateControlMode(0);
}
CRect rc;
GetClientRect(rc);
SCROLLINFO si;
si.cbSize = sizeof(SCROLLINFO);
si.fMask = SIF_PAGE | SIF_POS | SIF_RANGE;
si.nPos = 0;
si.nMin = 0;
si.nMax = rc.Height();
si.nPage = rc.Height()/2;
SetScrollInfo(SB_VERT, &si, FALSE);
si.nMax = rc.Width();
si.nPage = rc.Width()/2;
SetScrollInfo(SB_HORZ, &si, FALSE);
return TRUE; // return TRUE unless you set the focus to a control
}
//=========================================================================================
@@ -271,7 +288,7 @@ void CSO7_Send_Parameter::OnDraw(CDC* pDC)
//CWnd* m_p=(CWnd*)GetDlgItem(IDC_STATIC_CANVAS);
//m_p->GetWindowRect(&CanvasRect);
//CanvasRect.SetRect(550,50,1100,600);//L T R B
CPaintDC dc(this); // device context for painting
};
//================================================================================================
BOOL CSO7_Send_Parameter::OnEraseBkgnd(CDC* pDC)
@@ -293,10 +310,10 @@ void CSO7_Send_Parameter::OnBnClickedOk()
void CSO7_Send_Parameter::OnBnClickedButtonBrowse()
{
// TODO: Add your control notification handler code here
m_csIniFile = "motor";
CString szFilter=_T("EF8000 DAT Files(*.dat)|*.dat|INI Files(*.ini)|*.ini|ALL Files(*.*)|*.*||");
m_csIniFile=_T("so7_motion");
CString szFilter=_T("EF1 INI Files(*.ini)|*.ini|DAT Files(*.dat)|*.dat|ALL Files(*.*)|*.*||");
CFileDialog fileDialog(TRUE, _T("*.dat"),(LPCTSTR) m_csIniFile, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter, this);
CFileDialog fileDialog(TRUE, _T("*.ini"),(LPCTSTR) m_csIniFile, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter, this);
if ( fileDialog.DoModal ()==IDOK )
{
@@ -307,13 +324,13 @@ void CSO7_Send_Parameter::OnBnClickedButtonBrowse()
{
case 1:
{
m_pEF8000_Interface->OpenSpeedParameter(m_csIniFile);
ParameterFormatEF8000ToSo7();
m_pSO7_Proto->Load_So7_Motion_Inifile(m_csIniFile);
break;
}
case 2:
{
m_pSO7_Proto->Load_SevenOcean_Inifile(m_csIniFile);
m_pEF8000_Interface->OpenSpeedParameter(m_csIniFile);
ParameterFormatEF8000ToSo7();
break;
}
}
@@ -379,26 +396,26 @@ void CSO7_Send_Parameter::OnBnClickedButtonSave()
CString PathName;
CString path_and_fileName;
PathName=_T("motor");
CString szFilter=_T("EF8000 DAT Files(*.dat)|*.dat|INI Files(*.ini)|*.ini|ALL Files(*.*)|*.*||");
CFileDialog fdlg(FALSE,_T("DAT"),PathName,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilter);
PathName=_T("so7_motion");
CString szFilter=_T("EF1 INI Files(*.ini)|*.ini|DAT Files(*.dat)|*.dat|ALL Files(*.*)|*.*||");
CFileDialog fdlg(FALSE,_T("INI"),PathName,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilter);
if( fdlg.DoModal()==IDOK)
{
m_pSO7_Proto->Save_So7_Config();
m_pSO7_Proto->Save_So7_Config_Inifile();
path_and_fileName=fdlg.GetPathName();
ChangeParameterOnEdit();
switch(fdlg.m_ofn.nFilterIndex)
{
case 1:
{
ParameterFormatSo7ToEF8000();
m_pEF8000_Interface->SaveSpeedParameter(path_and_fileName);
m_pSO7_Proto->Save_So7_Motion_Inifile(path_and_fileName);
break;
}
case 2:
{
m_pSO7_Proto->Save_SevenOcean_Inifile(path_and_fileName);
ParameterFormatSo7ToEF8000();
m_pEF8000_Interface->SaveSpeedParameter(path_and_fileName);
break;
}
}
@@ -1041,9 +1058,7 @@ void CSO7_Send_Parameter::OutputWithScroll(const CString &strNewText,CEdit &edtO
//=====================================================================================
void CSO7_Send_Parameter::OnBnClickedCancel()
{
CString csPath;
m_pSO7_Proto->GetAppPath(csPath);
m_pSO7_Proto->Save_SevenOcean_Inifile(csPath+_T("\\Utility_Config.ini"));
m_pSO7_Proto->Save_So7_Motion_Config();
CMFCPropertyPage::OnCancel();
}
//=====================================================================================
@@ -1113,3 +1128,98 @@ void CSO7_Send_Parameter::UpdateControlMode(int _Type)
}
}
}
void CSO7_Send_Parameter::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
SCROLLINFO si = {sizeof(si)};
si.fMask = SIF_ALL;
GetScrollInfo(SB_HORZ, &si);
int nPrevPos = si.nPos;
switch(nSBCode)
{
case SB_LEFT:
si.nPos = si.nMin;
break;
case SB_RIGHT:
si.nPos = si.nMax;
break;
case SB_LINELEFT:
si.nPos -= 15;
break;
case SB_LINERIGHT:
si.nPos += 15;
break;
case SB_PAGELEFT:
si.nPos -= si.nPage;
break;
case SB_PAGERIGHT:
si.nPos += si.nPage;
break;
case SB_THUMBTRACK:
si.nPos = si.nTrackPos;
break;
default:
break;
}
si.fMask = SIF_POS;
SetScrollInfo(SB_HORZ, &si, TRUE);
if (si.nPos != nPrevPos)
{
m_nScrollXPos += si.nPos - nPrevPos;
ScrollWindow(nPrevPos - si.nPos, 0, NULL, NULL);
Invalidate(FALSE);
UpdateWindow();
}
CMFCPropertyPage::OnHScroll(nSBCode, nPos, pScrollBar);
}
void CSO7_Send_Parameter::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
SCROLLINFO si = {sizeof(si)};
si.fMask = SIF_ALL;
GetScrollInfo(SB_VERT, &si);
int nPrevPos = si.nPos;
switch(nSBCode)
{
case SB_TOP:
si.nPos = si.nMin;
break;
case SB_BOTTOM:
si.nPos = si.nMax;
break;
case SB_LINEUP:
si.nPos -= 15;
break;
case SB_LINEDOWN:
si.nPos += 15;
break;
case SB_PAGEUP:
si.nPos -= si.nPage;
break;
case SB_PAGEDOWN:
si.nPos += si.nPage;
break;
case SB_THUMBTRACK:
si.nPos = si.nTrackPos;
break;
default:
break;
}
si.fMask = SIF_POS;
SetScrollInfo(SB_VERT, &si, TRUE);
if (si.nPos != nPrevPos)
{
m_nScrollYPos += si.nPos - nPrevPos;
ScrollWindow(0, nPrevPos - si.nPos, NULL, NULL);
Invalidate(FALSE);
UpdateWindow();
}
CMFCPropertyPage::OnVScroll(nSBCode, nPos, pScrollBar);
}
@@ -85,6 +85,9 @@ public:
CStatusBarCtrl m_StatusBar;
int m_nScrollXPos;
int m_nScrollYPos;
void ShowParameterOnEdit();
void ChangeParameterOnEdit();
void UpdateControlMode(int _Type);
@@ -111,4 +114,6 @@ public:
void OutputWithScroll(const CString &strNewText,CEdit &edtOutput);
afx_msg void OnBnClickedCancel();
afx_msg void OnBnClickedCheckSo7MotionParaMovetoReverse();
afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
};
@@ -9,7 +9,7 @@
extern CPSerial* m_pSO7_TemperatureDisplay;
UINT_PTR nIDTimer1 = 1;
static BYTE bSendData[8]= {0x01,0x04,0x00,0x00,0x00,0x0C,0xF0,0x0F};
static CString csFileTitle("Eigenvalue.txt");
static CString csFileTitle("SO7_TempEigenvalue.ini");
static double dbK = 273.15;
static double dbTemperature[256];
@@ -277,6 +277,7 @@ BOOL CSO7_Temperature_Display::ReadDataFromFile()
}
else
{
file.Open(csFileTitle,CFile::modeCreate | CFile::modeWrite);
e.ReportError();
return false;
}
@@ -6,6 +6,7 @@
#include "..\..\..\SevenOcean\CMMIO_SERIAL.H"
#include "..\..\..\SevenOcean\SO7_Proto.h"
#include "..\..\..\SevenOcean\CAutoZoom.h"
#include "..\..\..\SevenOcean\Program\CPOINT3.H"
#include "ProcessButton.h"
#include "EditableListCtrl.h"
#include "DrawGraph.h"
@@ -24,6 +25,7 @@
#include "So7_XBoxController.h"
#include "So7_Util_External_Trig.h"
#include "SO7_UtilDlg.h"
#include "SO7OperateIODlg.h"
// CSO7_UtilDlg 对话框
extern CPSerial* m_pSO7_PCDSerial;
@@ -47,6 +49,7 @@ IMPLEMENT_DYNAMIC(CSO7_UtilDlg, CDialog)
m_bETrigIO=FALSE;
m_ReadAxisIntervalTime=150;
m_IOAddr=0;
m_bMotionType = 0;
}
CSO7_UtilDlg::~CSO7_UtilDlg()
@@ -144,6 +147,9 @@ BEGIN_MESSAGE_MAP(CSO7_UtilDlg, CDialog)
ON_BN_CLICKED(IDC_RADIO_SELECT_Y, &CSO7_UtilDlg::OnBnClickedRadioSelectY)
ON_BN_CLICKED(IDC_RADIO_SELECT_Z, &CSO7_UtilDlg::OnBnClickedRadioSelectZ)
ON_CBN_SELCHANGE(IDC_COMBO_RWDATA_ADDR, &CSO7_UtilDlg::OnCbnSelchangeComboRwdataAddr)
//ON_BN_CLICKED(IDC_BUTTON3, &CSO7_UtilDlg::OnBnClickedButton3)
ON_BN_CLICKED(IDC_BUTTON_IO_TEST, &CSO7_UtilDlg::OnBnClickedButtonIoTest)
ON_BN_CLICKED(IDC_BUTTON_SET_MOTION_TYPE, &CSO7_UtilDlg::OnBnClickedButtonSetMotionType)
END_MESSAGE_MAP()
@@ -273,9 +279,7 @@ BOOL CSO7_UtilDlg::OnInitDialog()
((CComboBox *)GetDlgItem(IDC_COMBO_SO7_HOMEMODE))->InsertString(ComboIndex,csTmp);
((CComboBox *)GetDlgItem(IDC_COMBO_SO7_HOMEMODE))->SetCurSel(0);
CString csPath;
m_pSO7_Proto->GetAppPath(csPath);
m_pSO7_Proto->Load_SevenOcean_Inifile(csPath+_T("\\Utility_Config.ini"));
m_pSO7_Proto->Load_So7_Motion_Config();
m_csTop_Light_Value.Format(_T("%d"),(m_pSO7_Proto->g_machine.s_lights_value._top_light));
m_csBom_Light_Value.Format(_T("%d"),(m_pSO7_Proto->g_machine.s_lights_value._bottom_light));
@@ -300,6 +304,7 @@ BOOL CSO7_UtilDlg::OnInitDialog()
g_pLoggerDebug = new CLogger(_T("\\UtilityDebug.Log"));
}
UpdateData(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
@@ -371,7 +376,8 @@ void CSO7_UtilDlg::UpdateCtrlsStatus(bool _bEnable)
GetDlgItem(IDC_BUTTON_SO7_SET_SEQ_NUMBER)->EnableWindow(_bEnable);
GetDlgItem(IDC_BUTTON_SO7_SET_VER_NUMBER)->EnableWindow(_bEnable);
GetDlgItem(IDC_BUTTON_SET_SCALE_COEFFICIENT)->EnableWindow(_bEnable);
GetDlgItem(IDC_BUTTON_IO_TEST)->EnableWindow(_bEnable);
GetDlgItem(IDC_BUTTON_SET_MOTION_TYPE)->EnableWindow(_bEnable);
}
//=====================================================================
@@ -398,6 +404,7 @@ void CSO7_UtilDlg::OnBnClickedButtonInitSo7usb()
SetWindowText(_T("SevenOcean Utility(Offline)"));
m_OutMessage = _T("Usb Port Error!\r\nMachine Started with offline mode.");
OutputWithScroll(m_OutMessage,m_edMSG);
}
else
{
@@ -406,6 +413,8 @@ void CSO7_UtilDlg::OnBnClickedButtonInitSo7usb()
m_OutMessage = _T("Usb Port Initialized.\r\nMachine Started.");
OutputWithScroll(m_OutMessage,m_edMSG);
}
GetMotionTypeAndShow();
};
GetDlgItem(IDCANCEL)->EnableWindow(false);
}
@@ -434,7 +443,7 @@ void CSO7_UtilDlg::OnBnClickedButtonStartSo7machine()
m_OutMessage=_T("XBoxController connection fails.");
OutputWithScroll(m_OutMessage,m_edMSG);
}
m_pSO7_Proto->Load_So7_Config();
m_pSO7_Proto->Load_So7_Config_Inifile();
//m_pSO7_Proto->so7_motion_startup(0.5, 0.5, 0.5);
m_pSO7_Proto->_start_machine();
m_pSO7_Proto->_send_cmd_SO7_CMD_GET_RESET_FLAG();
@@ -451,13 +460,14 @@ void CSO7_UtilDlg::OnBnClickedButtonStartSo7machine()
m_pSO7_Proto->g_machine.FirmwareInfo,cData[0],cData[1]);
m_OutMessage=csTmp;
OutputWithScroll(m_OutMessage,m_edMSG);
m_pSO7_Proto->_send_cmd_SO7_CMD_SET_GET_INTERRUPT_MSG_METHOD(m_pSO7_Proto->g_machine.s_machine_config.motion.GetInterruptMsgMethod);
m_pSO7_Proto->_send_cmd_SO7_CMD_SET_GET_INTERRUPT_MSG_METHOD(m_pSO7_Proto->g_so7_config.GetInterruptMsgMethod);
}
else
{
m_OutMessage=_T("Firmware Version:[UNKNOWN]");
OutputWithScroll(m_OutMessage,m_edMSG);
}
m_pSO7_Proto->so7_motion_init_firmware_para();
UpdateCtrlsStatus(true);
SetTimer(1, m_ReadAxisIntervalTime, 0);
m_OutMessage.Format(_T("%d"),m_ReadAxisIntervalTime);
@@ -474,9 +484,7 @@ void CSO7_UtilDlg::OnBnClickedButtonStartSo7machine()
void CSO7_UtilDlg::OnBnClickedButtonStopSo7machine()
{
XBoxPlayer->XBoxControllerExit();
CString csPath;
m_pSO7_Proto->GetAppPath(csPath);
m_pSO7_Proto->Save_SevenOcean_Inifile(csPath+_T("\\Utility_Config.ini"));
m_pSO7_Proto->Save_So7_Motion_Config();
m_OutMessage = _T("Machine Stoped.");
OutputWithScroll(m_OutMessage,m_edMSG);
@@ -1116,17 +1124,20 @@ void CSO7_UtilDlg::TestZSignal()
dTmp2=m_pSO7_Proto->ScaleToMM(m_pSO7_Proto->g_machine.x._ZSignal_pos._long_,m_pSO7_Proto->g_machine.s_machine_config.x_axis._scale_resolution);
dScaleResult=(dTmp2-dTmp1);
while ((fabs(dScaleResult)-fabs(m_pSO7_Proto->g_machine.dRotaryCirclDis))>1.0)
if (m_pSO7_Proto->g_machine.s_machine_config.r_axis.m_RotaryAxisNO==MACHINE_AXIS_X)
{
if (dScaleResult<-0.00001)
while ((fabs(dScaleResult)-fabs(m_pSO7_Proto->g_machine.dRotaryCirDisTestZSig))>1.0)
{
dScaleResult+=(m_pSO7_Proto->ScaleToMM(8388608,m_pSO7_Proto->g_machine.s_machine_config.x_axis._scale_resolution));
}
else
{
dScaleResult-=(m_pSO7_Proto->ScaleToMM(8388608,m_pSO7_Proto->g_machine.s_machine_config.x_axis._scale_resolution));
}
}
if (dScaleResult<-0.00001)
{
dScaleResult+=(m_pSO7_Proto->ScaleToMM(8388608,m_pSO7_Proto->g_machine.s_machine_config.x_axis._scale_resolution));
}
else
{
dScaleResult-=(m_pSO7_Proto->ScaleToMM(8388608,m_pSO7_Proto->g_machine.s_machine_config.x_axis._scale_resolution));
}
}
}
m_OutMessage.Format(_T("[RefMark-X] From: %-3.4f To: %-3.4f Dis: %-3.4f"),dTmp1,dTmp2,dScaleResult);
OutputWithScroll(m_OutMessage,m_edMSG);
}
@@ -1135,17 +1146,20 @@ void CSO7_UtilDlg::TestZSignal()
dTmp1=m_pSO7_Proto->ScaleToMM(m_ZsignalPosY,m_pSO7_Proto->g_machine.s_machine_config.y_axis._scale_resolution);
dTmp2=m_pSO7_Proto->ScaleToMM(m_pSO7_Proto->g_machine.y._ZSignal_pos._long_,m_pSO7_Proto->g_machine.s_machine_config.y_axis._scale_resolution);
dScaleResult=(dTmp2-dTmp1);
while ((fabs(dScaleResult)-fabs(m_pSO7_Proto->g_machine.dRotaryCirclDis))>1.0)
if (m_pSO7_Proto->g_machine.s_machine_config.r_axis.m_RotaryAxisNO==MACHINE_AXIS_Y)
{
if (dScaleResult<-0.00001)
while ((fabs(dScaleResult)-fabs(m_pSO7_Proto->g_machine.dRotaryCirDisTestZSig))>1.0)
{
dScaleResult+=(m_pSO7_Proto->ScaleToMM(8388608,m_pSO7_Proto->g_machine.s_machine_config.x_axis._scale_resolution));
if (dScaleResult<-0.00001)
{
dScaleResult+=(m_pSO7_Proto->ScaleToMM(8388608,m_pSO7_Proto->g_machine.s_machine_config.x_axis._scale_resolution));
}
else
{
dScaleResult-=(m_pSO7_Proto->ScaleToMM(8388608,m_pSO7_Proto->g_machine.s_machine_config.x_axis._scale_resolution));
}
}
else
{
dScaleResult-=(m_pSO7_Proto->ScaleToMM(8388608,m_pSO7_Proto->g_machine.s_machine_config.x_axis._scale_resolution));
}
}
}
m_OutMessage.Format(_T("[RefMark-Y] From: %-3.4f To: %-3.4f Dis: %-3.4f"),dTmp1,dTmp2,dScaleResult);
OutputWithScroll(m_OutMessage,m_edMSG);
}
@@ -1154,17 +1168,21 @@ void CSO7_UtilDlg::TestZSignal()
dTmp1=m_pSO7_Proto->ScaleToMM(m_ZsignalPosZ,m_pSO7_Proto->g_machine.s_machine_config.z_axis._scale_resolution);
dTmp2=m_pSO7_Proto->ScaleToMM(m_pSO7_Proto->g_machine.z._ZSignal_pos._long_,m_pSO7_Proto->g_machine.s_machine_config.z_axis._scale_resolution);
dScaleResult=(dTmp2-dTmp1);
while ((fabs(dScaleResult)-fabs(m_pSO7_Proto->g_machine.dRotaryCirclDis))>1.0)
if (m_pSO7_Proto->g_machine.s_machine_config.r_axis.m_RotaryAxisNO==MACHINE_AXIS_Z)
{
if (dScaleResult<-0.00001)
while ((fabs(dScaleResult)-fabs(m_pSO7_Proto->g_machine.dRotaryCirDisTestZSig))>1.0)
{
dScaleResult+=(m_pSO7_Proto->ScaleToMM(8388608,m_pSO7_Proto->g_machine.s_machine_config.x_axis._scale_resolution));
if (dScaleResult<-0.00001)
{
dScaleResult+=(m_pSO7_Proto->ScaleToMM(8388608,m_pSO7_Proto->g_machine.s_machine_config.x_axis._scale_resolution));
}
else
{
dScaleResult-=(m_pSO7_Proto->ScaleToMM(8388608,m_pSO7_Proto->g_machine.s_machine_config.x_axis._scale_resolution));
}
}
else
{
dScaleResult-=(m_pSO7_Proto->ScaleToMM(8388608,m_pSO7_Proto->g_machine.s_machine_config.x_axis._scale_resolution));
}
}
}
m_OutMessage.Format(_T("[RefMark-Z] From: %-3.4f To: %-3.4f Dis: %-3.4f"),dTmp1,dTmp2,dScaleResult);
OutputWithScroll(m_OutMessage,m_edMSG);
}
@@ -1558,7 +1576,7 @@ void CSO7_UtilDlg::OnBnClickedButtonSetScaleCoefficient()
m_pSO7_Proto->g_machine.s_machine_config.y_axis._scale_resolution = atof(cTempValue);
cTempValue=T2A(m_cs_ZScaleCoeff);
m_pSO7_Proto->g_machine.s_machine_config.z_axis._scale_resolution = atof(cTempValue);
m_pSO7_Proto->Save_So7_Config();
m_pSO7_Proto->Save_So7_Motion_Config();
}
//======================================================
void CSO7_UtilDlg::OnBnClickedButtonSo7ExternalTrig()
@@ -1571,3 +1589,64 @@ void CSO7_UtilDlg::OnBnClickedButtonSo7ExternalTrig()
SetTimer(1,m_ReadAxisIntervalTime,NULL);
}
//void CSO7_UtilDlg::OnBnClickedButton3()
//{
// CSO7OperateIODlg *dlg = new CSO7OperateIODlg;
// dlg->DoModal();
// delete dlg;
// dlg = NULL;
//}
void CSO7_UtilDlg::OnBnClickedButtonIoTest()
{
if(!m_pSO7_Proto->isEF1AController)
return;
CSO7OperateIODlg *dlg = new CSO7OperateIODlg;
dlg->DoModal();
delete dlg;
dlg = NULL;
}
void CSO7_UtilDlg::OnBnClickedButtonSetMotionType()
{
if(!m_pSO7_Proto->isEF1AController)
return;
m_bMotionType = !m_bMotionType;
CString csOutMessage;
if(m_bMotionType)
m_OutMessage = _T("设置机器类型:手动机 ");
else
m_OutMessage = _T("设置机器类型:自动机 ");
m_pSO7_Proto->_send_cmd_SO7_CMD_SET_MOTION_TYPE(m_bMotionType);
if(m_bMotionType)
GetDlgItem(IDC_BUTTON_SET_MOTION_TYPE)->SetWindowTextW(_T("机器类型:手动"));
else
GetDlgItem(IDC_BUTTON_SET_MOTION_TYPE)->SetWindowTextW(_T("机器类型:自动"));
OutputWithScroll(m_OutMessage,m_edMSG);
}
void CSO7_UtilDlg::GetMotionTypeAndShow()
{
if(!m_pSO7_Proto->isEF1AController)
return;
m_pSO7_Proto->_send_cmd_SO7_CMD_GET_MOTION_TYPE();
Sleep(5);
if(m_pSO7_Proto->g_machine.bMotionType)
GetDlgItem(IDC_BUTTON_SET_MOTION_TYPE)->SetWindowTextW(_T("机器类型:手动"));
else
GetDlgItem(IDC_BUTTON_SET_MOTION_TYPE)->SetWindowTextW(_T("机器类型:自动"));
m_bMotionType = m_pSO7_Proto->g_machine.bMotionType;
}
@@ -1,6 +1,6 @@
#pragma once
#include "ProcessButton.h"
// CSO7_UtilDlg 对话框
class CSO7_UtilDlg : public CDialog
@@ -138,4 +138,11 @@ public:
afx_msg void OnBnClickedRadioSelectY();
afx_msg void OnBnClickedRadioSelectZ();
afx_msg void OnCbnSelchangeComboRwdataAddr();
//afx_msg void OnBnClickedButton3();
afx_msg void OnBnClickedButtonIoTest();
afx_msg void OnBnClickedButtonSetMotionType();
private:
BOOL m_bMotionType;
void GetMotionTypeAndShow();
};
@@ -304,62 +304,62 @@ void CSetSo7MotionConfig::UpdateDataValue()
int iRow=0;
int iCol=2;
CString cStr("");
cStr.Format(_T("%d"),m_pSO7_Proto->g_machine.s_machine_config.motion._EnCloseLoop);
cStr.Format(_T("%d"),m_pSO7_Proto->g_so7_config.m_EnCloseLoop);
m_ConfigList.SetItemText(iRow++,iCol,cStr);
cStr.Format(_T("%d"),m_pSO7_Proto->g_machine.s_machine_config.motion._RetryTimes);
cStr.Format(_T("%d"),m_pSO7_Proto->g_so7_config.m_RetryTimes);
m_ConfigList.SetItemText(iRow++,iCol,cStr);
cStr.Format(_T("%.3f"),m_pSO7_Proto->g_machine.s_machine_config.motion._ShiftPositionX);
cStr.Format(_T("%.3f"),m_pSO7_Proto->g_so7_config.m_ShiftPositionX);
m_ConfigList.SetItemText(iRow++,iCol,cStr);
cStr.Format(_T("%.3f"),m_pSO7_Proto->g_machine.s_machine_config.motion._ShiftPositionY);
cStr.Format(_T("%.3f"),m_pSO7_Proto->g_so7_config.m_ShiftPositionY);
m_ConfigList.SetItemText(iRow++,iCol,cStr);
cStr.Format(_T("%.3f"),m_pSO7_Proto->g_machine.s_machine_config.motion._ShiftPositionZ);
cStr.Format(_T("%.3f"),m_pSO7_Proto->g_so7_config.m_ShiftPositionZ);
m_ConfigList.SetItemText(iRow++,iCol,cStr);
cStr.Format(_T("%d"),m_pSO7_Proto->g_machine.s_machine_config.motion.GetInterruptMsgMethod);
cStr.Format(_T("%d"),m_pSO7_Proto->g_so7_config.GetInterruptMsgMethod);
m_ConfigList.SetItemText(iRow++,iCol,cStr);
cStr.Format(_T("%d"),m_pSO7_Proto->g_machine.s_machine_config.motion.m_WriteDataSleepTime);
cStr.Format(_T("%d"),m_pSO7_Proto->g_so7_config.m_WriteDataSleepTime);
m_ConfigList.SetItemText(iRow++,iCol,cStr);
cStr.Format(_T("%d"),m_pSO7_Proto->g_machine.s_machine_config.motion.m_AccuraErrPulseX);
cStr.Format(_T("%d"),m_pSO7_Proto->g_so7_config.m_AccuraErrPulseX);
m_ConfigList.SetItemText(iRow++,iCol,cStr);
cStr.Format(_T("%d"),m_pSO7_Proto->g_machine.s_machine_config.motion.m_AccuraErrPulseY);
cStr.Format(_T("%d"),m_pSO7_Proto->g_so7_config.m_AccuraErrPulseY);
m_ConfigList.SetItemText(iRow++,iCol,cStr);
cStr.Format(_T("%d"),m_pSO7_Proto->g_machine.s_machine_config.motion.m_AccuraErrPulseZ);
cStr.Format(_T("%d"),m_pSO7_Proto->g_so7_config.m_AccuraErrPulseZ);
m_ConfigList.SetItemText(iRow++,iCol,cStr);
cStr.Format(_T("%d"),m_pSO7_Proto->g_machine.s_machine_config.motion.m_EQUIDIS_X);
cStr.Format(_T("%d"),m_pSO7_Proto->g_so7_config.m_EQUIDIS_X);
m_ConfigList.SetItemText(iRow++,iCol,cStr);
cStr.Format(_T("%d"),m_pSO7_Proto->g_machine.s_machine_config.motion.m_EQUIDIS_Y);
cStr.Format(_T("%d"),m_pSO7_Proto->g_so7_config.m_EQUIDIS_Y);
m_ConfigList.SetItemText(iRow++,iCol,cStr);
cStr.Format(_T("%d"),m_pSO7_Proto->g_machine.s_machine_config.motion.m_EQUIDIS_Z);
cStr.Format(_T("%d"),m_pSO7_Proto->g_so7_config.m_EQUIDIS_Z);
m_ConfigList.SetItemText(iRow++,iCol,cStr);
cStr.Format(_T("%d"),m_pSO7_Proto->g_machine.s_machine_config.motion.m_CNC_Deadlock_Solution);
cStr.Format(_T("%d"),m_pSO7_Proto->g_so7_config.m_CNC_Deadlock_Solution);
m_ConfigList.SetItemText(iRow++,iCol,cStr);
cStr.Format(_T("%d"),m_pSO7_Proto->g_machine.s_machine_config.motion.m_CNC_Deadlock_JudgeMaxCnts);
cStr.Format(_T("%d"),m_pSO7_Proto->g_so7_config.m_CNC_Deadlock_JudgeMaxCnts);
m_ConfigList.SetItemText(iRow++,iCol,cStr);
cStr.Format(_T("%d"),m_pSO7_Proto->g_machine.s_machine_config.motion.m_TouchProbeEnable);
cStr.Format(_T("%d"),m_pSO7_Proto->g_so7_config.m_TouchProbeEnable);
m_ConfigList.SetItemText(iRow++,iCol,cStr);
cStr.Format(_T("%d"),m_pSO7_Proto->g_machine.s_machine_config.motion.m_FootSwitchEnable);
cStr.Format(_T("%d"),m_pSO7_Proto->g_so7_config.m_FootSwitchEnable);
m_ConfigList.SetItemText(iRow++,iCol,cStr);
cStr.Format(_T("%d"),m_pSO7_Proto->g_machine.s_machine_config.motion.m_JoyStickEnable);
cStr.Format(_T("%d"),m_pSO7_Proto->g_so7_config.m_bJoyStickEnable);
m_ConfigList.SetItemText(iRow++,iCol,cStr);
cStr.Format(_T("%d"),m_pSO7_Proto->g_machine.s_machine_config.motion.m_STIL_CCS_PRIMA_Enable);
cStr.Format(_T("%d"),m_pSO7_Proto->g_so7_config.m_STIL_CCS_PRIMA_Enable);
m_ConfigList.SetItemText(iRow++,iCol,cStr);
cStr.Format(_T("%d"),m_pSO7_Proto->g_machine.s_machine_config.motion.m_DebugOutputEnable);
cStr.Format(_T("%d"),m_pSO7_Proto->g_so7_config.m_bDebugOutputEnable);
m_ConfigList.SetItemText(iRow++,iCol,cStr);
cStr.Format(_T("%d"),m_pSO7_Proto->g_machine.s_machine_config.motion.m_SDK3000_CntThreadSleepVal);
cStr.Format(_T("%d"),m_pSO7_Proto->g_so7_config.m_CntThreadSleepVal);
m_ConfigList.SetItemText(iRow++,iCol,cStr);
cStr.Format(_T("%d"),m_pSO7_Proto->g_machine.s_machine_config.motion.m_SV4000E_DenoisePara[0]);
cStr.Format(_T("%d"),m_pSO7_Proto->g_so7_config.m_SV4000E_DenoisePara[0]);
m_ConfigList.SetItemText(iRow++,iCol,cStr);
cStr.Format(_T("%d"),m_pSO7_Proto->g_machine.s_machine_config.motion.m_SV4000E_DenoisePara[1]);
cStr.Format(_T("%d"),m_pSO7_Proto->g_so7_config.m_SV4000E_DenoisePara[1]);
m_ConfigList.SetItemText(iRow++,iCol,cStr);
cStr.Format(_T("%d"),m_pSO7_Proto->g_machine.s_machine_config.motion.m_SV4000E_DenoisePara[2]);
cStr.Format(_T("%d"),m_pSO7_Proto->g_so7_config.m_SV4000E_DenoisePara[2]);
m_ConfigList.SetItemText(iRow++,iCol,cStr);
cStr.Format(_T("%d"),m_pSO7_Proto->g_machine.s_machine_config.motion.m_SV4000E_DenoisePara[3]);
cStr.Format(_T("%d"),m_pSO7_Proto->g_so7_config.m_SV4000E_DenoisePara[3]);
m_ConfigList.SetItemText(iRow++,iCol,cStr);
cStr.Format(_T("%d"),m_pSO7_Proto->g_machine.s_machine_config.motion.m_MachineType);
cStr.Format(_T("%d"),m_pSO7_Proto->g_so7_config.m_MachineType);
m_ConfigList.SetItemText(iRow++,iCol,cStr);
cStr.Format(_T("%d"),m_pSO7_Proto->g_machine.s_machine_config.motion.m_VideoCardType);
cStr.Format(_T("%d"),m_pSO7_Proto->g_so7_config.m_VideoCardType);
m_ConfigList.SetItemText(iRow++,iCol,cStr);
@@ -381,9 +381,9 @@ void CSetSo7MotionConfig::UpdateDataValue()
m_ConfigList.SetItemText(iRow++,iCol,cStr);
cStr.Format(_T("%.4f"),m_pSO7_Proto->g_machine.s_machine_config.z_axis._pos_working_limit);
m_ConfigList.SetItemText(iRow++,iCol,cStr);
cStr.Format(_T("%d"),m_pSO7_Proto->g_machine.s_machine_config.motion.m_RotaryAxisNO);
cStr.Format(_T("%d"),m_pSO7_Proto->g_machine.s_machine_config.r_axis.m_RotaryAxisNO);
m_ConfigList.SetItemText(iRow++,iCol,cStr);
cStr.Format(_T("%.4f"),m_pSO7_Proto->g_machine.s_machine_config.motion.m_RotaryCircleDis);
cStr.Format(_T("%.4f"),m_pSO7_Proto->g_machine.s_machine_config.r_axis.m_RotaryCircleDis);
m_ConfigList.SetItemText(iRow++,iCol,cStr);
}
@@ -398,112 +398,112 @@ void CSetSo7MotionConfig::SaveDataValue()
cStr=m_ConfigList.GetItemText(iRow,iCol);
cTemp=T2A(cStr);
m_pSO7_Proto->g_machine.s_machine_config.motion._EnCloseLoop=atoi(cTemp);
m_pSO7_Proto->g_so7_config.m_EnCloseLoop=atoi(cTemp);
iRow++;
cStr=m_ConfigList.GetItemText(iRow,iCol);
cTemp=T2A(cStr);
m_pSO7_Proto->g_machine.s_machine_config.motion._RetryTimes=atoi(cTemp);
m_pSO7_Proto->g_so7_config.m_RetryTimes=atoi(cTemp);
iRow++;
cStr=m_ConfigList.GetItemText(iRow,iCol);
cTemp=T2A(cStr);
m_pSO7_Proto->g_machine.s_machine_config.motion._ShiftPositionX=atof(cTemp);
m_pSO7_Proto->g_so7_config.m_ShiftPositionX=atof(cTemp);
iRow++;
cStr=m_ConfigList.GetItemText(iRow,iCol);
cTemp=T2A(cStr);
m_pSO7_Proto->g_machine.s_machine_config.motion._ShiftPositionY=atof(cTemp);
m_pSO7_Proto->g_so7_config.m_ShiftPositionY=atof(cTemp);
iRow++;
cStr=m_ConfigList.GetItemText(iRow,iCol);
cTemp=T2A(cStr);
m_pSO7_Proto->g_machine.s_machine_config.motion._ShiftPositionZ=atof(cTemp);
m_pSO7_Proto->g_so7_config.m_ShiftPositionZ=atof(cTemp);
iRow++;
cStr=m_ConfigList.GetItemText(iRow,iCol);
cTemp=T2A(cStr);
m_pSO7_Proto->g_machine.s_machine_config.motion.GetInterruptMsgMethod=static_cast<char>(atoi(cTemp));
m_pSO7_Proto->g_so7_config.GetInterruptMsgMethod=static_cast<char>(atoi(cTemp));
iRow++;
cStr=m_ConfigList.GetItemText(iRow,iCol);
cTemp=T2A(cStr);
m_pSO7_Proto->g_machine.s_machine_config.motion.m_WriteDataSleepTime=atoi(cTemp);
m_pSO7_Proto->g_so7_config.m_WriteDataSleepTime=atoi(cTemp);
iRow++;
cStr=m_ConfigList.GetItemText(iRow,iCol);
cTemp=T2A(cStr);
m_pSO7_Proto->g_machine.s_machine_config.motion.m_AccuraErrPulseX=atoi(cTemp);
m_pSO7_Proto->g_so7_config.m_AccuraErrPulseX=atoi(cTemp);
iRow++;
cStr=m_ConfigList.GetItemText(iRow,iCol);
cTemp=T2A(cStr);
m_pSO7_Proto->g_machine.s_machine_config.motion.m_AccuraErrPulseY=atoi(cTemp);
m_pSO7_Proto->g_so7_config.m_AccuraErrPulseY=atoi(cTemp);
iRow++;
cStr=m_ConfigList.GetItemText(iRow,iCol);
cTemp=T2A(cStr);
m_pSO7_Proto->g_machine.s_machine_config.motion.m_AccuraErrPulseZ=atoi(cTemp);
m_pSO7_Proto->g_so7_config.m_AccuraErrPulseZ=atoi(cTemp);
iRow++;
cStr=m_ConfigList.GetItemText(iRow,iCol);
cTemp=T2A(cStr);
m_pSO7_Proto->g_machine.s_machine_config.motion.m_EQUIDIS_X=atoi(cTemp);
m_pSO7_Proto->g_so7_config.m_EQUIDIS_X=atoi(cTemp);
iRow++;
cStr=m_ConfigList.GetItemText(iRow,iCol);
cTemp=T2A(cStr);
m_pSO7_Proto->g_machine.s_machine_config.motion.m_EQUIDIS_Y=atoi(cTemp);
m_pSO7_Proto->g_so7_config.m_EQUIDIS_Y=atoi(cTemp);
iRow++;
cStr=m_ConfigList.GetItemText(iRow,iCol);
cTemp=T2A(cStr);
m_pSO7_Proto->g_machine.s_machine_config.motion.m_EQUIDIS_Z=atoi(cTemp);
m_pSO7_Proto->g_so7_config.m_EQUIDIS_Z=atoi(cTemp);
iRow++;
cStr=m_ConfigList.GetItemText(iRow,iCol);
cTemp=T2A(cStr);
m_pSO7_Proto->g_machine.s_machine_config.motion.m_CNC_Deadlock_Solution=atoi(cTemp);
m_pSO7_Proto->g_so7_config.m_CNC_Deadlock_Solution=atoi(cTemp);
iRow++;
cStr=m_ConfigList.GetItemText(iRow,iCol);
cTemp=T2A(cStr);
m_pSO7_Proto->g_machine.s_machine_config.motion.m_CNC_Deadlock_JudgeMaxCnts=atoi(cTemp);
m_pSO7_Proto->g_so7_config.m_CNC_Deadlock_JudgeMaxCnts=atoi(cTemp);
iRow++;
cStr=m_ConfigList.GetItemText(iRow,iCol);
cTemp=T2A(cStr);
m_pSO7_Proto->g_machine.s_machine_config.motion.m_TouchProbeEnable=atoi(cTemp);
m_pSO7_Proto->g_so7_config.m_TouchProbeEnable=atoi(cTemp);
iRow++;
cStr=m_ConfigList.GetItemText(iRow,iCol);
cTemp=T2A(cStr);
m_pSO7_Proto->g_machine.s_machine_config.motion.m_FootSwitchEnable=atoi(cTemp);
m_pSO7_Proto->g_so7_config.m_FootSwitchEnable=atoi(cTemp);
iRow++;
cStr=m_ConfigList.GetItemText(iRow,iCol);
cTemp=T2A(cStr);
m_pSO7_Proto->g_machine.s_machine_config.motion.m_JoyStickEnable=atoi(cTemp);
m_pSO7_Proto->g_so7_config.m_bJoyStickEnable=atoi(cTemp);
iRow++;
cStr=m_ConfigList.GetItemText(iRow,iCol);
cTemp=T2A(cStr);
m_pSO7_Proto->g_machine.s_machine_config.motion.m_STIL_CCS_PRIMA_Enable=atoi(cTemp);
m_pSO7_Proto->g_so7_config.m_STIL_CCS_PRIMA_Enable=atoi(cTemp);
iRow++;
cStr=m_ConfigList.GetItemText(iRow,iCol);
cTemp=T2A(cStr);
m_pSO7_Proto->g_machine.s_machine_config.motion.m_DebugOutputEnable=atoi(cTemp);
m_pSO7_Proto->g_so7_config.m_bDebugOutputEnable=atoi(cTemp);
iRow++;
cStr=m_ConfigList.GetItemText(iRow,iCol);
cTemp=T2A(cStr);
m_pSO7_Proto->g_machine.s_machine_config.motion.m_SDK3000_CntThreadSleepVal=atoi(cTemp);
m_pSO7_Proto->g_so7_config.m_CntThreadSleepVal=atoi(cTemp);
iRow++;
cStr=m_ConfigList.GetItemText(iRow,iCol);
cTemp=T2A(cStr);
m_pSO7_Proto->g_machine.s_machine_config.motion.m_SV4000E_DenoisePara[0]=atoi(cTemp);
m_pSO7_Proto->g_so7_config.m_SV4000E_DenoisePara[0]=atoi(cTemp);
iRow++;
cStr=m_ConfigList.GetItemText(iRow,iCol);
cTemp=T2A(cStr);
m_pSO7_Proto->g_machine.s_machine_config.motion.m_SV4000E_DenoisePara[1]=atoi(cTemp);
m_pSO7_Proto->g_so7_config.m_SV4000E_DenoisePara[1]=atoi(cTemp);
iRow++;
cStr=m_ConfigList.GetItemText(iRow,iCol);
cTemp=T2A(cStr);
m_pSO7_Proto->g_machine.s_machine_config.motion.m_SV4000E_DenoisePara[2]=atoi(cTemp);
m_pSO7_Proto->g_so7_config.m_SV4000E_DenoisePara[2]=atoi(cTemp);
iRow++;
cStr=m_ConfigList.GetItemText(iRow,iCol);
cTemp=T2A(cStr);
m_pSO7_Proto->g_machine.s_machine_config.motion.m_SV4000E_DenoisePara[3]=atoi(cTemp);
m_pSO7_Proto->g_so7_config.m_SV4000E_DenoisePara[3]=atoi(cTemp);
iRow++;
cStr=m_ConfigList.GetItemText(iRow,iCol);
cTemp=T2A(cStr);
m_pSO7_Proto->g_machine.s_machine_config.motion.m_MachineType=atoi(cTemp);
m_pSO7_Proto->g_so7_config.m_MachineType=atoi(cTemp);
iRow++;
cStr=m_ConfigList.GetItemText(iRow,iCol);
cTemp=T2A(cStr);
m_pSO7_Proto->g_machine.s_machine_config.motion.m_VideoCardType=atoi(cTemp);
m_pSO7_Proto->g_so7_config.m_VideoCardType=atoi(cTemp);
iRow++;
@@ -545,25 +545,25 @@ void CSetSo7MotionConfig::SaveDataValue()
iRow++;
cStr=m_ConfigList.GetItemText(iRow,iCol);
cTemp=T2A(cStr);
m_pSO7_Proto->g_machine.s_machine_config.motion.m_RotaryAxisNO=atoi(cTemp);
m_pSO7_Proto->g_machine.s_machine_config.r_axis.m_RotaryAxisNO=atoi(cTemp);
iRow++;
cStr=m_ConfigList.GetItemText(iRow,iCol);
cTemp=T2A(cStr);
m_pSO7_Proto->g_machine.s_machine_config.motion.m_RotaryCircleDis=atof(cTemp);
m_pSO7_Proto->g_machine.s_machine_config.r_axis.m_RotaryCircleDis=atof(cTemp);
iRow++;
}
void CSetSo7MotionConfig::OnBnClickedButtonSo7MotionConfigOk()
{
SaveDataValue();
CString m_csMsg=_T("");
m_pSO7_Proto->Save_So7_Config();
m_pSO7_Proto->Save_So7_Config_Inifile();
m_pSO7_Proto->GetAppPath(m_csMsg);
m_csMsg=_T("配置文件保存在:")+m_csMsg+_T("\\UtilitySo7Config.ini。");
m_csMsg=_T("配置文件保存在:")+m_csMsg+_T("\\So7Config_Utility.ini。");
OutputWithScroll(m_csMsg,m_edit_MsgOut);
}
void CSetSo7MotionConfig::OnBnClickedButtonSo7MotionConfigSetDefault()
{
m_pSO7_Proto->so7_config_para_set_default();
m_pSO7_Proto->so7_config_cfg_set_default_para();
UpdateDataValue();
}
File diff suppressed because it is too large Load Diff
@@ -312,7 +312,7 @@ void CSetup_so7config::OnBnClickedButtonSo7configZoomPrecision()
m_pSO7_Proto->GetAppPath(m_csMsg);
m_csMsg=_T("配置文件保存在:")+m_csMsg+_T("\\so7_config.ini。");
OutputWithScroll(m_csMsg,m_edit_MsgOut);
m_pSO7_Proto->Save_So7_Config();
m_pSO7_Proto->Save_So7_Config_Inifile();
m_nStep=0;
ChangGUIWithStep(m_nStep);
@@ -0,0 +1,379 @@
// So7_Keyence9011.cpp : 实现文件
//
#include "stdafx.h"
#include "So7_Keyence9011.h"
#include "afxdialogex.h"
#include "..\..\..\SevenOcean\CMMIO_SERIAL.H"
#include "resource.h"
extern CPSerial* m_pSO7_Keyence9011;
static BYTE bSendData[6]= {0x4D,0x30,0x2C,0x30,0x0D,0x0A};
static UINT_PTR nIDTimer1 = 1;
static CString csFileTitle("9011_value.txt");
// CSo7_Keyence9011 对话框
IMPLEMENT_DYNAMIC(CSo7_Keyence9011, CDialogEx)
CSo7_Keyence9011::CSo7_Keyence9011(CWnd* pParent /*=NULL*/)
: CDialogEx(CSo7_Keyence9011::IDD, pParent)
{
}
CSo7_Keyence9011::~CSo7_Keyence9011()
{
}
void CSo7_Keyence9011::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CSo7_Keyence9011, CDialogEx)
ON_BN_CLICKED(IDC_BUTTON_SO7_UTIL_Keyence9011_CLOSE, &CSo7_Keyence9011::OnBnClickedButtonSo7UtilKeyence9011Close)
ON_BN_CLICKED(IDC_BUTTON_SO7_UTIL_Keyence9011_RECV, &CSo7_Keyence9011::OnBnClickedButtonSo7UtilKeyence9011Recv)
ON_BN_CLICKED(IDC_BUTTON_SO7_UTIL_Keyence9011_STOP, &CSo7_Keyence9011::OnBnClickedButtonSo7UtilKeyence9011Stop)
ON_BN_CLICKED(IDC_BUTTON_SO7_UTIL_Keyence9011_SAVE, &CSo7_Keyence9011::OnBnClickedButtonSo7UtilKeyence9011Save)
ON_BN_CLICKED(IDC_BUTTON_SO7_UTIL_Keyence9011_EXIT, &CSo7_Keyence9011::OnBnClickedButtonSo7UtilKeyence9011Exit)
ON_BN_CLICKED(IDC_CHECK_SO7_UTIL_Keyence9011_CYCLE, &CSo7_Keyence9011::OnBnClickedCheckSo7UtilKeyence9011Cycle)
ON_WM_TIMER()
ON_BN_CLICKED(IDC_BUTTON_SO7_UTIL_Keyence9011_OPEN, &CSo7_Keyence9011::OnBnClickedButtonSo7UtilKeyence9011Open)
END_MESSAGE_MAP()
// CSo7_Keyence9011 消息处理程序
void CSo7_Keyence9011::OnBnClickedButtonSo7UtilKeyence9011Close()
{
// TODO: 在此添加控件通知处理程序代码
if (m_pSO7_Keyence9011)
{
m_pSO7_Keyence9011->Close();
}
GetDlgItem(IDC_BUTTON_SO7_UTIL_Keyence9011_OPEN)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_SO7_UTIL_Keyence9011_CLOSE)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_SO7_UTIL_Keyence9011_RECV)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_SO7_UTIL_Keyence9011_STOP)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_SO7_UTIL_Keyence9011_SAVE)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_SO7_UTIL_Keyence9011_EXIT)->EnableWindow(TRUE);
m_StatusBar.SetText(_T("串口已关闭"), 0, 0);
m_StatusBar.SetText(_T(""), 1, 0);
}
void CSo7_Keyence9011::OnBnClickedButtonSo7UtilKeyence9011Recv()
{
// TODO:
CString csValue;
GetDlgItem(IDC_BUTTON_SO7_UTIL_Keyence9011_RECV)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_SO7_UTIL_Keyence9011_STOP)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_SO7_UTIL_Keyence9011_SAVE)->EnableWindow(TRUE);
m_StatusBar.SetText(_T("数据接收中"), 1, 0);
bcycle = ((CButton*)(GetDlgItem(IDC_CHECK_SO7_UTIL_Keyence9011_CYCLE)))->GetCheck();
if(bcycle)
{
GetDlgItem(IDC_EDIT_SO7_UTIL_Keyence9011_TIMER)->GetWindowTextW(csValue);
int iT =_ttoi(csValue)*1000;
SetTimer(nIDTimer1,iT,NULL);
}
else
{
RecvAndDispalyData();
}
strtxt = "";
m_StatusBar.SetText(_T(" "), 2, 0);
}
void CSo7_Keyence9011::OnBnClickedButtonSo7UtilKeyence9011Stop()
{
// TODO: 在此添加控件通知处理程序代码
GetDlgItem(IDC_BUTTON_SO7_UTIL_Keyence9011_RECV)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_SO7_UTIL_Keyence9011_STOP)->EnableWindow(FALSE);
m_StatusBar.SetText(_T("终止检测"), 1, 0);
KillTimer(nIDTimer1);
}
void CSo7_Keyence9011::OnBnClickedButtonSo7UtilKeyence9011Save()
{
// TODO: 在此添加控件通知处理程序代码
if(file.Open(csFileTitle,CFile::modeNoTruncate | CFile::modeWrite,&e))
{
}
else
{
file.Open(csFileTitle,CFile::modeCreate | CFile::modeWrite);
}
file.SeekToEnd();
file.WriteString(strtxt);
file.Close();
file.Flush();
m_StatusBar.SetText(_T("保存成功"), 2, 0);
}
void CSo7_Keyence9011::OnBnClickedButtonSo7UtilKeyence9011Exit()
{
// TODO: 在此添加控件通知处理程序代码
CDialog::OnCancel();
}
void CSo7_Keyence9011::OnBnClickedCheckSo7UtilKeyence9011Cycle()
{
// TODO: 在此添加控件通知处理程序代码
}
BOOL CSo7_Keyence9011::OnInitDialog()
{
CDialogEx::OnInitDialog();
// TODO: 在此添加额外的初始化
GetDlgItem(IDC_BUTTON_SO7_UTIL_Keyence9011_OPEN)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_SO7_UTIL_Keyence9011_CLOSE)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_SO7_UTIL_Keyence9011_RECV)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_SO7_UTIL_Keyence9011_STOP)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_SO7_UTIL_Keyence9011_SAVE)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_SO7_UTIL_Keyence9011_EXIT)->EnableWindow(TRUE);
((CComboBox*)(GetDlgItem(IDC_COMBO_SO7_UTIL_Keyence9011_PORT)))->ResetContent();
((CComboBox*)(GetDlgItem(IDC_COMBO_SO7_UTIL_Keyence9011_PORT)))->AddString(L"COM1");
((CComboBox*)(GetDlgItem(IDC_COMBO_SO7_UTIL_Keyence9011_PORT)))->AddString(L"COM2");
((CComboBox*)(GetDlgItem(IDC_COMBO_SO7_UTIL_Keyence9011_PORT)))->AddString(L"COM3");
((CComboBox*)(GetDlgItem(IDC_COMBO_SO7_UTIL_Keyence9011_PORT)))->AddString(L"COM4");
((CComboBox*)(GetDlgItem(IDC_COMBO_SO7_UTIL_Keyence9011_PORT)))->AddString(L"COM5");
((CComboBox*)(GetDlgItem(IDC_COMBO_SO7_UTIL_Keyence9011_PORT)))->AddString(L"COM6");
((CComboBox*)(GetDlgItem(IDC_COMBO_SO7_UTIL_Keyence9011_PORT)))->AddString(L"COM7");
((CComboBox*)(GetDlgItem(IDC_COMBO_SO7_UTIL_Keyence9011_PORT)))->AddString(L"COM8");
((CComboBox*)(GetDlgItem(IDC_COMBO_SO7_UTIL_Keyence9011_PORT)))->SetCurSel(0);
((CComboBox*)(GetDlgItem(IDC_COMBO_SO7_UTIL_Keyence9011_BAUD)))->ResetContent();
((CComboBox*)(GetDlgItem(IDC_COMBO_SO7_UTIL_Keyence9011_BAUD)))->AddString(L"110");
((CComboBox*)(GetDlgItem(IDC_COMBO_SO7_UTIL_Keyence9011_BAUD)))->AddString(L"300");
((CComboBox*)(GetDlgItem(IDC_COMBO_SO7_UTIL_Keyence9011_BAUD)))->AddString(L"600");
((CComboBox*)(GetDlgItem(IDC_COMBO_SO7_UTIL_Keyence9011_BAUD)))->AddString(L"1200");
((CComboBox*)(GetDlgItem(IDC_COMBO_SO7_UTIL_Keyence9011_BAUD)))->AddString(L"2400");
((CComboBox*)(GetDlgItem(IDC_COMBO_SO7_UTIL_Keyence9011_BAUD)))->AddString(L"4800");
((CComboBox*)(GetDlgItem(IDC_COMBO_SO7_UTIL_Keyence9011_BAUD)))->AddString(L"9600");
((CComboBox*)(GetDlgItem(IDC_COMBO_SO7_UTIL_Keyence9011_BAUD)))->AddString(L"14400");
((CComboBox*)(GetDlgItem(IDC_COMBO_SO7_UTIL_Keyence9011_BAUD)))->AddString(L"19200");
((CComboBox*)(GetDlgItem(IDC_COMBO_SO7_UTIL_Keyence9011_BAUD)))->AddString(L"38400");
((CComboBox*)(GetDlgItem(IDC_COMBO_SO7_UTIL_Keyence9011_BAUD)))->AddString(L"56000");
((CComboBox*)(GetDlgItem(IDC_COMBO_SO7_UTIL_Keyence9011_BAUD)))->AddString(L"57600");
((CComboBox*)(GetDlgItem(IDC_COMBO_SO7_UTIL_Keyence9011_BAUD)))->AddString(L"115200");
((CComboBox*)(GetDlgItem(IDC_COMBO_SO7_UTIL_Keyence9011_BAUD)))->AddString(L"128000");
((CComboBox*)(GetDlgItem(IDC_COMBO_SO7_UTIL_Keyence9011_BAUD)))->AddString(L"256000");
((CComboBox*)(GetDlgItem(IDC_COMBO_SO7_UTIL_Keyence9011_BAUD)))->SetCurSel(6);
m_StatusBar.Create(WS_CHILD|WS_VISIBLE|SBS_SIZEGRIP, CRect(0, 0, 0, 0), this, 101);
m_StatusBar.SetBkColor(RGB(0xff, 0xff, 0x00));
int arWidth[] = {330,450, -1 };
m_StatusBar.SetParts(3, arWidth);
m_StatusBar.SetText(_T("System ready."), 0, 0);
return TRUE; // return TRUE unless you set the focus to a control
// 异常: OCX 属性页应返回 FALSE
}
BOOL CSo7_Keyence9011::GetPortAndBaud()
{
int i = ((CComboBox*)(GetDlgItem(IDC_COMBO_SO7_UTIL_Keyence9011_PORT)))->GetCurSel();
switch(i)
{
case 0:
iPort = 1;
break;
case 1:
iPort = 2;
break;
case 2:
iPort = 3;
break;
case 3:
iPort = 4;
break;
case 4:
iPort = 5;
break;
case 5:
iPort = 6;
break;
case 6:
iPort = 7;
break;
case 7:
iPort = 8;
break;
default:
iPort = 1;
return false;
}
int j = ((CComboBox*)(GetDlgItem(IDC_COMBO_SO7_UTIL_Keyence9011_BAUD)))->GetCurSel();
switch(j)
{
case 0:
iBaud = CBR_110;
break;
case 1:
iBaud = CBR_300;
break;
case 2:
iBaud = CBR_600;
break;
case 3:
iBaud = CBR_1200;
break;
case 4:
iBaud = CBR_2400;
break;
case 5:
iBaud = CBR_4800;
break;
case 6:
iBaud = CBR_9600;
break;
case 7:
iBaud = CBR_14400;
break;
case 8:
iBaud = CBR_19200;
break;
case 9:
iBaud = CBR_38400;
break;
case 10:
iBaud = CBR_56000;
break;
case 11:
iBaud = CBR_57600;
break;
case 12:
iBaud = CBR_115200;
break;
case 13:
iBaud = CBR_128000;
break;
case 14:
iBaud = CBR_256000;
break;
default:
iBaud = CBR_38400;
return false;
}
return true;
}
void CSo7_Keyence9011::OnTimer(UINT_PTR nIDEvent)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
RecvAndDispalyData();
CDialogEx::OnTimer(nIDEvent);
}
void CSo7_Keyence9011::OnBnClickedButtonSo7UtilKeyence9011Open()
{
// TODO: 在此添加控件通知处理程序代码
if (m_pSO7_Keyence9011)
{
// int iPort = ((CComboBox*)(GetDlgItem(IDC_COMBO_SO7_UTIL_TEMPERATURE_DISPLAY_PORT)))->GetCurSel() + 1;
if(!GetPortAndBaud())
{
return;
}
m_pSO7_Keyence9011->SetPort(iPort,iBaud);
CString Param,Params;
int Port;
int Baud;
char Parity;
int Bits;
int StopBits;
int HandShake;
m_pSO7_Keyence9011->GetPortData(&Port,&Baud,&Parity,&Bits,&StopBits,&HandShake);
Params.Format( TEXT("[COM%d]"), iPort );
Param.Format( TEXT(" Baud=%d"), iBaud );
Params += Param;
Param.Format( TEXT(" Parity=%c"), Parity );
Params += Param;
Param.Format( TEXT(" Data=%d"), Bits );
Params += Param;
Param.Format( TEXT(" Stop=%d"), StopBits );
Params += Param;
m_StatusBar.SetText(Params, 0, 0);
//BYTE bRecvData[32] = {0};
if(m_pSO7_Keyence9011->Open())
{
m_StatusBar.SetText(_T("串口打开成功"), 1, 0);
GetDlgItem(IDC_BUTTON_SO7_UTIL_Keyence9011_OPEN)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_SO7_UTIL_Keyence9011_CLOSE)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_SO7_UTIL_Keyence9011_RECV)->EnableWindow(TRUE);
}
else
{
m_StatusBar.SetText(_T("串口打开失败"), 1, 0);
}
}
else
{
m_StatusBar.SetText(_T("串口打开失败"), 1, 0);
}
}
void CSo7_Keyence9011::RecvAndDispalyData()
{
iWriteByte = m_pSO7_Keyence9011->Send((char*)bSendData,6);
//쌈肝鑒앴
INT iRetrys(0);
CString csVaue;
CString csn("\r\n");
while(!m_pSO7_Keyence9011->m_iRecvState && iRetrys<20)
{
iRetrys++;
Sleep(100);
}
if (m_pSO7_Keyence9011->m_iRecvState)
{
if(m_pSO7_Keyence9011->m_RecvData[0]==0)
{
m_pSO7_Keyence9011->m_iRecvState=FALSE;
INT iRetrys2(0);
while(!m_pSO7_Keyence9011->m_iRecvState && iRetrys2<60)
{
iRetrys2++;
Sleep(100);
}
}
m_pSO7_Keyence9011->m_iRecvState=FALSE;
csVaue = m_pSO7_Keyence9011->m_RecvData;
strtxt = strtxt + csVaue;
strtxt = strtxt + csn;
GetDlgItem(IDC_EDIT_SO7_UTIL_Keyence9011_RECVDATA)->SetWindowTextW((LPCTSTR)strtxt);
}
else
{
m_StatusBar.SetText(_T("数据接收失败"), 1, 0);
}
/*
m_pSO7_Keyence9011->m_RecvData[0] = '+';
m_pSO7_Keyence9011->m_RecvData[1] = '5';
m_pSO7_Keyence9011->m_RecvData[2] = '3';
m_pSO7_Keyence9011->m_RecvData[3] = '.';
m_pSO7_Keyence9011->m_RecvData[4] = '0';
m_pSO7_Keyence9011->m_RecvData[5] = '2';
csVaue = m_pSO7_Keyence9011->m_RecvData;
strtxt = strtxt + csVaue;
strtxt = strtxt + csn;
GetDlgItem(IDC_EDIT_SO7_UTIL_Keyence9011_RECVDATA)->SetWindowTextW((LPCTSTR)strtxt);
*/
}
@@ -0,0 +1,45 @@
#pragma once
#include "resource.h"
// CSo7_Keyence9011 对话框
class CSo7_Keyence9011 : public CDialogEx
{
DECLARE_DYNAMIC(CSo7_Keyence9011)
public:
CSo7_Keyence9011(CWnd* pParent = NULL); // 标准构造函数
virtual ~CSo7_Keyence9011();
// 对话框数据
enum { IDD = IDD_So7_Util_Keyence9011 };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
DECLARE_MESSAGE_MAP()
protected:
CStatusBarCtrl m_StatusBar;
DWORD iWriteByte;
CString strtxt;
CStdioFile file;
CFileException e;
int iPort;
int iBaud;
BOOL bcycle;
public:
BOOL GetPortAndBaud();
void RecvAndDispalyData();
public:
afx_msg void OnBnClickedButtonSo7UtilKeyence9011Close();
afx_msg void OnBnClickedButtonSo7UtilKeyence9011Recv();
afx_msg void OnBnClickedButtonSo7UtilKeyence9011Stop();
afx_msg void OnBnClickedButtonSo7UtilKeyence9011Save();
afx_msg void OnBnClickedButtonSo7UtilKeyence9011Exit();
afx_msg void OnBnClickedCheckSo7UtilKeyence9011Cycle();
virtual BOOL OnInitDialog();
afx_msg void OnTimer(UINT_PTR nIDEvent);
afx_msg void OnBnClickedButtonSo7UtilKeyence9011Open();
};
@@ -12,8 +12,8 @@
#include "ProcessButton.h"
#include "EditableListCtrl.h"
#ifdef _RELEASE_FULL_VERSION
#include "VideoCardDefine.h"
#ifdef _RELEASE_FULL_VERSION
#include "..\..\..\Videocard\SDK3000\sdk3000_7130.h"
#include "Videocard_SDK3000.h"
#include "..\..\..\Videocard\SV2000E\datastru.h"
@@ -28,8 +28,14 @@
#include "..\..\..\Videocard\MV900\Convert.h"
#include "..\..\..\Videocard\MV900\MVSDK.h"
#include "Videocard_MV900.h"
#endif //_RELEASE_FULL_VERSION
#include "..\..\..\Videocard\MindVision\Include\CameraDefine.h"
#include "..\..\..\Videocard\MindVision\Include\CameraStatus.h"
#include "..\..\..\Videocard\MindVision\MindVision_GIGE_Camera.h"
#include "Videocard_Mindvision.h"
#include "..\..\..\STIL\Common\inc\cAcqEasy.h"
#include "..\..\..\STIL\STIL_CCS_PRIMA_Laser.h"
#include "STIL_CCS_PRIMA_Dlg.h"
@@ -65,11 +71,17 @@
#include "afxdialogex.h"
#include "So7_Temperature_Sensor.h"
#include "SO7_Temperature_Display.h"
#include "So7_Keyence9011.h"
#include "So7_Robot_Control.h"
#include "So7_UseRobotDll.h"
#include "EF1A_Manual_Machine.h"
//#define _RELEASE_ONLY_ONE_FUNCTION
//CSerial* m_pSO7_Serial=NULL;
CPSerial* m_pSO7_TemperatureDisplay = NULL;
CPSerial* m_pSO7_TemperatureSensor = NULL;
CPSerial* m_pSO7_Keyence9011 = NULL;
So7_UseRobotDll* m_pSO7_Robot = NULL;
CPSerial* m_pSO7_PCDSerial=NULL;
CSO7_Proto* m_pSO7_Proto=NULL;
CSO7_Proto_Aux* m_pSO7_Proto_Aux=NULL;
@@ -87,6 +99,7 @@ CSTIL_CCS_PRIMA_Laser* g_pSTIL_CCS_PRIMA=NULL;
CSo7_TCPIP* g_pSo7_TCPIP=NULL;
CSo7_TCPIP_Server* g_pSo7_TCPIP_Server=NULL;
Camera_MindVision_GIGE* g_pMindVision_GIGE=NULL;
// CSo7_Option dialog
IMPLEMENT_DYNAMIC(CSo7_Option, CDialog)
@@ -148,7 +161,7 @@ BOOL CSo7_Option::OnInitDialog()
((CButton *)GetDlgItem(IDC_RADIO_VIDEOCARD_TC4000))->SetCheck(FALSE);
((CButton *)GetDlgItem(IDC_RADIO_VIDEOCARD_MV900))->SetCheck(FALSE);
((CButton *)GetDlgItem(IDC_RADIO_SO7_IP_CAMERA))->SetCheck(FALSE);
((CButton *)GetDlgItem(IDC_RADIO_CONTROLLER))->SetCheck(TRUE);
((CButton *)GetDlgItem(IDC_RADIO_CONTROLLER))->SetCheck(FALSE);
((CButton *)GetDlgItem(IDC_RADIO__SO7_RS232))->SetCheck(FALSE);
((CButton *)GetDlgItem(IDC_RADIO_KEYENCE_LASER))->SetCheck(FALSE);
((CButton *)GetDlgItem(IDC_RADIO_SO7_VERIFICATION_ALGORITHM))->SetCheck(FALSE);
@@ -156,7 +169,8 @@ BOOL CSo7_Option::OnInitDialog()
((CButton *)GetDlgItem(IDC_RADIO_ART_PCI8622))->SetCheck(FALSE);
((CButton *)GetDlgItem(IDC_RADIO_SO7_OMRON_PLC))->SetCheck(FALSE);
((CButton *)GetDlgItem(IDC_RADIO_SO7_OMRON_PLC_SERVER))->SetCheck(FALSE);
((CButton *)GetDlgItem(IDC_RADIO_CONTROL_EF1A))->SetCheck(TRUE);
#ifdef _RELEASE_SO7_CONTROLER_ONLY/*
((CButton *)GetDlgItem(IDC_RADIO_SO7_OMRON_PLC))->EnableWindow(FALSE);
((CButton *)GetDlgItem(IDC_RADIO_SO7_OMRON_PLC_SERVER))->EnableWindow(FALSE);*/
@@ -214,7 +228,7 @@ void CSo7_Option::OnSysCommand(UINT nID, LPARAM lParam)
}
//===================================
void CSo7_Option::OnBnClickedOk()
{
{
if (((CButton *)GetDlgItem(IDC_RADIO_CONTROLLER))->GetCheck())
{
if (!m_pEF8000_Interface)
@@ -444,6 +458,25 @@ void CSo7_Option::OnBnClickedOk()
CVideocard_MV900* pVideocard_MV900=new CVideocard_MV900();
pVideocard_MV900->DoModal();
delete pVideocard_MV900;
#endif //_RELEASE_FULL_VERSION
}
else if (((CButton *)GetDlgItem(IDC_RADIO_SO7_IP_CAMERA))->GetCheck())
{
#ifdef _RELEASE_FULL_VERSION
if(!g_pMindVision_GIGE)
{
g_pMindVision_GIGE=new Camera_MindVision_GIGE();
}
CVideocard_Mindvision* pVideocard_Mindvision=new CVideocard_Mindvision();
pVideocard_Mindvision->DoModal();
delete pVideocard_Mindvision;
pVideocard_Mindvision=NULL;
if (g_pMindVision_GIGE)
{
delete g_pMindVision_GIGE;
g_pMindVision_GIGE=NULL;
}
#endif //_RELEASE_FULL_VERSION
}
else if(((CButton *)GetDlgItem(IDC_RADIO_TEST_IMAGE_DLL))->GetCheck())
@@ -498,26 +531,116 @@ void CSo7_Option::OnBnClickedOk()
pSO7_Verfication_Algorithm->DoModal();
delete pSO7_Verfication_Algorithm;
}
else if (((CButton *)GetDlgItem(IDC_RADIO_SO7_TEMPERATURE_SENSOR))->GetCheck())
else if (((CButton *)GetDlgItem(IDC_RADIO_SO7_TEMPERATURE_SENSOR))->GetCheck())
{
if (!m_pSO7_TemperatureDisplay)
{
m_pSO7_TemperatureDisplay = new CPSerial();
}
CSO7_Temperature_Display* pSO7_Temperature_Display=new CSO7_Temperature_Display();
CSO7_Temperature_Display* pSO7_Temperature_Display=new CSO7_Temperature_Display();
pSO7_Temperature_Display->DoModal();
delete pSO7_Temperature_Display;
if (m_pSO7_TemperatureDisplay)
{
delete m_pSO7_TemperatureDisplay;
m_pSO7_TemperatureDisplay=NULL;
}
m_pSO7_TemperatureDisplay=NULL;
}
}
else if (((CButton *)GetDlgItem(IDC_RADIO_SO7_keyence9011))->GetCheck())
{
if (!m_pSO7_Keyence9011)
{
m_pSO7_Keyence9011 = new CPSerial();
}
CSo7_Keyence9011* pSo7_Keyence9011=new CSo7_Keyence9011();
pSo7_Keyence9011->DoModal();
delete pSo7_Keyence9011;
if (m_pSO7_Keyence9011)
{
delete m_pSO7_Keyence9011;
m_pSO7_Keyence9011=NULL;
}
}
else if (((CButton *)GetDlgItem(IDC_RADIO_SO7_ROBOT))->GetCheck())
{
if(!m_pSO7_Robot)
{
m_pSO7_Robot = new So7_UseRobotDll();
}
So7_Robot_Control *pSo7_Robot = new So7_Robot_Control();
pSo7_Robot->DoModal();
delete pSo7_Robot;
if(m_pSO7_Robot)
{
delete m_pSO7_Robot;
m_pSO7_Robot = NULL;
}
}
else if (((CButton *)GetDlgItem(IDC_RADIO_CONTROL_EF1A))->GetCheck())
{
if (!m_pSO7_Proto)
{
m_pSO7_Proto = new CSO7_Proto();
}
/*
CEF1A_UtilDlg *pEF1A_UtilDlg = new CEF1A_UtilDlg();
m_pSO7_Proto->g_EF1AUsbDevice = new CEF1AUsbDevice();
pEF1A_UtilDlg->m_pUsbDevice = m_pSO7_Proto->g_EF1AUsbDevice;
m_pSO7_Proto->isEF1AController = true;
pEF1A_UtilDlg->DoModal();
m_pSO7_Proto->isEF1AController = false;
delete pEF1A_UtilDlg;
delete m_pSO7_Proto->g_EF1AUsbDevice;
*/
if (!m_pEF8000_Interface)
{
m_pEF8000_Interface=new CEF8000_Interface();
}
if (!m_pSO7_Proto)
{
m_pSO7_Proto = new CSO7_Proto();
}
if (!XBoxPlayer)
{
XBoxPlayer = new CXBOXController(1);
}
m_pSO7_Proto->isEF1AController = true;
if (m_pSO7_Proto->g_EF1AUsbDevice==nullptr)
{
m_pSO7_Proto->g_EF1AUsbDevice = new CEF1AUsbDevice();
}
CSO7_UtilDlg* pSO7_UtilDlg=new CSO7_UtilDlg();
pSO7_UtilDlg->DoModal();
delete pSO7_UtilDlg;
if (m_pSO7_Proto->g_EF1AUsbDevice!=nullptr)
{
delete m_pSO7_Proto->g_EF1AUsbDevice;
m_pSO7_Proto->g_EF1AUsbDevice=nullptr;
}
m_pSO7_Proto->isEF1AController = false;
if (XBoxPlayer)
{
delete XBoxPlayer;
XBoxPlayer=NULL;
}
if (m_pSO7_Proto)
{
delete m_pSO7_Proto;
m_pSO7_Proto=NULL;
}
if (m_pEF8000_Interface)
{
delete m_pEF8000_Interface;
m_pEF8000_Interface=NULL;
}
}
#ifdef _RELEASE_ONLY_ONE_FUNCTION
OnBnClickedCancel();
@@ -24,4 +24,5 @@ public:
afx_msg void OnBnClickedCancel();
afx_msg void OnTimer(UINT_PTR nIDEvent);
afx_msg void OnBnClickedRadioArtPci8622();
afx_msg void OnBnClickedRadioSo7TemperatureSensor();
};
@@ -0,0 +1,284 @@
// So7_Robot_Control.cpp : 实现文件
//
#include "stdafx.h"
#include "So7_Robot_Control.h"
#include "afxdialogex.h"
#include "So7_UseRobotDll.h"
#include "resource.h"
#include <windot11.h>
// So7_Robot_Control 对话框
extern So7_UseRobotDll *m_pSO7_Robot;
static UINT_PTR nIDTimer1 = 1;
IMPLEMENT_DYNAMIC(So7_Robot_Control, CDialogEx)
So7_Robot_Control::So7_Robot_Control(CWnd* pParent /*=NULL*/)
: CDialogEx(So7_Robot_Control::IDD, pParent)
, m_sSenddata(_T(""))
, m_Speed(_T(""))
, m_WriteProg(_T(""))
, m_WriteNumber(_T(""))
, m_WriteValue(_T(""))
{
}
So7_Robot_Control::~So7_Robot_Control()
{
}
void So7_Robot_Control::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
// DDX_Control(pDX, IDC_COMBO1, m_cCombo);
DDX_Text(pDX, IDC_EDIT_SO7_REBOT_CONTROL_POSITION_PROGRAM, m_sSenddata);
DDX_Text(pDX, IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_SPEED, m_Speed);
DDX_Text(pDX, IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_WRITEPROGNAME, m_WriteProg);
DDX_Text(pDX, IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_WRITEPROGNUMBER, m_WriteNumber);
DDX_Text(pDX, IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_WRITEPROGVALUE, m_WriteValue);
}
BEGIN_MESSAGE_MAP(So7_Robot_Control, CDialogEx)
ON_BN_CLICKED(IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_RUN, &So7_Robot_Control::OnBnClickedButtonSo7UtilRobotContorlRun)
ON_BN_CLICKED(IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_END, &So7_Robot_Control::OnBnClickedButtonSo7UtilRobotContorlEnd)
ON_BN_CLICKED(IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_CONNECT, &So7_Robot_Control::OnBnClickedButtonSo7UtilRobotContorlConnect)
ON_BN_CLICKED(IDC_BUTTON_So7_UTIL_REBOT_CONTROL_DISCONNECT, &So7_Robot_Control::OnBnClickedButtonSo7UtilRebotControlDisconnect)
ON_BN_CLICKED(IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_EXIT, &So7_Robot_Control::OnBnClickedButtonSo7UtilRobotContorlExit)
ON_WM_TIMER()
ON_BN_CLICKED(IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_SERVON, &So7_Robot_Control::OnBnClickedButtonSo7UtilRobotContorlServon)
ON_BN_CLICKED(IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_SERVOFF, &So7_Robot_Control::OnBnClickedButtonSo7UtilRobotContorlServoff)
ON_BN_CLICKED(IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_SETSPEED, &So7_Robot_Control::OnBnClickedButtonSo7UtilRobotContorlSetspeed)
ON_BN_CLICKED(IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_SAVEPROG, &So7_Robot_Control::OnBnClickedButtonSo7UtilRobotContorlSaveprog)
ON_EN_CHANGE(IDC_EDIT_SO7_REBOT_CONTROL_POSITION_X2, &So7_Robot_Control::OnEnChangeEditSo7RebotControlPositionX2)
ON_EN_CHANGE(IDC_EDIT_SO7_REBOT_CONTROL_POSITION_X1, &So7_Robot_Control::OnEnChangeEditSo7RebotControlPositionX1)
ON_BN_CLICKED(IDC_BUTTON_ReadPosition, &So7_Robot_Control::OnBnClickedButtonReadposition)
ON_EN_CHANGE(IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_WRITEPROGNAME, &So7_Robot_Control::OnEnChangeButtonSo7UtilRobotContorlWriteprogname)
END_MESSAGE_MAP()
// So7_Robot_Control 消息处理程序
void So7_Robot_Control::OnBnClickedButtonSo7UtilRobotContorlRun()
{
// TODO: 在此添加控件通知处理程序代码
BOOL bExecute,bCycle;
int Method;
// CString csValue;
bExecute = ((CButton*)(GetDlgItem(IDC_EDIT_SO7_REBOT_CONTROL_POSITION_PRO_SELECT)))->GetCheck();
bCycle = ((CButton*)(GetDlgItem(IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_CYCLE)))->GetCheck();
UpdateData(TRUE);
if(bExecute)
{
// GetDlgItem(IDC_EDIT_SO7_REBOT_CONTROL_POSITION_PROGRAM)->GetWindowTextW(csValue);
if(bCycle)
{
Method = 1;
}
else
{
Method = 0;
}
m_pSO7_Robot->ExecuteProgram_Robot(m_sSenddata,Method);
GetDlgItem(IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_RUN)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_END)->EnableWindow(TRUE);
}
else
{
MessageBox(_T("please select program!"));
}
//Robot.ExecuteProgram();
}
void So7_Robot_Control::OnBnClickedButtonSo7UtilRobotContorlEnd()
{
// TODO: 在此添加控件通知处理程序代码
CString sdata;
sdata.Format(_T("0"));
m_pSO7_Robot->StopProgram();
GetDlgItem(IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_RUN)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_END)->EnableWindow(FALSE);
}
void So7_Robot_Control::OnBnClickedButtonSo7UtilRobotContorlConnect()
{
// TODO: 在此添加控件通知处理程序代码
m_pSO7_Robot->Start_Robot();
GetDlgItem(IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_CONNECT)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_So7_UTIL_REBOT_CONTROL_DISCONNECT)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_RUN)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_END)->EnableWindow(FALSE);
SetTimer(nIDTimer1,100,NULL);
}
void So7_Robot_Control::OnBnClickedButtonSo7UtilRebotControlDisconnect()
{
// TODO: 在此添加控件通知处理程序代码
m_pSO7_Robot->End_Robot();
KillTimer(nIDTimer1);
GetDlgItem(IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_CONNECT)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_So7_UTIL_REBOT_CONTROL_DISCONNECT)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_RUN)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_END)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_EXIT)->EnableWindow(TRUE);
}
void So7_Robot_Control::OnBnClickedButtonSo7UtilRobotContorlExit()
{
// TODO: 在此添加控件通知处理程序代码
CDialog::OnCancel();
}
void So7_Robot_Control::OnTimer(UINT_PTR nIDEvent)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
CString csPosition;
csPosition = m_pSO7_Robot->GetCurrentPosition_Robot();
GetDlgItem(IDC_EDIT_SO7_REBOT_CONTROL_POSITION_X1)->SetWindowTextW(csPosition);
CDialogEx::OnTimer(nIDEvent);
}
BOOL So7_Robot_Control::OnInitDialog()
{
CDialogEx::OnInitDialog();
// TODO: 在此添加额外的初始化
m_pSO7_Robot->InitDll();
GetDlgItem(IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_CONNECT)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_So7_UTIL_REBOT_CONTROL_DISCONNECT)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_RUN)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_END)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_EXIT)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_SERVOFF)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_SERVON)->EnableWindow(TRUE);
return TRUE; // return TRUE unless you set the focus to a control
// 异常: OCX 属性页应返回 FALSE
}
void So7_Robot_Control::OnBnClickedButtonSo7UtilRobotContorlServon()
{
// TODO: 在此添加控件通知处理程序代码
long rid;
rid = m_pSO7_Robot->ServerON_Robot();
if(rid == 1)
{
GetDlgItem(IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_SERVOFF)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_SERVON)->EnableWindow(FALSE);
}
else
{
MessageBox(_T("ServerON failed!"));
}
}
void So7_Robot_Control::OnBnClickedButtonSo7UtilRobotContorlServoff()
{
// TODO: 在此添加控件通知处理程序代码
long rid;
rid = m_pSO7_Robot->ServerOFF_Robot();
if(rid == 1)
{
GetDlgItem(IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_SERVOFF)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_SERVON)->EnableWindow(TRUE);
}
else
{
MessageBox(_T("ServerOFF failed!"));
}
}
void So7_Robot_Control::OnBnClickedButtonSo7UtilRobotContorlSetspeed()
{
// TODO: 在此添加控件通知处理程序代码
long rid;
UpdateData(TRUE);
rid = m_pSO7_Robot->SetSpeed_Robot(m_Speed);
if(rid)
{
GetDlgItem(IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_SERVOFF)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_SERVON)->EnableWindow(TRUE);
}
else
{
MessageBox(_T("ServerOFF failed!"));
}
}
void So7_Robot_Control::OnBnClickedButtonSo7UtilRobotContorlSaveprog()
{
// TODO: 在此添加控件通知处理程序代码
long rid;
UpdateData(TRUE);
rid = m_pSO7_Robot->WritePosition_Robot(m_WriteValue,m_WriteProg,m_WriteNumber);
if(rid)
{
}
else
{
MessageBox(_T("WRITE POSITION DATA failed!"));
}
}
void So7_Robot_Control::OnEnChangeEditSo7RebotControlPositionX2()
{
// TODO: 如果该控件是 RICHEDIT 控件,它将不
// 发送此通知,除非重写 CDialogEx::OnInitDialog()
// 函数并调用 CRichEditCtrl().SetEventMask()
// 同时将 ENM_CHANGE 标志“或”运算到掩码中。
// TODO: 在此添加控件通知处理程序代码
}
void So7_Robot_Control::OnEnChangeEditSo7RebotControlPositionX1()
{
// TODO: 如果该控件是 RICHEDIT 控件,它将不
// 发送此通知,除非重写 CDialogEx::OnInitDialog()
// 函数并调用 CRichEditCtrl().SetEventMask()
// 同时将 ENM_CHANGE 标志“或”运算到掩码中。
// TODO: 在此添加控件通知处理程序代码
}
void So7_Robot_Control::OnBnClickedButtonReadposition()
{
// TODO: 在此添加控件通知处理程序代码
CString csPosition;
csPosition = m_pSO7_Robot->GetCurrentPosition_Robot();
GetDlgItem(IDC_EDIT_SO7_REBOT_CONTROL_POSITION_X1)->SetWindowTextW(csPosition);
}
void So7_Robot_Control::OnEnChangeButtonSo7UtilRobotContorlWriteprogname()
{
// TODO: 如果该控件是 RICHEDIT 控件,它将不
// 发送此通知,除非重写 CDialogEx::OnInitDialog()
// 函数并调用 CRichEditCtrl().SetEventMask()
// 同时将 ENM_CHANGE 标志“或”运算到掩码中。
// TODO: 在此添加控件通知处理程序代码
}
@@ -0,0 +1,42 @@
#pragma once
#include"resource.h"
// So7_Robot_Control 对话框
class So7_Robot_Control : public CDialogEx
{
DECLARE_DYNAMIC(So7_Robot_Control)
public:
So7_Robot_Control(CWnd* pParent = NULL); // 标准构造函数
virtual ~So7_Robot_Control();
// 对话框数据
enum { IDD = IDD_SO7_UTIL_Robot_Control };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnBnClickedButtonSo7UtilRobotContorlRun();
afx_msg void OnBnClickedButtonSo7UtilRobotContorlEnd();
afx_msg void OnBnClickedButtonSo7UtilRobotContorlConnect();
afx_msg void OnBnClickedButtonSo7UtilRebotControlDisconnect();
afx_msg void OnBnClickedButtonSo7UtilRobotContorlExit();
afx_msg void OnTimer(UINT_PTR nIDEvent);
virtual BOOL OnInitDialog();
CString m_sSenddata;
afx_msg void OnBnClickedButtonSo7UtilRobotContorlServon();
afx_msg void OnBnClickedButtonSo7UtilRobotContorlServoff();
afx_msg void OnBnClickedButtonSo7UtilRobotContorlSetspeed();
CString m_Speed;
afx_msg void OnBnClickedButtonSo7UtilRobotContorlSaveprog();
CString m_WriteProg;
afx_msg void OnEnChangeEditSo7RebotControlPositionX2();
afx_msg void OnEnChangeEditSo7RebotControlPositionX1();
afx_msg void OnBnClickedButtonReadposition();
afx_msg void OnEnChangeButtonSo7UtilRobotContorlWriteprogname();
CString m_WriteNumber;
CString m_WriteValue;
};
@@ -0,0 +1,116 @@
#include "StdAfx.h"
#include "So7_UseRobotDll.h"
#include <Windows.h>
So7_UseRobotDll::So7_UseRobotDll(void)
{
}
So7_UseRobotDll::~So7_UseRobotDll(void)
{
}
void So7_UseRobotDll::InitDll()
{
m_hImageDLL = (HMODULE)LoadLibrary(_T("RobotControlDll.dll"));
if(m_hImageDLL)
{
Start = (START)GetProcAddress(m_hImageDLL,"OnStart");
ExecuteProgram = (EXECUTEPROGRAM)GetProcAddress(m_hImageDLL,"Execute_Program");
StopProgram = (STOPPROGRAM)GetProcAddress(m_hImageDLL,"Stop_Program");
GetCurrentPosition = (GETCURRENTPOSITION)GetProcAddress(m_hImageDLL,"GetPosition");
End = (END)GetProcAddress(m_hImageDLL,"OnEnd");
Server_ON = (SERVER_ON)GetProcAddress(m_hImageDLL,"Server_ON");
Server_OFF = (SERVER_OFF)GetProcAddress(m_hImageDLL,"Server_OFF");
SetSpeed = (SETSPEED)GetProcAddress(m_hImageDLL,"SetSpeed");
Write_Position_data = (WRITEPOSITIONDATA)GetProcAddress(m_hImageDLL,"SetPosition");
if(!Write_Position_data)
{
MessageBox(NULL, _T("cannot find function Write_Position_data"), _T("Message"), MB_OK);
}
}
else
{
MessageBox(NULL, _T("Load Image.dll failed!"), _T("Message"), MB_OK);
}
}
void So7_UseRobotDll::Start_Robot()
{
Start();
}
long So7_UseRobotDll::ExecuteProgram_Robot(CString csData,int Method)
{
long rid;
char* ProgName;
ProgName = (LPSTR)(LPCTSTR)csData;
rid = ExecuteProgram(ProgName,Method);
return rid;
}
long So7_UseRobotDll::StopRrogram_Robot()
{
long rid;
rid = StopProgram();
return rid;
}
CString So7_UseRobotDll::GetCurrentPosition_Robot()
{
CString Position;
Position = GetCurrentPosition();
return Position;
}
void So7_UseRobotDll::End_Robot()
{
End();
}
long So7_UseRobotDll::ServerON_Robot()
{
long rid;
rid = Server_ON();
return rid;
}
long So7_UseRobotDll::ServerOFF_Robot()
{
long rid;
rid = Server_OFF();
return rid;
}
long So7_UseRobotDll::SetSpeed_Robot(CString sdata)
{
long rid;
// char Speed[4];
//char* cdata;
//int length;
//length = sizeof(Speed);
// cdata = CT2A(sdata);
//memset(Speed,0,length);
//cdata = (LPSTR)(LPCTSTR)sdata;
//for (int i=0;i<sdata.GetLength();i++)
//{
// if (i>=length)
// {
// break;
// }
// Speed[i] =(sdata.GetAt(i));
// cdata++;
//}
static CStringA strbuf;
strbuf = CT2A(sdata);
rid = SetSpeed(strbuf.GetBuffer());
return rid;
}
long So7_UseRobotDll::WritePosition_Robot(CString Position,CString ProgName,CString ProgNumber)
{
long rid;
static CStringA cPosition;
static CStringA cProgName;
static CStringA cProgNumber;
cPosition = CT2A(Position);
cProgName = CT2A(ProgName);
cProgNumber = CT2A(ProgNumber);
rid = Write_Position_data(cPosition.GetBuffer(),cProgName.GetBuffer(),cProgNumber.GetBuffer());
return rid;
}
@@ -0,0 +1,42 @@
#pragma once
typedef void (*START)();
typedef long (*WRITEPOSITIONDATA)(char* Position,char* ProgName,char* ProgNumber);
typedef long (*EXECUTEPROGRAM)(char* ProgName,int Method);
typedef long (*STOPPROGRAM)();
typedef void (*END)();
typedef char* (*GETCURRENTPOSITION)();
typedef long (*SERVER_ON)();
typedef long (*SERVER_OFF)();
typedef long (*SETSPEED)(char* Speed);
class So7_UseRobotDll
{
public:
So7_UseRobotDll(void);
~So7_UseRobotDll(void);
HMODULE m_hImageDLL;
START Start;
EXECUTEPROGRAM ExecuteProgram;
STOPPROGRAM StopProgram;
GETCURRENTPOSITION GetCurrentPosition;
END End;
SERVER_ON Server_ON;
SERVER_OFF Server_OFF;
SETSPEED SetSpeed;
WRITEPOSITIONDATA Write_Position_data;
void Start_Robot();
long ExecuteProgram_Robot(CString csData,int Method);
long StopRrogram_Robot();
CString GetCurrentPosition_Robot();
void End_Robot();
long ServerON_Robot();
long ServerOFF_Robot();
long SetSpeed_Robot(CString sdata);
long WritePosition_Robot(CString Position,CString ProgName,CString ProgNumber);
void InitDll();
};
@@ -71,9 +71,7 @@ BOOL CSo7_Util_PLC_TCPIP::OnInitDialog()
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
m_IPAddress.SetAddress(192,168,0,5);
GetDlgItem(IDC_EDIT__PLC_TCPIP_PORTNUMBER)->SetWindowText(_T("9600"));
OpenINI();
UpdateData(FALSE);
@@ -156,7 +154,7 @@ void CSo7_Util_PLC_TCPIP::OnBnClickedButtonPlcTcpipWrite()
GetDlgItem(IDC_EDIT_PLC_TCPIP_DATA_SIZE)->GetWindowText(str);
cTempValue=T2A(str);
int sSize=(atoi(cTempValue));
short* _Data=new short[sSize];
for(int i=0;i<sSize;i++)
{
@@ -178,9 +176,83 @@ void CSo7_Util_PLC_TCPIP::OnBnClickedButtonPlcTcpipClearMsg()
void CSo7_Util_PLC_TCPIP::OnBnClickedCancel()
{
// TODO: 在此添加控件通知处理程序代码
SaveINI();
CDialog::OnCancel();
}
//******************************************************************************
void CSo7_Util_PLC_TCPIP::GetAppPath(CString &Path)
{
Path=_T(""); // Speed optimization - noticed slow in GlowCode
if (Path.IsEmpty())
{
CString tmpPath;
GetModuleFileName(NULL,tmpPath.GetBuffer(255),255);
tmpPath.ReleaseBuffer();
tmpPath.TrimRight();
int nLastSlash = tmpPath.ReverseFind('\\');
if (nLastSlash >= 0)
tmpPath = tmpPath.Left(nLastSlash);
else
tmpPath.Empty();
Path=tmpPath;
}
};
//=====================================================================================
void CSo7_Util_PLC_TCPIP::SaveINI()
{
UpdateData(TRUE);
USES_CONVERSION;
CString csAppPath;
GetAppPath(csAppPath);
CString cFileName=csAppPath+_T("\\UtilityGui.ini");
CString csTmp;
in_addr IPAddress;
m_IPAddress.GetAddress(IPAddress.S_un.S_un_b.s_b1,IPAddress.S_un.S_un_b.s_b2,IPAddress.S_un.S_un_b.s_b3,IPAddress.S_un.S_un_b.s_b4);
csTmp.Format(_T("%d.%d.%d.%d"),
IPAddress.S_un.S_un_b.s_b1,IPAddress.S_un.S_un_b.s_b2,
IPAddress.S_un.S_un_b.s_b3,IPAddress.S_un.S_un_b.s_b4);
::WritePrivateProfileString(_T("GUI_TCPIP_CLIENT"),_T("SERVER_IP"),csTmp,cFileName);
GetDlgItem(IDC_EDIT__PLC_TCPIP_PORTNUMBER)->GetWindowText(csTmp);
::WritePrivateProfileString(_T("GUI_TCPIP_CLIENT"),_T("SERVER_PORT_NUMBER"),csTmp,cFileName);
GetDlgItem(IDC_EDIT_PLC_TCPIP_ADDR)->GetWindowText(csTmp);
::WritePrivateProfileString(_T("GUI_TCPIP_CLIENT"),_T("SERVER_ADDR"),csTmp,cFileName);
GetDlgItem(IDC_EDIT_PLC_TCPIP_Data)->GetWindowText(csTmp);
::WritePrivateProfileString(_T("GUI_TCPIP_CLIENT"),_T("SERVER_DATA"),csTmp,cFileName);
GetDlgItem(IDC_EDIT_PLC_TCPIP_DATA_SIZE)->GetWindowText(csTmp);
::WritePrivateProfileString(_T("GUI_TCPIP_CLIENT"),_T("SERVER_DATA_SIZE"),csTmp,cFileName);
}
//=====================================================================================
void CSo7_Util_PLC_TCPIP::OpenINI()
{
USES_CONVERSION;
CString csAppPath;
GetAppPath(csAppPath);
CString cFileName=csAppPath+_T("\\UtilityGui.ini");
CString csTmp;
const int max_length=255;
::GetPrivateProfileString(_T("GUI_TCPIP_CLIENT"),_T("SERVER_IP"),_T("192.168.110.50"),csTmp.GetBuffer(max_length),max_length,cFileName);
csTmp.ReleaseBuffer();
const char* cTmp=T2A(csTmp);
in_addr IPAddress;
IPAddress.S_un.S_addr=inet_addr(cTmp);
m_IPAddress.SetAddress(IPAddress.S_un.S_un_b.s_b1,IPAddress.S_un.S_un_b.s_b2,IPAddress.S_un.S_un_b.s_b3,IPAddress.S_un.S_un_b.s_b4);
::GetPrivateProfileString(_T("GUI_TCPIP_CLIENT"),_T("SERVER_PORT_NUMBER"),_T("8501"),csTmp.GetBuffer(max_length),max_length,cFileName);
csTmp.ReleaseBuffer();
GetDlgItem(IDC_EDIT__PLC_TCPIP_PORTNUMBER)->SetWindowText(csTmp);
::GetPrivateProfileString(_T("GUI_TCPIP_CLIENT"),_T("SERVER_ADDR"),_T("8000"),csTmp.GetBuffer(max_length),max_length,cFileName);
csTmp.ReleaseBuffer();
GetDlgItem(IDC_EDIT_PLC_TCPIP_ADDR)->SetWindowText(csTmp);
::GetPrivateProfileString(_T("GUI_TCPIP_CLIENT"),_T("SERVER_DATA"),_T("10"),csTmp.GetBuffer(max_length),max_length,cFileName);
csTmp.ReleaseBuffer();
GetDlgItem(IDC_EDIT_PLC_TCPIP_Data)->SetWindowText(csTmp);
::GetPrivateProfileString(_T("GUI_TCPIP_CLIENT"),_T("SERVER_DATA_SIZE"),_T("10"),csTmp.GetBuffer(max_length),max_length,cFileName);
csTmp.ReleaseBuffer();
GetDlgItem(IDC_EDIT_PLC_TCPIP_DATA_SIZE)->SetWindowText(csTmp);
}
//=====================================================================================
//Print message on edit control
void CSo7_Util_PLC_TCPIP::OutputWithScroll(const CString &strNewText,CEdit &edtOutput)
@@ -229,8 +301,13 @@ LRESULT CSo7_Util_PLC_TCPIP::OnTCPIPRecv(WPARAM w, LPARAM p)
{
if (g_pSo7_TCPIP)
{
CString csTmp;
m_csMSG=_T("");
#ifdef PLC_KEYENCE
CStringA csaStr;
csaStr.Format(("<< %s"),g_pSo7_TCPIP->m_TCPIPBuf[CH_RECV]._buffer);
m_csMSG=csaStr;
#else
CString csTmp;
int iDataSize(0);
iDataSize=g_pSo7_TCPIP->m_TCPIPData.s_recv_data._DataSize;
m_csMSG.Format(_T("<< Read status:%d;DataSize:%d;Data:"),g_pSo7_TCPIP->m_TCPIPData.s_status._ReadDataCompleted,iDataSize);
@@ -241,6 +318,7 @@ LRESULT CSo7_Util_PLC_TCPIP::OnTCPIPRecv(WPARAM w, LPARAM p)
csTmp.Format(_T("%d,"),iTmp);
m_csMSG+=csTmp;
}
#endif
OutputWithScroll(m_csMSG,m_edMSG);
m_csMSG=_T("[Read]");
}
@@ -269,12 +347,15 @@ LRESULT CSo7_Util_PLC_TCPIP::OnTCPIPRecv(WPARAM w, LPARAM p)
m_csMSG+=csTmp;
csTmp.Format(_T("RecvSize:%d;"),g_pSo7_TCPIP->m_TCPIPBuf[CH_RECV]._size);
m_csMSG+=csTmp;
#ifdef PLC_KEYENCE
#else
m_csMSG+=_T("RecvData:");
for (int i=0;i<g_pSo7_TCPIP->m_TCPIPBuf[CH_RECV]._size;i++)
{
csTmp.Format(_T("0x%02X "),static_cast<BYTE>(g_pSo7_TCPIP->m_TCPIPBuf[CH_RECV]._buffer[i]));
m_csMSG+=csTmp;
}
#endif
}
m_csMSG+=_T(".");
OutputWithScroll(m_csMSG,m_edMSG);
@@ -19,6 +19,10 @@ protected:
void OutputWithScroll(const CString &strNewText,CEdit &edtOutput);
virtual BOOL OnInitDialog();
DECLARE_MESSAGE_MAP()
private:
void GetAppPath(CString &Path);
void SaveINI();
void OpenINI();
public:
CIPAddressCtrl m_IPAddress;
CString m_csMSG;
File diff suppressed because it is too large Load Diff
@@ -33,7 +33,63 @@ protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
virtual BOOL OnInitDialog();
DECLARE_MESSAGE_MAP()
protected:
static unsigned __stdcall m_Thread(LPVOID pThis) ;
static HANDLE m_Thread_Id;
static HANDLE m_Thread_Mutex;
static HANDLE m_hTriggerEvent;
static int m_Thread_State;
static HANDLE m_hEvent_DimeHandle;
static HANDLE m_hEvent_GaussHandle;
static unsigned __stdcall m_Thread_Dime(LPVOID pThis) ;
static HANDLE m_Thread_Dime_Id;
static HANDLE m_Thread_Dime_Mutex;
static HANDLE m_hTriggerEvent_Dime;
static int m_Thread_Dime_State;
static unsigned __stdcall m_Thread_Gauss(LPVOID pThis) ;
static HANDLE m_Thread_Gauss_Id;
static HANDLE m_Thread_Gauss_Mutex;
static HANDLE m_hTriggerEvent_Gauss;
static int m_Thread_Gauss_State;
static unsigned __stdcall m_Thread_Weighing(LPVOID pThis) ;
static HANDLE m_Thread_Weighing_Id;
static HANDLE m_Thread_Weighing_Mutex;
static HANDLE m_hTriggerEvent_Weighing;
static int m_Thread_Weighing_State;
void CreateThread();
void CloseThread();
bool m_IsRuningCNC;
bool SaveCSVFile(const CString& _aStr);
bool ReadCSVFile(const CString& _aStr);
int iStartRow,iEndRow;
BOOL m_bEnableLog;
int m_iProjectNo;
void m_Init();
int m_iUploadProducts;
int m_iDownloadProducts;
int m_iMeasureProducts;
int m_iMeasureTransferProducts;
int m_iGaussMeasureProducts;
int m_iGaussMeasureTransferProducts;
int m_iWeighingMeasureProducts;
bool m_bFirstMeasure;
void AutoTest();
void AutoTest583584();
void AutoTest598603();
void CCDMock598603();
void TrigMSTest();
void DimenMeasure();
void GaussMeasure();
void WeighingMeasure();
public:
afx_msg void OnBnClickedButtonPlcTcpipServerStart();
afx_msg void OnBnClickedButtonPlcTcpipServerStop();
afx_msg void OnBnClickedButtonPlcTcpipServerUpdatestate();
@@ -49,10 +105,20 @@ public:
void m_UpdateListControl(int _type);
void m_UpdateControls(int _type);
CString TCPIPMsg(s_tcpip_msg_data _Type);
afx_msg void OnTimer(UINT_PTR nIDEvent);
afx_msg void OnBnClickedRadioPlcTcpipServerAddrCcdDm();
afx_msg void OnBnClickedRadioPlcTcpipServerAddrDm5000();
afx_msg void OnBnClickedRadioPlcTcpipServerAddrDm8000();
afx_msg void OnBnClickedRadioPlcTcpipServerAddrDm200();
afx_msg void OnBnClickedButtonPlcTcpipServerUpdatestateDm200();
afx_msg void OnBnClickedButtonPlcTcpipServerAutotest();
afx_msg void OnBnClickedButtonPlcTcpipServerImport();
afx_msg void OnBnClickedButtonPlcTcpipServerExport();
afx_msg void OnBnClickedButtonPlcTcpipServerAutotest2();
afx_msg void OnBnClickedButtonPlcTcpipServerAutotest3();
afx_msg void OnBnClickedButtonPlcTcpipServerGaussTest();
afx_msg void OnBnClickedCheckMsgLogEnable();
afx_msg void OnBnClickedRadioProject598603();
afx_msg void OnBnClickedRadioProject583584();
};
@@ -9,6 +9,7 @@
#include "..\..\..\SevenOcean\Program\CSO7_CMD.H"
#include "..\..\..\SevenOcean\Program\So7_CNC_Point.h"
#include "..\..\..\SevenOcean\Program\So7_CNC_Program.h"
#include "..\..\..\SevenOcean\Program\CPOINT3.H"
#include "So7_Util_Program.h"
#include "afxdialogex.h"
@@ -16,6 +17,8 @@
#define THREAD_RUNNING_STATE 0
#define THREAD_PAUSED 1
#define THREAD_EXIT -1
const int MAX_COLS=305;
const int MAX_ROWS=500;
HANDLE CSo7_Util_Program::m_Thread_Id=NULL;
HANDLE CSo7_Util_Program::m_Thread_Mutex=NULL;
@@ -29,11 +32,11 @@ CSo7_CNC_Program* m_pSo7_CNC_Program=NULL;
IMPLEMENT_DYNAMIC(CSo7_Util_Program, CDialog)
CSo7_Util_Program::CSo7_Util_Program(CWnd* pParent /*=NULL*/)
: CDialog(CSo7_Util_Program::IDD, pParent)
CSo7_Util_Program::CSo7_Util_Program(CWnd* pParent /*=NULL*/)
: CDialog(CSo7_Util_Program::IDD, pParent)
{
m_RptCol=1;
m_RptRow=0;
m_RptRowMax=m_RptRow=0;
m_RptColMax=m_RptCol=4;
m_bSetZeroX=FALSE;
m_bSetZeroY=FALSE;
m_bSetZeroZ=FALSE;
@@ -42,6 +45,7 @@ CSo7_Util_Program::CSo7_Util_Program(CWnd* pParent /*=NULL*/)
m_FinishTime=0;
m_duration=0.0;
m_RuningCNCTimes=1;
m_deadband=0.01;
m_IntervalTimePerCNC=0;
}
@@ -51,22 +55,22 @@ CSo7_Util_Program::~CSo7_Util_Program()
void CSo7_Util_Program::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT_READOUT_X, m_csXPos);
DDX_Text(pDX, IDC_EDIT_READOUT_Y, m_csYPos);
DDX_Text(pDX, IDC_EDIT_READOUT_Z, m_csZPos);
DDX_Text(pDX, IDC_EDIT_READOUT_X, m_csXPos);
DDX_Text(pDX, IDC_EDIT_READOUT_Y, m_csYPos);
DDX_Text(pDX, IDC_EDIT_READOUT_Z, m_csZPos);
DDX_Control(pDX, IDC_LIST_REPORT_OUTPUT, m_RptListCtrl);
DDX_Control(pDX, IDC_LIST_REPORT_OUTPUT, m_RptListCtrl);
DDX_Control(pDX, IDC_EDIT_SO7_PROGRAM_MSG_OUTPUT, m_edMSG);
DDX_Control(pDX, IDC_EDIT_SO7_PROGRAM_MSG_OUTPUT, m_edMSG);
DDX_Control(pDX, IDC_MFCBUTTON_SO7_PROGRAM_X_LEFT, m_Button_MoveX_Left);
DDX_Control(pDX, IDC_MFCBUTTON_SO7_PROGRAM_X_RIGHT, m_Button_MoveX_Right);
DDX_Control(pDX, IDC_MFCBUTTON_SO7_PROGRAM_Y_FRONTWARD, m_Button_MoveY_Front);
DDX_Control(pDX, IDC_MFCBUTTON_SO7_PROGRAM_Y_BACKWARD, m_Button_MoveY_Back);
DDX_Control(pDX, IDC_MFCBUTTON_SO7_PROGRAM_Z_UP, m_Button_MoveZ_Up);
DDX_Control(pDX, IDC_MFCBUTTON_SO7_PROGRAM_Z_DOWN, m_Button_MoveZ_Down);
DDX_Control(pDX, IDC_MFCBUTTON_SO7_PROGRAM_X_LEFT, m_Button_MoveX_Left);
DDX_Control(pDX, IDC_MFCBUTTON_SO7_PROGRAM_X_RIGHT, m_Button_MoveX_Right);
DDX_Control(pDX, IDC_MFCBUTTON_SO7_PROGRAM_Y_FRONTWARD, m_Button_MoveY_Front);
DDX_Control(pDX, IDC_MFCBUTTON_SO7_PROGRAM_Y_BACKWARD, m_Button_MoveY_Back);
DDX_Control(pDX, IDC_MFCBUTTON_SO7_PROGRAM_Z_UP, m_Button_MoveZ_Up);
DDX_Control(pDX, IDC_MFCBUTTON_SO7_PROGRAM_Z_DOWN, m_Button_MoveZ_Down);
}
@@ -93,6 +97,10 @@ BEGIN_MESSAGE_MAP(CSo7_Util_Program, CDialog)
ON_EN_KILLFOCUS(IDC_EDIT_SO7_PROGEAM_CNC_RUING_TIMES, &CSo7_Util_Program::OnEnKillfocusEditSo7ProgeamCncRuingTimes)
ON_BN_CLICKED(IDC_CHECK_SO7_RUNING_PROGRAM_RUNING_INFINITE, &CSo7_Util_Program::OnBnClickedCheckSo7RuningProgramRuningInfinite)
ON_EN_KILLFOCUS(IDC_EDIT_SO7_PROGEAM_INTERCAL_TIME_PER_CNC, &CSo7_Util_Program::OnEnKillfocusEditSo7ProgeamIntercalTimePerCnc)
ON_BN_CLICKED(IDC_BUTTON_PROGRAM_CLEAR_LOG, &CSo7_Util_Program::OnBnClickedButtonProgramClearLog)
ON_BN_CLICKED(IDC_BUTTON_PROGRAM_EXPORT, &CSo7_Util_Program::OnBnClickedButtonProgramExport)
ON_EN_KILLFOCUS(IDC_EDIT_SO7_PROGRAM_DEADBAND, &CSo7_Util_Program::OnEnKillfocusEditSo7ProgramDeadband)
ON_BN_CLICKED(IDC_BUTTON_SO7_PROGRAM_MOVETO_POINT, &CSo7_Util_Program::OnBnClickedButtonSo7ProgramMovetoPoint)
END_MESSAGE_MAP()
@@ -120,12 +128,13 @@ BOOL CSo7_Util_Program::OnInitDialog()
(GetDlgItem(IDC_EDIT_SO7_PROGEAM_CNC_RUING_TIMES))->SetWindowTextW(_T("1"));
(GetDlgItem(IDC_EDIT_SO7_PROGEAM_INTERCAL_TIME_PER_CNC))->SetWindowTextW(_T("0"));
((CButton *)GetDlgItem(IDC_RADIO_SO7_PROGRAM_MOVE))->SetCheck(1);
((CButton *)GetDlgItem(IIDC_RADIO_SO7_PROGRAM_MOVE_TO))->SetCheck(0);
(GetDlgItem(IDC_EDIT_SO7_PROGRAM_X_MOVETO))->SetWindowTextW(_T("10"));
(GetDlgItem(IDC_EDIT_SO7_PROGRAM_Y_MOVETO))->SetWindowTextW(_T("10"));
(GetDlgItem(IDC_EDIT_SO7_PROGRAM_Z_MOVETO))->SetWindowTextW(_T("10"));
(GetDlgItem(IDC_EDIT_SO7_PROGRAM_DEADBAND))->SetWindowTextW(_T("0.01"));
m_Readout_Font.CreatePointFont(180,_T("Arial")) ;
@@ -140,20 +149,25 @@ BOOL CSo7_Util_Program::OnInitDialog()
{
int ColWidth(30);
m_RptListCtrl.InsertColumn(0, _T("NO."), LVCFMT_LEFT, ColWidth);
ColWidth+=40;
ColWidth=80;
m_RptListCtrl.InsertColumn(1, _T("Start Time"), LVCFMT_LEFT, ColWidth);
ColWidth+=30;
ColWidth=80;
m_RptListCtrl.InsertColumn(2, _T("End Time"), LVCFMT_LEFT, ColWidth);
ColWidth+=50;
ColWidth=100;
m_RptListCtrl.InsertColumn(3, _T("Elapsed Time(s)"), LVCFMT_LEFT,ColWidth);
ColWidth+=30;
m_RptListCtrl.InsertColumn(4, _T(" "), LVCFMT_LEFT,ColWidth);
ColWidth+=30;
m_RptListCtrl.InsertColumn(5, _T(" "), LVCFMT_LEFT,ColWidth);
ColWidth+=145;
m_RptListCtrl.InsertColumn(6, _T(" "), LVCFMT_LEFT,ColWidth);
ColWidth=80;
for (int iCol=4;iCol<MAX_COLS;iCol+=3)
{
CString str;
str.Format(_T("P%d X"), (iCol-4)/3+1);
m_RptListCtrl.InsertColumn(iCol,str, LVCFMT_LEFT,ColWidth);
str.Format(_T("P%d Y"), (iCol-4)/3+1);
m_RptListCtrl.InsertColumn(iCol+1,str, LVCFMT_LEFT,ColWidth);
str.Format(_T("P%d Z"), (iCol-4)/3+1);
m_RptListCtrl.InsertColumn(iCol+2,str, LVCFMT_LEFT,ColWidth);
}
for (int i = 1; i < 1000; i++)
for (int i = 1; i < MAX_ROWS; i++)
{
CString str;
str.Format(_T("%d"), i);
@@ -357,6 +371,7 @@ void CSo7_Util_Program::OnBnClickedButtonSo7ProgramAddCncProgram()
m_pnt.z=m_pSO7_Proto->g_machine.z._d_cur_pos_;
CSo7_CNC_Point *pCncPnt =new CSo7_CNC_Point(m_pnt);
m_pSo7_CNC_Program->AddCncStep(pCncPnt);
UpdateCncList();
m_OutMessage.Format(_T("[Pro No%d]X:%3.4f,Y:%3.4f,Z:%3.4f"),m_pSo7_CNC_Program->m_Program_Number, m_pnt.x, m_pnt.y, m_pnt.z);
OutputWithScroll(m_OutMessage,m_edMSG);
}
@@ -364,6 +379,7 @@ void CSo7_Util_Program::OnBnClickedButtonSo7ProgramAddCncProgram()
void CSo7_Util_Program::OnBnClickedButtonSo7ProgramNewCnc()
{
m_pSo7_CNC_Program->RemoveAll();
UpdateCncList();
OutputWithScroll(_T("Remove all cnc program."),m_edMSG);
}
//===================================================
@@ -387,14 +403,14 @@ void CSo7_Util_Program::OnBnClickedButtonSo7ProgramOpenCnc()
m_pSo7_CNC_Program->m_CNC_element[i]->GetPoint(0,0,0,NULL,m_pnt);
CString csType=m_pSo7_CNC_Program->GetEntityName(iType);
m_OutMessage.Format(_T("[No.%d] X:%3.4f,Y:%3.4f,Z:%3.4f"),
m_pSo7_CNC_Program->m_CNC_element[i]->m_ID,
m_pnt.x, m_pnt.y, m_pnt.z
);
m_pSo7_CNC_Program->m_CNC_element[i]->m_ID,
m_pnt.x, m_pnt.y, m_pnt.z
);
m_OutMessage=_T("Add ")+csType+m_OutMessage;
OutputWithScroll(m_OutMessage,m_edMSG);
}
}
delete fileDialog;
UpdateCncList();
}
//===================================================
void CSo7_Util_Program::OnBnClickedButtonSo7ProgramSaveCncFile()
@@ -406,14 +422,13 @@ void CSo7_Util_Program::OnBnClickedButtonSo7ProgramSaveCncFile()
CFileDialog fdlg(FALSE,_T("Prog"),PathName,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilter);
if( fdlg.DoModal()==IDOK)
if(fdlg.DoModal()==IDOK)
{
m_pSo7_CNC_Program->m_CncProgFileName=fdlg.GetPathName();
m_pSo7_CNC_Program->Save();
m_OutMessage=_T("CNC Program has been saved to[")+m_pSo7_CNC_Program->m_CncProgFileName+_T("].");
OutputWithScroll(m_OutMessage,m_edMSG);
}
delete fdlg;
}
//===================================================
void CSo7_Util_Program::OnEnKillfocusEditSo7ProgeamCncRuingTimes()
@@ -425,15 +440,26 @@ void CSo7_Util_Program::OnEnKillfocusEditSo7ProgeamCncRuingTimes()
const char* cTmp=T2A(csTmp);
m_RuningCNCTimes =static_cast<unsigned int>( atoi(cTmp));
}
//===================================================
void CSo7_Util_Program::OnEnKillfocusEditSo7ProgramDeadband()
{
UpdateData(TRUE);
USES_CONVERSION;
CString csTmp;
(GetDlgItem(IDC_EDIT_SO7_PROGRAM_DEADBAND))->GetWindowText(csTmp);
const char* cTmp=T2A(csTmp);
m_deadband =static_cast<unsigned int>( atoi(cTmp));
}
//===================================================
void CSo7_Util_Program::OnEnKillfocusEditSo7ProgeamIntercalTimePerCnc()
{
UpdateData(TRUE);
USES_CONVERSION;
CString csTmp;
(GetDlgItem(IDC_EDIT_SO7_PROGEAM_INTERCAL_TIME_PER_CNC))->GetWindowText(csTmp);
const char* cTmp=T2A(csTmp);
m_IntervalTimePerCNC =static_cast<unsigned int>( atoi(cTmp));
UpdateData(TRUE);
USES_CONVERSION;
CString csTmp;
(GetDlgItem(IDC_EDIT_SO7_PROGEAM_INTERCAL_TIME_PER_CNC))->GetWindowText(csTmp);
const char* cTmp=T2A(csTmp);
m_IntervalTimePerCNC =static_cast<unsigned int>( atoi(cTmp));
}
//===================================================
@@ -473,6 +499,19 @@ void CSo7_Util_Program::OnBnClickedButtonSo7ProgramRunCnc()
SetEvent(m_hTriggerEvent);
}
}
void CSo7_Util_Program::OnBnClickedButtonProgramClearLog()
{
m_edMSG.SetWindowTextW(_T(""));
for (int iRow=1; iRow<=m_RptRowMax; iRow++)
{
for (int iCol=1; iCol<=m_RptColMax; iCol++)
{
m_RptListCtrl.SetItemText(iRow,iCol,_T(""));
}
}
m_RptRowMax=m_RptRow=0;
m_RptColMax=m_RptCol=4;
}
//===================================================
void CSo7_Util_Program::UpdateCNCCtrl(BOOL _IsRuningCNC)
{
@@ -492,46 +531,100 @@ void CSo7_Util_Program::UpdateCNCCtrl(BOOL _IsRuningCNC)
}
//===================================================
void CSo7_Util_Program::UpdateCncList(int type)
{
UNREFERENCED_PARAMETER(type);
((CComboBox*)(GetDlgItem(IDC_COMBO_SO7_PROGRAM_CNCLIST)))->ResetContent();
for(int id=0;id<m_pSo7_CNC_Program->m_Program_Number;id++)
{
CString csStr;
csStr.Format(_T("Pnt-%d"),id+1);
((CComboBox*)(GetDlgItem(IDC_COMBO_SO7_PROGRAM_CNCLIST)))->InsertString(id,csStr);
}
if (m_pSo7_CNC_Program->m_Program_Number>0)
{
((CComboBox*)(GetDlgItem(IDC_COMBO_SO7_PROGRAM_CNCLIST)))->SetCurSel(m_pSo7_CNC_Program->m_Program_Number-1);
}
}
//===================================================
BOOL CSo7_Util_Program::RunCNC()
{
WaitForSingleObject(m_Thread_Mutex, INFINITE);
SYSTEMTIME st;
CString csTime;
CString csStr;
unsigned int iRuningCNC(0);
m_RptCol=4;
m_RptListCtrl.SetItemText(m_RptRow,1,_T("Theoretical"));
for(int id=0;id<m_pSo7_CNC_Program->m_Program_Number;id++)
{
CPoint3 m_pnt;
m_pSo7_CNC_Program->m_CNC_element.at(id)->GetPoint(0,0,0,NULL,m_pnt);
csStr.Format(_T("%8.4lf"), m_pnt.x);
m_RptListCtrl.SetItemText(m_RptRow,m_RptCol++,csStr);
csStr.Format(_T("%8.4lf"), m_pnt.y);
m_RptListCtrl.SetItemText(m_RptRow,m_RptCol++,csStr);
csStr.Format(_T("%8.4lf"), m_pnt.z);
m_RptListCtrl.SetItemText(m_RptRow,m_RptCol++,csStr);
}
m_RptRow++;
while(m_IsRuningCNC &&(iRuningCNC<m_RuningCNCTimes))
{
m_RuningCNCIndex=0;
GetLocalTime(&st);
csTime.Format(_T("%02d:%02d:%02d"),st.wHour,st.wMinute,st.wSecond);
m_RptListCtrl.SetItemText(m_RptRow,1,csTime);
csStr.Format(_T("%02d:%02d:%02d"),st.wHour,st.wMinute,st.wSecond);
m_RptListCtrl.SetItemText(m_RptRow,1,csStr);
m_StartTime=clock();
m_RptCol=4;
while (m_IsRuningCNC &&(m_RuningCNCIndex<m_pSo7_CNC_Program->m_Program_Number))
{
m_OutMessage.Format(_T("[Runing]%d/%d"),m_RuningCNCIndex+1,m_pSo7_CNC_Program->m_Program_Number);
m_OutMessage.Format(_T("[Runing][%d] %d/%d"),iRuningCNC,m_RuningCNCIndex+1,m_pSo7_CNC_Program->m_Program_Number);
OutputWithScroll(m_OutMessage,m_edMSG);
CPoint3 m_pnt;
m_pSo7_CNC_Program->m_CNC_element.at(m_RuningCNCIndex)->GetPoint(0,0,0,NULL,m_pnt);
m_pSO7_Proto->so7_motion_set_position_xyz(m_pnt.x,m_pnt.y,m_pnt.z,true);
m_RuningCNCIndex++;
Sleep(m_IntervalTimePerCNC);
CPoint3 m_curPnt;
m_pSO7_Proto->so7_motion_get_position_xyz(m_curPnt.x,m_curPnt.y,m_curPnt.z);
csStr.Format(_T("%8.4lf"), m_curPnt.x);
m_RptListCtrl.SetItemText(m_RptRow,m_RptCol++,csStr);
csStr.Format(_T("%8.4lf"), m_curPnt.y);
m_RptListCtrl.SetItemText(m_RptRow,m_RptCol++,csStr);
csStr.Format(_T("%8.4lf"), m_curPnt.z);
m_RptListCtrl.SetItemText(m_RptRow,m_RptCol++,csStr);
if (m_RptCol>m_RptColMax)
{
m_RptColMax=m_RptCol;
}
if (!CompareDeadband(m_pnt,m_curPnt))
{
m_IsRuningCNC=FALSE;
break;
}
}
if (m_IsRuningCNC)
{
m_FinishTime=clock();
m_duration=static_cast<double>(m_FinishTime-m_StartTime);
csTime.Format(_T("%3.4f"),(m_duration/1000.0));
m_RptListCtrl.SetItemText(m_RptRow,3,csTime);
csStr.Format(_T("%3.4f"),(m_duration/1000.0));
m_RptListCtrl.SetItemText(m_RptRow,3,csStr);
GetLocalTime(&st);
csTime.Format(_T("%02d:%02d:%02d"),st.wHour,st.wMinute,st.wSecond);
m_RptListCtrl.SetItemText(m_RptRow,2,csTime);
csStr.Format(_T("%02d:%02d:%02d"),st.wHour,st.wMinute,st.wSecond);
m_RptListCtrl.SetItemText(m_RptRow,2,csStr);
m_OutMessage=_T("--Run CNC Finished--");
OutputWithScroll(m_OutMessage,m_edMSG);
m_RptRow++;
if (m_RptRow>m_RptRowMax)
{
m_RptRowMax=m_RptRow;
}
m_RptListCtrl.SetFocus();
m_RptListCtrl.EnsureVisible(m_RptRow,FALSE);
iRuningCNC++;
Sleep(m_IntervalTimePerCNC);
}
else
{
@@ -549,6 +642,31 @@ BOOL CSo7_Util_Program::RunCNC()
return TRUE;
}
//================================================================================================
bool CSo7_Util_Program::CompareDeadband(CPoint3 _TheoPnt,CPoint3 _ActPnt)
{
bool rStatus(true);
if (fabs(_TheoPnt.x-_ActPnt.x)>m_deadband)
{
rStatus=false;
m_OutMessage.Format(_T("!Err x(Theo:%.4f,Actual:%.4f)"),_TheoPnt.x,_ActPnt.x);
OutputWithScroll(m_OutMessage,m_edMSG);
}
if (fabs(_TheoPnt.y-_ActPnt.y)>m_deadband)
{
rStatus=false;
m_OutMessage.Format(_T("!Err y(Theo:%.4f,Actual:%.4f)"),_TheoPnt.y,_ActPnt.y);
OutputWithScroll(m_OutMessage,m_edMSG);
}
if (fabs(_TheoPnt.z-_ActPnt.z)>m_deadband)
{
rStatus=false;
m_OutMessage.Format(_T("!Err z(Theo:%.4f,Actual:%.4f)"),_TheoPnt.z,_ActPnt.z);
OutputWithScroll(m_OutMessage,m_edMSG);
}
return rStatus;
}
//================================================================================================
void CSo7_Util_Program::OnTimer(UINT_PTR nIDEvent)
{
@@ -663,6 +781,73 @@ void CSo7_Util_Program::OutputWithScroll(const CString &strNewText,CEdit &edtOut
edtOutput.SetWindowText(strOutput);
int iLine = edtOutput.GetLineCount();
edtOutput.LineScroll(iLine, 0);
edtOutput.SetSel(iCount, iCount);
edtOutput.SetRedraw(TRUE);
}
}
//---------------------------------------------------------------------------
void CSo7_Util_Program::OnBnClickedButtonProgramExport()
{
CString csCsvFile=_T("Report");
CString szFilter=_T("CSV Files(*.csv)|*.csv|ALL Files(*.*)|*.*||");
CFileDialog fileDialog(FALSE,_T("CSV"),csCsvFile,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilter);
if(fileDialog.DoModal()==IDOK)
{
csCsvFile=fileDialog.GetPathName();
SaveCSVFile(csCsvFile);
m_OutMessage=_T("<Csv> Export:")+csCsvFile;
OutputWithScroll(m_OutMessage,m_edMSG);
}
}
//---------------------------------------------------------------------------
bool CSo7_Util_Program::SaveCSVFile(const CString& _aStr)
{
bool rStatus(false);
CString aStr;
char *outBuff = NULL;
FILE* iFileHandle= NULL;
_wfopen_s(&iFileHandle, _aStr, _T("wt"));
USES_CONVERSION;
if(iFileHandle)
{
for(int iRow=0;iRow<=m_RptRowMax;iRow++)
{
aStr="";
for(int iCol=0;iCol<=m_RptColMax;iCol++)
{
aStr=m_RptListCtrl.GetItemText(iRow,iCol);
aStr+=",";
outBuff=T2A(aStr);
aStr.ReleaseBuffer();
fprintf(iFileHandle,"%s", outBuff);
}
aStr="\n";
outBuff=T2A(aStr);
fprintf(iFileHandle,"%s", outBuff);
}
fclose(iFileHandle);
rStatus=true;
}
return rStatus;
}
void CSo7_Util_Program::OnBnClickedButtonSo7ProgramMovetoPoint()
{
int CncIndex=((CComboBox *)GetDlgItem(IDC_COMBO_SO7_PROGRAM_CNCLIST))->GetCurSel();
if (CncIndex<m_pSo7_CNC_Program->m_Program_Number)
{
CPoint3 m_pnt;
m_pSo7_CNC_Program->m_CNC_element.at(CncIndex)->GetPoint(0,0,0,NULL,m_pnt);
m_pSO7_Proto->so7_motion_set_position_xyz(m_pnt.x,m_pnt.y,m_pnt.z,true);
m_OutMessage.Format(_T(">>MovetoPnt X:%8.4lf;Y:%8.4lf;Z:%8.4lf."),m_pnt.x,m_pnt.y,m_pnt.z);
CPoint3 m_curPnt;
m_pSO7_Proto->so7_motion_get_position_xyz(m_curPnt.x,m_curPnt.y,m_curPnt.z);
m_OutMessage.Format(_T("<<MoveDone X:%8.4lf;Y:%8.4lf;Z:%8.4lf."),m_curPnt.x,m_curPnt.y,m_curPnt.z);
CompareDeadband(m_pnt,m_curPnt);
OutputWithScroll(m_OutMessage,m_edMSG);
}
}
@@ -47,13 +47,17 @@ protected:
BOOL m_bSetZeroZ;
clock_t m_StartTime, m_FinishTime;
double m_duration;
double m_deadband;
unsigned int m_RuningCNCTimes;
unsigned int m_IntervalTimePerCNC;
BOOL m_IsRuningCNC;
int m_RuningCNCIndex;
int m_RptCol;
int m_RptRow;
int m_RptColMax;
int m_RptRowMax;
void UpdateCNCCtrl(BOOL _IsRuningCNC);
void UpdateCncList(int type=0);
void OutputWithScroll(const CString &strNewText,CEdit &edtOutput);
BOOL RunCNC(void);
protected:
@@ -63,6 +67,8 @@ protected:
static HANDLE m_hTriggerEvent;
static int m_Thread_State;
static BOOL m_bThread_Status;
bool SaveCSVFile(const CString& _aStr);
bool CompareDeadband(CPoint3 _TheoPnt,CPoint3 _ActPnt);
public:
afx_msg void OnBnClickedCancel();
afx_msg void OnBnClickedMfcbuttonSo7ProgramPlusSpeed();
@@ -83,4 +89,8 @@ public:
afx_msg void OnEnKillfocusEditSo7ProgeamCncRuingTimes();
afx_msg void OnBnClickedCheckSo7RuningProgramRuningInfinite();
afx_msg void OnEnKillfocusEditSo7ProgeamIntercalTimePerCnc();
afx_msg void OnBnClickedButtonProgramClearLog();
afx_msg void OnBnClickedButtonProgramExport();
afx_msg void OnEnKillfocusEditSo7ProgramDeadband();
afx_msg void OnBnClickedButtonSo7ProgramMovetoPoint();
};
@@ -5,7 +5,7 @@
#define XBTHREAD_RUNNING_STATE 0
#define XBTHREAD_EXIT -1
#pragma comment(lib, "XInput.lib")
#pragma comment(lib, "xinput9_1_0.lib")
enum EXBOX_MOVEXYZ_TYPE
{
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="DebugS07|Win32">
<Configuration>DebugS07</Configuration>
@@ -54,12 +54,14 @@
<UseOfMfc>Static</UseOfMfc>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
<PlatformToolset>v110</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseSO7|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseOfMfc>Static</UseOfMfc>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
<PlatformToolset>v110</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
@@ -73,17 +75,19 @@
<UseOfMfc>Dynamic</UseOfMfc>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
<PlatformToolset>v120</PlatformToolset>
<PlatformToolset>v110</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseOfMfc>Dynamic</UseOfMfc>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v110</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugS07|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseOfMfc>Dynamic</UseOfMfc>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v110</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
@@ -97,7 +101,9 @@
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Template|Win32'" />
<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Template|Win32'">
<PlatformToolset>v110</PlatformToolset>
</PropertyGroup>
<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Template|x64'">
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
@@ -206,7 +212,7 @@
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level4</WarningLevel>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
<TreatWarningAsError>true</TreatWarningAsError>
<TreatWarningAsError>false</TreatWarningAsError>
<ProgramDataBaseFileName>$(IntDir)vc$(ProjectName).pdb</ProgramDataBaseFileName>
<DisableSpecificWarnings>
</DisableSpecificWarnings>
@@ -323,7 +329,7 @@
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level4</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<TreatWarningAsError>true</TreatWarningAsError>
<TreatWarningAsError>false</TreatWarningAsError>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -427,6 +433,7 @@
<ClCompile Include="..\..\..\STIL\Common\src\cAcqEasy.cpp" />
<ClCompile Include="..\..\..\STIL\STIL_CCS_PRIMA_Laser.cpp" />
<ClCompile Include="..\..\..\Tesa\TesaStarE.cpp" />
<ClCompile Include="..\..\..\Videocard\MindVision\MindVision_GIGE_Camera.cpp" />
<ClCompile Include="..\LOGGER.CPP" />
<ClCompile Include="..\Proto_Util.cpp" />
<ClCompile Include="AboutDlg.cpp" />
@@ -435,6 +442,7 @@
<ClCompile Include="DirDialog.cpp" />
<ClCompile Include="DrawGraph.cpp" />
<ClCompile Include="EditableListCtrl.cpp" />
<ClCompile Include="EF1A_Manual_Machine.cpp" />
<ClCompile Include="FileUtilitiesDlg.cpp" />
<ClCompile Include="KeyenceLKH_Dlg.cpp" />
<ClCompile Include="KeyenceTM065_Dlg.cpp" />
@@ -455,16 +463,20 @@
<ClCompile Include="ProcessButton.cpp" />
<ClCompile Include="SetSo7MotionConfig.cpp" />
<ClCompile Include="Setup_so7config.cpp" />
<ClCompile Include="SO7OperateIODlg.cpp" />
<ClCompile Include="So7_Art_PCI8622.cpp" />
<ClCompile Include="SO7_Automatic_Zoom.cpp" />
<ClCompile Include="So7_Config_Pages.cpp" />
<ClCompile Include="So7_Keyence9011.cpp" />
<ClCompile Include="So7_Manual_Machine.cpp" />
<ClCompile Include="So7_Motion_Pages.cpp" />
<ClCompile Include="SO7_Move_Location.cpp" />
<ClCompile Include="So7_Option.cpp" />
<ClCompile Include="So7_Robot_Control.cpp" />
<ClCompile Include="SO7_Send_Parameter.cpp" />
<ClCompile Include="SO7_Temperature_Display.cpp" />
<ClCompile Include="So7_Temperature_Sensor.cpp" />
<ClCompile Include="So7_UseRobotDll.cpp" />
<ClCompile Include="SO7_UtilDlg.cpp" />
<ClCompile Include="So7_UtilUsbCtlR.cpp" />
<ClCompile Include="So7_Util_External_Trig.cpp" />
@@ -487,6 +499,7 @@
</ClCompile>
<ClCompile Include="STIL_CCS_PRIMA_Dlg.cpp" />
<ClCompile Include="TestTesaStarEDialog.cpp" />
<ClCompile Include="Videocard_Mindvision.cpp" />
<ClCompile Include="Videocard_MV900.cpp" />
<ClCompile Include="Videocard_SDK3000.cpp" />
<ClCompile Include="Videocard_SV2000E.cpp" />
@@ -525,6 +538,7 @@
<ClInclude Include="..\..\..\SevenOcean\So7_TCPIP_Server.h" />
<ClInclude Include="..\..\..\STIL\STIL_CCS_PRIMA_Laser.h" />
<ClInclude Include="..\..\..\Tesa\TesaStarE.h" />
<ClInclude Include="..\..\..\Videocard\MindVision\MindVision_GIGE_Camera.h" />
<ClInclude Include="..\..\..\Videocard\SDK3000\sdk3000_7130.h" />
<ClInclude Include="..\Proto_Util.h" />
<ClInclude Include="AboutDlg.h" />
@@ -533,7 +547,9 @@
<ClInclude Include="DirDialog.h" />
<ClInclude Include="DrawGraph.h" />
<ClInclude Include="EditableListCtrl.h" />
<ClInclude Include="EF1A_Manual_Machine.h" />
<ClInclude Include="FileUtilitiesDlg.h" />
<ClInclude Include="hidsdi.h" />
<ClInclude Include="KeyenceLKH_Dlg.h" />
<ClInclude Include="KeyenceTM065_Dlg.h" />
<ClInclude Include="Keyence_LKG5000_Ethernet.h" />
@@ -553,17 +569,22 @@
<ClInclude Include="ProcessButton.h" />
<ClInclude Include="Resource.h" />
<ClInclude Include="SetSo7MotionConfig.h" />
<ClInclude Include="SetupAPI.h" />
<ClInclude Include="Setup_so7config.h" />
<ClInclude Include="SO7OperateIODlg.h" />
<ClInclude Include="So7_Art_PCI8622.h" />
<ClInclude Include="SO7_Automatic_Zoom.h" />
<ClInclude Include="So7_Config_Pages.h" />
<ClInclude Include="So7_Keyence9011.h" />
<ClInclude Include="So7_Manual_Machine.h" />
<ClInclude Include="So7_Motion_Pages.h" />
<ClInclude Include="SO7_Move_Location.h" />
<ClInclude Include="So7_Option.h" />
<ClInclude Include="So7_Robot_Control.h" />
<ClInclude Include="SO7_Send_Parameter.h" />
<ClInclude Include="SO7_Temperature_Display.h" />
<ClInclude Include="So7_Temperature_Sensor.h" />
<ClInclude Include="So7_UseRobotDll.h" />
<ClInclude Include="SO7_UtilDlg.h" />
<ClInclude Include="So7_UtilUsbCtlR.h" />
<ClInclude Include="So7_Util_External_Trig.h" />
@@ -580,6 +601,7 @@
<ClInclude Include="targetver.h" />
<ClInclude Include="TestTesaStarEDialog.h" />
<ClInclude Include="VideoCardDefine.h" />
<ClInclude Include="Videocard_Mindvision.h" />
<ClInclude Include="Videocard_MV900.h" />
<ClInclude Include="Videocard_SDK3000.h" />
<ClInclude Include="Videocard_SV2000E.h" />
@@ -608,6 +630,10 @@
<ItemGroup>
<ResourceCompile Include="Mv_Util.rc" />
</ItemGroup>
<ItemGroup>
<Library Include="hid.lib" />
<Library Include="setupapi.lib" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
@@ -241,6 +241,25 @@
<ClCompile Include="SO7_Temperature_Display.cpp">
<Filter>Sources Files</Filter>
</ClCompile>
<ClCompile Include="So7_Keyence9011.cpp">
<Filter>Sources Files</Filter>
</ClCompile>
<ClCompile Include="So7_Robot_Control.cpp">
<Filter>Sources Files</Filter>
</ClCompile>
<ClCompile Include="So7_UseRobotDll.cpp">
<Filter>Sources Files</Filter>
</ClCompile>
<ClCompile Include="Videocard_Mindvision.cpp">
<Filter>Sources Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Videocard\MindVision\MindVision_GIGE_Camera.cpp">
<Filter>Sources Files</Filter>
</ClCompile>
<ClCompile Include="EF1A_Manual_Machine.cpp">
<Filter>EF1A_Controller</Filter>
</ClCompile>
<ClCompile Include="SO7OperateIODlg.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="CaptureDataDlg.h">
@@ -516,6 +535,31 @@
<ClInclude Include="SO7_Temperature_Display.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="So7_Keyence9011.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="Videocard_Mindvision.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="So7_Robot_Control.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="So7_UseRobotDll.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Videocard\MindVision\MindVision_GIGE_Camera.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="EF1A_Manual_Machine.h">
<Filter>EF1A_Controller</Filter>
</ClInclude>
<ClInclude Include="hidsdi.h">
<Filter>EF1A_Controller</Filter>
</ClInclude>
<ClInclude Include="SetupAPI.h">
<Filter>EF1A_Controller</Filter>
</ClInclude>
<ClInclude Include="SO7OperateIODlg.h" />
</ItemGroup>
<ItemGroup>
<None Include="ReadMe.txt" />
@@ -582,10 +626,21 @@
<Filter Include="Resource Files\ICO">
<UniqueIdentifier>{f1889d31-a64f-4163-af5f-c4408931dd8b}</UniqueIdentifier>
</Filter>
<Filter Include="EF1A_Controller">
<UniqueIdentifier>{a3c07e45-ce0a-4270-acb9-8bad6e2724b2}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="Mv_Util.rc">
<Filter>Resource Files</Filter>
</ResourceCompile>
</ItemGroup>
<ItemGroup>
<Library Include="hid.lib">
<Filter>EF1A_Controller</Filter>
</Library>
<Library Include="setupapi.lib">
<Filter>EF1A_Controller</Filter>
</Library>
</ItemGroup>
</Project>
@@ -3,4 +3,8 @@
<PropertyGroup>
<ShowAllFiles>false</ShowAllFiles>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugS07|Win32'">
<LocalDebuggerWorkingDirectory>$(TargetDir)</LocalDebuggerWorkingDirectory>
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
</PropertyGroup>
</Project>
@@ -1,11 +1,14 @@
#pragma once
#define WM_UPDATE_IMAGE WM_USER+100
//ת»»ÀàÐÍ
typedef enum{
RGB24TORGB = 0,
YUY2TORGB,
RGB24TOGRAY,
YUY2TOGRAY
YUY2TOGRAY,
RGB24TOBINARYZATION,
YUY2TOBINARYZATION
}ConvertColorType;
typedef struct Image_Buffer
@@ -10,13 +10,12 @@
#include "Videocard_MV900.h"
#include "afxdialogex.h"
#define WM_UPDATE_IMAGE WM_USER+100
static BYTE g_DataBuffer[768*576*3];
int m_VideoWidth=768;//640;
int m_VideoHeight=576;//480;
int m_VideoBitcount=3;
int m_DisplayWidth=640;
int m_DisplayHeight=480;
static int m_VideoWidth=768;//640;
static int m_VideoHeight=576;//480;
static int m_VideoBitcount=3;
static int m_DisplayWidth=640;
static int m_DisplayHeight=480;
// CVideocard_MV900 dialog
HWND Msg_Hwnd=NULL;
@@ -466,6 +465,7 @@ void CVideocard_MV900::OnPaint()
if (m_bSaveFile)
{
SaveBitmapToFile(pBitBmp,m_SaveFile);
DumpBin(m_SaveFile);
//CImage imgTemp;
//imgTemp.Attach(pBitBmp.operator HBITMAP());
//imgTemp.Save(m_SaveFile);
@@ -512,6 +512,31 @@ void CVideocard_MV900::UpdateImage()
OnPaint();
}
// ==========================================================================================
int CVideocard_MV900::DumpBin(CString lpFileName)
{
FILE* pOutFile;
unsigned long byte_pos = 0;
CString OutFileName =lpFileName+_T("_ASCII.txt");
_wfopen_s(&pOutFile, OutFileName, _T("wt"));
if (!pOutFile)
return -1;
for (int i=0;i<640*480*3;i+=32)
{
fprintf(pOutFile, "%8.8X : ", byte_pos);
for (int j = 0; j < 8; j++)
{
fprintf(pOutFile, "%2.2X %2.2X %2.2X %2.2X ", *(g_DataBuffer+i+j*4), *(g_DataBuffer+i+j*4+1), *(g_DataBuffer+i+j*4+2), *(g_DataBuffer+i+j*4+3));
};
fprintf(pOutFile, "\n");
byte_pos += 32;
}
fclose(pOutFile);
return 0;
}
afx_msg LRESULT CVideocard_MV900::OnUpdateImage(WPARAM wParam, LPARAM lParam)
{
UNREFERENCED_PARAMETER(wParam);
@@ -537,7 +562,8 @@ void CVideocard_MV900::OnTimer(UINT_PTR nIDEvent)
static int iStartX(64);
static int iStartY(48);
//==================================SV4000E=====================================
static BYTE m_pFrameBufferindex[640*480*3]={0};
//==================================MV900=====================================
VOID CALLBACK MV900_PrcVidCapCallBack(PUCHAR pData, ULONG Length,CVideocard_MV900* pIS)
{
UNREFERENCED_PARAMETER(Length);
@@ -549,6 +575,24 @@ VOID CALLBACK MV900_PrcVidCapCallBack(PUCHAR pData, ULONG Length,CVideocard_MV90
g_DataBuffer[(y-iStartY)*m_DisplayWidth*3+(x-iStartX*3)]=(BYTE)pData[y*m_VideoWidth*3+x];
}
}
long long iCnt(0);
long long iCnt1(0);
for (int i=0;i<640*480*3;i++)
{
if (g_DataBuffer[i]==0xff)
{
iCnt++;
}
else
{
m_pFrameBufferindex[iCnt1++]=g_DataBuffer[i];
}
}
TRACE1("<MV900>%d,",iCnt);
TRACE1("%d,",iCnt1);
TRACE1("%d.\r\n",iCnt+iCnt1);
pIS->UpdateImage();
//PostMessage(Msg_Hwnd,WM_UPDATE_IMAGE,0,0);
@@ -32,6 +32,7 @@ private:
BOOL SetVideocardPara();
BOOL SetVideocardDefaultPara();
int DumpBin(CString lpFileName);
BOOL m_status;
HANDLE m_hDev;
int m_nSharpness;
@@ -0,0 +1,623 @@
// Videocard_Mindvision.cpp : implementation file
//
#include "stdafx.h"
#include "RESOURCE.H"
#include "VideoCardDefine.h"
#include "..\..\..\Videocard\MindVision\Include\CameraDefine.h"
#include "..\..\..\Videocard\MindVision\Include\CameraStatus.h"
#include "..\..\..\Videocard\MindVision\MindVision_GIGE_Camera.h"
#include "Videocard_Mindvision.h"
#include "afxdialogex.h"
// CVideocard_Mindvision dialog
extern Camera_MindVision_GIGE* g_pMindVision_GIGE;
static BYTE g_DataBuffer[640*480*3];
int m_VideoWidth=640;
int m_VideoHeight=480;
int m_VideoBitcount=3;
int m_DisplayWidth=640;
int m_DisplayHeight=480;
IMPLEMENT_DYNAMIC(CVideocard_Mindvision, CDialog)
CVideocard_Mindvision::CVideocard_Mindvision(CWnd* pParent /*=NULL*/)
: CDialog(CVideocard_Mindvision::IDD, pParent)
{
m_ConvertColorType=RGB24TORGB;
m_bSaveFile=FALSE;
m_bMirror=FALSE;
}
CVideocard_Mindvision::~CVideocard_Mindvision()
{
}
void CVideocard_Mindvision::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CVideocard_Mindvision, CDialog)
ON_WM_TIMER()
ON_BN_CLICKED(IDC_RADIO_RGB, &CVideocard_Mindvision::OnBnClickedRadioRgb)
ON_BN_CLICKED(IDC_RADIO_GRAY, &CVideocard_Mindvision::OnBnClickedRadioGray)
ON_BN_CLICKED(IDC_RADIO_BINARZATION, &CVideocard_Mindvision::OnBnClickedRadioBinarzation)
ON_BN_CLICKED(IDC_CHECK_MIRROR_VERTICALLY, &CVideocard_Mindvision::OnBnClickedCheckMirrorVertically)
ON_BN_CLICKED(IDC_BUTTON_SAVE_PICTURE, &CVideocard_Mindvision::OnBnClickedButtonSavePicture)
ON_BN_CLICKED(IDOK, &CVideocard_Mindvision::OnBnClickedOk)
ON_BN_CLICKED(IDCANCEL, &CVideocard_Mindvision::OnBnClickedCancel)
ON_MESSAGE(WM_UPDATE_IMAGE, &CVideocard_Mindvision::OnUpdateImage)
ON_BN_CLICKED(IDC_BUTTON_SET_PARA, &CVideocard_Mindvision::OnBnClickedButtonSetPara)
END_MESSAGE_MAP()
// CVideocard_Mindvision message handlers
//==============================================================================
BOOL CVideocard_Mindvision::OnInitDialog()
{
CDialog::OnInitDialog();
// Add "About..." menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
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);
}
}
Msg_Hwnd=m_hWnd;//AfxGetApp()->GetMainWnd()->m_hWnd;
((CButton *)GetDlgItem(IDC_RADIO_RGB))->SetCheck(TRUE);
((CButton *)GetDlgItem(IDC_RADIO_GRAY))->SetCheck(FALSE);
((CButton *)GetDlgItem(IDC_RADIO_BINARZATION))->SetCheck(FALSE);
UpdateData(FALSE);
if (g_pMindVision_GIGE)
{
g_pMindVision_GIGE->InitDll();
}
return TRUE; // return TRUE unless you set the focus to a control
}
void CVideocard_Mindvision::OnBnClickedRadioRgb()
{
m_ConvertColorType=RGB24TORGB;
}
void CVideocard_Mindvision::OnBnClickedRadioGray()
{
m_ConvertColorType=RGB24TOGRAY;
}
void CVideocard_Mindvision::OnBnClickedRadioBinarzation()
{
m_ConvertColorType=RGB24TOBINARYZATION;
}
void CVideocard_Mindvision::OnBnClickedCheckMirrorVertically()
{
if (((CButton *)GetDlgItem(IDC_CHECK_MIRROR_VERTICALLY))->GetCheck())
{
m_bMirror=TRUE;
}
else
{
m_bMirror=FALSE;
}
}
void CVideocard_Mindvision::OnBnClickedButtonSavePicture()
{
CString CTmpString;
CString PathName;
CString path_and_fileName;
PathName=_T("Mindvision.bmp");
CString szFilter=_T("BMP Files(*.bmp)|*.bmp|ALL Files(*.*)|*.*||");
CFileDialog fdlg(FALSE,_T("BMP"),PathName,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilter);
if( fdlg.DoModal()==IDOK)
{
m_SaveFile=fdlg.GetPathName();
m_bSaveFile=TRUE;
}
delete fdlg;
}
void CVideocard_Mindvision::OnBnClickedButtonSetPara()
{
g_pMindVision_GIGE->SetAdvancedPara();
}
void CVideocard_Mindvision::OnBnClickedOk()
{
g_pMindVision_GIGE->init_video(Msg_Hwnd);
GetDlgItem(IDOK)->EnableWindow(false);
}
void CVideocard_Mindvision::OnBnClickedCancel()
{
g_pMindVision_GIGE->Quit_Video();
g_pMindVision_GIGE->UnitDll();
CDialog::OnCancel();
}
LRESULT CVideocard_Mindvision::OnUpdateImage(WPARAM wParam, LPARAM lParam)
{
UNREFERENCED_PARAMETER(wParam);
UNREFERENCED_PARAMETER(lParam);
OnPaint();
return 0;
}
//================================================================================================
void CVideocard_Mindvision::OnTimer(UINT_PTR nIDEvent)
{
switch(nIDEvent)
{
case 1:
{
OnPaint();
break;
}
}
CDialog::OnTimer(nIDEvent);
}
//---------------------------------------------------------------------------
void CVideocard_Mindvision::MedianFilter(BYTE* _Buf)
{
int i=0,j=0;
int iPixData=0;
BYTE *pNewBuffer = new BYTE[640*480];
memcpy(pNewBuffer,_Buf,640*480);
for(i=1;i<479;i++)
for(j=1;j<639;j++)
{
iPixData=(pNewBuffer[(i-1)*640+j-1]+pNewBuffer[(i-1)*640+j]+pNewBuffer[(i-1)*640+j+1]+
pNewBuffer[i*640+j-1]+pNewBuffer[i*640+j]+pNewBuffer[i*640+j+1]+
pNewBuffer[(i+1)*640+j-1]+pNewBuffer[(i+1)*640+j]+pNewBuffer[(i+1)*640+j+1])/9;
if(iPixData>255)
iPixData=255;
_Buf[i*640+j] = static_cast<BYTE>(iPixData);
}
delete[] pNewBuffer;
}
//================================================================
void CVideocard_Mindvision::ConvertVideoSubType(const Image_Buffer& _ImageBuffer,
BYTE *_pSrcData,ConvertColorType _type,BOOL _bMirror)
{
if (_type==RGB24TOBINARYZATION
||_type==YUY2TOBINARYZATION)
{
BYTE pBinaryzationData[640*480]={0};
int x(0),y(0);
long yCnt=0,xCnt=0,iIndex=0;
BYTE BPixData(0);
yCnt=0;
for(y=0;y<m_DisplayHeight;y++)
{
xCnt=0;
for(x=0;x<m_DisplayWidth;x++)
{
if (true)
{
iIndex=y*m_DisplayWidth*3+x*3;
BPixData=_pSrcData[iIndex];
if(BPixData<_pSrcData[iIndex+1])
BPixData=_pSrcData[iIndex+1];
if(BPixData<_pSrcData[iIndex+2])
BPixData=_pSrcData[iIndex+2];
if(_bMirror==1)
pBinaryzationData[(479-y)*m_DisplayWidth+x]=BPixData;
else
pBinaryzationData[y*m_DisplayWidth+x]=BPixData;
}
else
{
iIndex=y*640*2+x*2;
if(y>=477)
iIndex=476*640*2+x*2;
if(_bMirror==1)
pBinaryzationData[(479-yCnt)*640+xCnt]=_pSrcData[iIndex];
else
pBinaryzationData[yCnt*640+xCnt]=_pSrcData[iIndex];
}
xCnt++;
}
yCnt++;
}
MedianFilter(pBinaryzationData);
MedianFilter(pBinaryzationData);
MedianFilter(pBinaryzationData);
BYTE *pDstData=NULL;
iIndex=0;
for(y=0;y<m_DisplayHeight;y++)
{
pDstData=(BYTE*)_ImageBuffer.ScanLine[y];
for(x=0;x<m_DisplayWidth*3;x+=3)
{
pDstData[x+2]=pBinaryzationData[iIndex];
pDstData[x+1]=pBinaryzationData[iIndex];
pDstData[x]=pBinaryzationData[iIndex];
iIndex++;
}
}
}
else
{
int x=0;
int y=0;
long lCnt1=0;
long lCnt2=0;
long lCnt3=0;
int Color_R=0,Color_G=0,Color_B=0;
BYTE *pDstData=NULL;
for(y=0;y<m_DisplayHeight;y++)
{
lCnt1=0;
if(!_bMirror)
pDstData=(BYTE*)_ImageBuffer.ScanLine[y];
else
pDstData=(BYTE*)_ImageBuffer.ScanLine[m_DisplayHeight-1-y];
for(x=0;x<m_DisplayWidth*3;x+=3)
{
switch(_type)
{
case RGB24TORGB:
{
pDstData[x]=_pSrcData[y*m_DisplayWidth*3+x+2];
pDstData[x+1]=_pSrcData[y*m_DisplayWidth*3+x+1];
pDstData[x+2]=_pSrcData[y*m_DisplayWidth*3+x];
break;
}
case YUY2TORGB:
{
Color_R=(1164*(_pSrcData[lCnt2*2]-16)+1596*(_pSrcData[lCnt3+3]-128))/1000;
if(Color_R>255)Color_R=255;
if(Color_R<0)Color_R=0;
pDstData[x+2]=static_cast<BYTE>(Color_R);
Color_G=(1164*(_pSrcData[lCnt2*2]-16)-813*(_pSrcData[lCnt3+1]-128)-392*(_pSrcData[lCnt3+3]-128))/1000;
if(Color_G>255)Color_G=255;
if(Color_G<0)Color_G=0;
pDstData[x+1]=static_cast<BYTE>(Color_G);
Color_B=(1164*(_pSrcData[lCnt2*2]-16)+2017*(_pSrcData[lCnt3+1]-128))/1000;
if(Color_B>255)Color_B=255;
if(Color_B<0)Color_B=0;
pDstData[x]=static_cast<BYTE>(Color_B);
break;
}
case RGB24TOGRAY:
{
pDstData[x+2]=(_pSrcData[lCnt2*3+2]+_pSrcData[lCnt2*3+1]+_pSrcData[lCnt2*3])/3;
pDstData[x+1]=(_pSrcData[lCnt2*3+2]+_pSrcData[lCnt2*3+1]+_pSrcData[lCnt2*3])/3;
pDstData[x]=(_pSrcData[lCnt2*3+2]+_pSrcData[lCnt2*3+1]+_pSrcData[lCnt2*3])/3;
break;
}
case YUY2TOGRAY:
{
pDstData[x+2]=_pSrcData[2*lCnt2];
pDstData[x+1]=_pSrcData[2*lCnt2];
pDstData[x]=_pSrcData[2*lCnt2];
break;
}
}
if((lCnt1%2)==1)
lCnt3=lCnt3+4;
lCnt2++;
lCnt1++;
}
}
}
}
//================================================================
BOOL CVideocard_Mindvision::SaveBitmapToFile(const CBitmap& _bitmap, CString _lpFileName)
{
HBITMAP hBitmap; // 为刚才的屏幕位图句柄
HDC hDC; //设备描述表
int iBits; //当前显示分辨率下每个像素所占字节数
WORD wBitCount(24); //位图中每个像素所占字节数
DWORD dwPaletteSize = 0, //定义调色板大小
dwBmBitsSize, //位图中像素字节大小
dwDIBSize, //位图文件大小
dwWritten; //写入文件字节数
BITMAP Bitmap; //位图属性结构
BITMAPFILEHEADER bmhFiledr; //位图文件头结构
BITMAPINFOHEADER bi; //位图信息头结构
LPBITMAPINFOHEADER lpbi; //指向位图信息头结构
HANDLE hFile, //定义文件
hDib, //分配内存句柄
hPal, //调色板句柄
hOldPal = NULL;
//计算位图文件每个像素所占字节数
hBitmap = (HBITMAP)_bitmap;
hDC = CreateDC(_T("DISPLAY"),NULL,NULL,NULL);
iBits = GetDeviceCaps(hDC, BITSPIXEL) * GetDeviceCaps(hDC, PLANES);
DeleteDC(hDC);
if (iBits <= 1)
wBitCount = 1;
else if (iBits <= 4)
wBitCount = 4;
else if (iBits <= 8)
wBitCount = 8;
else if (iBits <= 24)
wBitCount = 24;
else if (iBits <= 32)
wBitCount = 32;
//计算调色板大小
if (wBitCount <= 8)
dwPaletteSize = (1 << wBitCount) * sizeof (RGBQUAD);
//设置位图信息头结构
GetObject(hBitmap, sizeof (BITMAP), (LPSTR)&Bitmap);
bi.biSize = sizeof (BITMAPINFOHEADER);
bi.biWidth = Bitmap.bmWidth;
bi.biHeight = Bitmap.bmHeight;
bi.biPlanes = 1;
bi.biBitCount = wBitCount;
bi.biCompression = BI_RGB;
bi.biSizeImage = 0;
bi.biXPelsPerMeter = 0;
bi.biYPelsPerMeter = 0;
bi.biClrUsed = 0;
bi.biClrImportant = 0;
dwBmBitsSize = ((Bitmap.bmWidth * wBitCount+31) / 32) * 4 * Bitmap.bmHeight;
//为位图内容分配内存
hDib = GlobalAlloc(GHND, dwBmBitsSize + dwPaletteSize + sizeof (BITMAPINFOHEADER));
lpbi = (LPBITMAPINFOHEADER)GlobalLock(hDib);
*lpbi = bi;
// 处理调色板
hPal = GetStockObject(DEFAULT_PALETTE);
if (hPal)
{
hDC = ::GetDC(NULL);
hOldPal = ::SelectPalette(hDC, (HPALETTE)hPal, FALSE);
RealizePalette(hDC);
}
// 获取该调色板下新的像素值
GetDIBits(hDC, hBitmap, 0, (UINT) Bitmap.bmHeight, (LPSTR)lpbi + sizeof (BITMAPINFOHEADER) + dwPaletteSize, (LPBITMAPINFO)lpbi, DIB_RGB_COLORS);
//恢复调色板
if (hOldPal)
{
SelectPalette(hDC, (HPALETTE)hOldPal, TRUE);
RealizePalette(hDC);
::ReleaseDC(NULL, hDC);
}
//创建位图文件
hFile = CreateFile(_lpFileName, GENERIC_WRITE,
0, NULL, CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, NULL);
if (hFile == INVALID_HANDLE_VALUE)
return FALSE;
// 设置位图文件头
bmhFiledr.bfType = 0x4D42; // "BM"
dwDIBSize = sizeof (BITMAPFILEHEADER) + sizeof (BITMAPINFOHEADER) + dwPaletteSize + dwBmBitsSize;
bmhFiledr.bfSize = dwDIBSize;
bmhFiledr.bfReserved1 = 0;
bmhFiledr.bfReserved2 = 0;
bmhFiledr.bfOffBits = (DWORD)sizeof (BITMAPFILEHEADER) + (DWORD)sizeof (BITMAPINFOHEADER) + dwPaletteSize;
// 写入位图文件头
WriteFile(hFile, (LPSTR)&bmhFiledr, sizeof(BITMAPFILEHEADER), &dwWritten, NULL);
// 写入位图文件其余内容
WriteFile(hFile, (LPSTR)lpbi, dwDIBSize,&dwWritten, NULL);
//清除
GlobalUnlock(hDib);
GlobalFree(hDib);
CloseHandle(hFile);
return TRUE;
};
//================================================================
void CVideocard_Mindvision::OnPaint()
{
CDC* dc= this->GetDC();
int nMode;
CDC* pMemDC = new CDC;
CBitmap pBitBmp;
CBitmap pBitBmpNav;
BYTE *pData;
CBitmap* pOldBitmap;
BITMAPINFO bmpInfo;
bmpInfo.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
bmpInfo.bmiHeader.biWidth = m_DisplayWidth;
bmpInfo.bmiHeader.biHeight = m_DisplayHeight;
bmpInfo.bmiHeader.biPlanes = 1;
bmpInfo.bmiHeader.biBitCount = 24;//X位色
bmpInfo.bmiHeader.biCompression = BI_RGB;
bmpInfo.bmiHeader.biSizeImage = 0;
bmpInfo.bmiHeader.biXPelsPerMeter = 30000;
bmpInfo.bmiHeader.biYPelsPerMeter = 30000;
bmpInfo.bmiHeader.biClrUsed = 0;
bmpInfo.bmiHeader.biClrImportant = 0;
ConvertVideoSubType(m_ImageBuffer,g_DataBuffer,m_ConvertColorType,m_bMirror);
pData = (BYTE *)m_ImageBuffer.ScanLine;
pBitBmp.CreateCompatibleBitmap(dc,m_DisplayWidth,m_DisplayHeight);
SetDIBits(dc->m_hDC,pBitBmp,0,m_DisplayHeight,pData,&bmpInfo,DIB_RGB_COLORS);
if (m_bSaveFile)
{
SaveBitmapToFile(pBitBmp,m_SaveFile);
DumpBin(m_SaveFile);
//CImage imgTemp;
//imgTemp.Attach(pBitBmp.operator HBITMAP());
//imgTemp.Save(m_SaveFile);
m_bSaveFile=FALSE;
}
if (!pMemDC->m_hDC)
{
pMemDC->CreateCompatibleDC(dc);
}
pOldBitmap = pMemDC->SelectObject(&pBitBmp);
nMode = pMemDC->SetBkMode(TRANSPARENT);
CPen m_Pen(PS_DASH,0,RGB(255,0,0));
POINT m_point;
pMemDC->SelectObject(&m_Pen);
m_point.x=0;
m_point.y=static_cast<int>(m_DisplayHeight*0.5);
pMemDC->MoveTo(m_point);
m_point.x=m_DisplayWidth;
m_point.y=static_cast<int>(m_DisplayHeight*0.5);
pMemDC->LineTo(m_point);
m_point.x=static_cast<int>(m_DisplayWidth*0.5);
m_point.y=0;
pMemDC->MoveTo(m_point);
m_point.x=static_cast<int>(m_DisplayWidth*0.5);
m_point.y=m_DisplayHeight;
pMemDC->LineTo(m_point);
dc->BitBlt(0, 0, m_DisplayWidth, m_DisplayHeight, pMemDC,0,0, SRCCOPY);
pMemDC->SetBkMode(nMode);
pMemDC->SelectObject(pOldBitmap);
ReleaseDC(pMemDC);
m_Pen.DeleteObject();
delete pMemDC;
ReleaseDC(dc);
}
// ==========================================================================================
int CVideocard_Mindvision::DumpBin(CString lpFileName)
{
FILE* pOutFile;
unsigned long byte_pos = 0;
CString OutFileName =lpFileName+_T("_ASCII.txt");
_wfopen_s(&pOutFile, OutFileName, _T("wt"));
if (!pOutFile)
return -1;
for (int i=0;i<640*480*3;i+=32)
{
fprintf(pOutFile, "%8.8X : ", byte_pos);
for (int j = 0; j < 8; j++)
{
fprintf(pOutFile, "%2.2X%2.2X%2.2X%2.2X ", *(g_DataBuffer+i+j*4), *(g_DataBuffer+i+j*4+1), *(g_DataBuffer+i+j*4+2), *(g_DataBuffer+i+j*4+3));
};
fprintf(pOutFile, "\n");
byte_pos += 32;
}
fclose(pOutFile);
return 0;
}
//================================================================
static int iStartX(0);
static int iStartY(0);
static bool bCompare(0);
static long long iMaxCnt(0);
static BYTE m_pFrameBufferindex[640*480*3]={0};
void _stdcall GrabImageCallback(CameraHandle hCamera, BYTE *pFrameBuffer, tSdkFrameHead* pFrameHead,PVOID pContext)
{
UNREFERENCED_PARAMETER(hCamera);
CameraSdkStatus status;
Camera_MindVision_GIGE *pThis = (Camera_MindVision_GIGE*)pContext;
//将获得的原始数据转换成RGB格式的数据,同时经过ISP模块,对图像进行降噪,边沿提升,颜色校正等处理。
//我公司大部分型号的相机,原始数据都是Bayer格式的
long long iCnt(0);
long long iCnt1(0);
if (pFrameHead->uiMediaType==CAMERA_MEDIA_TYPE_BAYGR8)
{
iCnt=1;
}
status = pThis->m_CameraImageProcess(pThis->m_hCamera, pFrameBuffer,pThis->m_pFrameBuffer,pFrameHead);
if (pFrameHead->uiMediaType==CAMERA_MEDIA_TYPE_BGR8)
{
iCnt1=1;
}
iCnt=0;
iCnt1=0;
for (int i=0;i<640*480*3;i++)
{
if (pThis->m_pFrameBuffer[i]==0xff)
{
iCnt++;
}
else
{
iCnt1++;
//m_pFrameBufferindex[iCnt1++]=pThis->m_pFrameBuffer[i];
}
}
//TRACE1("<MINDVISION> %d,",iCnt);
//TRACE1("%d.\r\n",iCnt1);
if (bCompare)
{
memcpy(m_pFrameBufferindex,g_DataBuffer,640*480*3);
}
memcpy(g_DataBuffer,pThis->m_pFrameBuffer,640*480*3);
iCnt=0;
iCnt1=0;
for (int i=0;i<640*480*3;i++)
{
if (g_DataBuffer[i]==m_pFrameBufferindex[i])
{
iCnt++;
}
else
{
iCnt1++;
}
}
if (iMaxCnt<iCnt1)
{
iMaxCnt=iCnt1;
}
//TRACE1("<MINDVISION> eq=%d,",iCnt);
//TRACE1("uneql=%d.\r\n",iCnt1);
TRACE1("Max=%d.\r\n",iMaxCnt);
pThis->UpdateImage();
}
@@ -0,0 +1,50 @@
#pragma once
// CVideocard_Mindvision dialog
class CVideocard_Mindvision : public CDialog
{
DECLARE_DYNAMIC(CVideocard_Mindvision)
public:
CVideocard_Mindvision(CWnd* pParent = NULL); // standard constructor
virtual ~CVideocard_Mindvision();
// Dialog Data
enum { IDD = IDD_SO7_VIDEOCARD_MINDVISION };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
virtual BOOL OnInitDialog();
afx_msg void OnPaint();
afx_msg void OnTimer(UINT_PTR nIDEvent);
DECLARE_MESSAGE_MAP()
private:
HWND Msg_Hwnd;
Image_Buffer m_ImageBuffer;
ConvertColorType m_ConvertColorType;
BOOL m_bMirror;
BOOL m_bSaveFile;
CString m_SaveFile;
void ConvertVideoSubType(const Image_Buffer& _ImageBuffer, BYTE *pSrcData,ConvertColorType _type,BOOL _bMirror);
BOOL SaveBitmapToFile(const CBitmap& bitmap, CString lpFileName);
void MedianFilter(BYTE* buf);
BOOL LoadVideocard();
BOOL UnloadVideocard();
int DumpBin(CString lpFileName);
public:
afx_msg void OnBnClickedRadioRgb();
afx_msg void OnBnClickedRadioGray();
afx_msg void OnBnClickedRadioGray2();
afx_msg void OnBnClickedCheckMirrorVertically();
afx_msg void OnBnClickedButtonSavePicture();
afx_msg void OnBnClickedOk();
afx_msg void OnBnClickedCancel();
afx_msg void OnBnClickedRadioBinarzation();
afx_msg LRESULT OnUpdateImage(WPARAM wParam, LPARAM lParam);
afx_msg void OnBnClickedButtonSetPara();
};
@@ -0,0 +1,487 @@
/*++
Copyright (c) Microsoft Corporation. All rights reserved.
Module Name:
HIDSDI.H
Abstract:
This module contains the PUBLIC definitions for the
code that implements the HID dll.
Environment:
Kernel & user mode
--*/
#ifndef _HIDSDI_H
#define _HIDSDI_H
#include <pshpack4.h>
//#include "wtypes.h"
//#include <windef.h>
//#include <win32.h>
//#include <basetyps.h>
typedef LONG NTSTATUS;
#include "hidusage.h"
#include "hidpi.h"
typedef struct _HIDD_CONFIGURATION {
PVOID cookie;
ULONG size;
ULONG RingBufferSize;
} HIDD_CONFIGURATION, *PHIDD_CONFIGURATION;
typedef struct _HIDD_ATTRIBUTES {
ULONG Size; // = sizeof (struct _HIDD_ATTRIBUTES)
//
// Vendor ids of this hid device
//
USHORT VendorID;
USHORT ProductID;
USHORT VersionNumber;
//
// Additional fields will be added to the end of this structure.
//
} HIDD_ATTRIBUTES, *PHIDD_ATTRIBUTES;
BOOLEAN __stdcall
HidD_GetAttributes (
IN HANDLE HidDeviceObject,
OUT PHIDD_ATTRIBUTES Attributes
);
/*++
Routine Description:
Fill in the given HIDD_ATTRIBUTES structure with the attributes of the
given hid device.
--*/
void __stdcall
HidD_GetHidGuid (
OUT LPGUID HidGuid
);
BOOLEAN __stdcall
HidD_GetPreparsedData (
IN HANDLE HidDeviceObject,
OUT PHIDP_PREPARSED_DATA * PreparsedData
);
/*++
Routine Description:
Given a handle to a valid Hid Class Device Object, retrieve the preparsed
data for the device. This routine will allocate the appropriately
sized buffer to hold this preparsed data. It is up to client to call
HidP_FreePreparsedData to free the memory allocated to this structure when
it is no longer needed.
Arguments:
HidDeviceObject A handle to a Hid Device that the client obtains using
a call to CreateFile on a valid Hid device string name.
The string name can be obtained using standard PnP calls.
PreparsedData An opaque data structure used by other functions in this
library to retrieve information about a given device.
Return Value:
TRUE if successful.
FALSE otherwise -- Use GetLastError() to get extended error information
--*/
BOOLEAN __stdcall
HidD_FreePreparsedData (
IN PHIDP_PREPARSED_DATA PreparsedData
);
BOOLEAN __stdcall
HidD_FlushQueue (
IN HANDLE HidDeviceObject
);
/*++
Routine Description:
Flush the input queue for the given HID device.
Arguments:
HidDeviceObject A handle to a Hid Device that the client obtains using
a call to CreateFile on a valid Hid device string name.
The string name can be obtained using standard PnP calls.
Return Value:
TRUE if successful
FALSE otherwise -- Use GetLastError() to get extended error information
--*/
BOOLEAN __stdcall
HidD_GetConfiguration (
IN HANDLE HidDeviceObject,
OUT PHIDD_CONFIGURATION Configuration,
IN ULONG ConfigurationLength
);
/*++
Routine Description:
Get the configuration information for this Hid device
Arguments:
HidDeviceObject A handle to a Hid Device Object.
Configuration A configuration structure. HidD_GetConfiguration MUST
be called before the configuration can be modified and
set using HidD_SetConfiguration
ConfigurationLength That is ``sizeof (HIDD_CONFIGURATION)''. Using this
parameter, we can later increase the length of the
configuration array and not break older apps.
Return Value:
TRUE if successful
FALSE otherwise -- Use GetLastError() to get extended error information
--*/
BOOLEAN __stdcall
HidD_SetConfiguration (
IN HANDLE HidDeviceObject,
IN PHIDD_CONFIGURATION Configuration,
IN ULONG ConfigurationLength
);
/*++
Routine Description:
Set the configuration information for this Hid device...
NOTE: HidD_GetConfiguration must be called to retrieve the current
configuration information before this information can be modified
and set.
Arguments:
HidDeviceObject A handle to a Hid Device Object.
Configuration A configuration structure. HidD_GetConfiguration MUST
be called before the configuration can be modified and
set using HidD_SetConfiguration
ConfigurationLength That is ``sizeof (HIDD_CONFIGURATION)''. Using this
parameter, we can later increase the length of the
configuration array and not break older apps.
Return Value:
TRUE if successful
FALSE otherwise -- Use GetLastError() to get extended error information
--*/
BOOLEAN __stdcall
HidD_GetFeature (
IN HANDLE HidDeviceObject,
OUT PVOID ReportBuffer,
IN ULONG ReportBufferLength
);
/*++
Routine Description:
Retrieve a feature report from a HID device.
Arguments:
HidDeviceObject A handle to a Hid Device Object.
ReportBuffer The buffer that the feature report should be placed
into. The first byte of the buffer should be set to
the report ID of the desired report
ReportBufferLength The size (in bytes) of ReportBuffer. This value
should be greater than or equal to the
FeatureReportByteLength field as specified in the
HIDP_CAPS structure for the device
Return Value:
TRUE if successful
FALSE otherwise -- Use GetLastError() to get extended error information
--*/
BOOLEAN __stdcall
HidD_SetFeature (
IN HANDLE HidDeviceObject,
IN PVOID ReportBuffer,
IN ULONG ReportBufferLength
);
/*++
Routine Description:
Send a feature report to a HID device.
Arguments:
HidDeviceObject A handle to a Hid Device Object.
ReportBuffer The buffer of the feature report to send to the device
ReportBufferLength The size (in bytes) of ReportBuffer. This value
should be greater than or equal to the
FeatureReportByteLength field as specified in the
HIDP_CAPS structure for the device
Return Value:
TRUE if successful
FALSE otherwise -- Use GetLastError() to get extended error information
--*/
BOOLEAN __stdcall
HidD_GetInputReport (
IN HANDLE HidDeviceObject,
OUT PVOID ReportBuffer,
IN ULONG ReportBufferLength
);
/*++
Routine Description:
Retrieve an input report from a HID device.
Arguments:
HidDeviceObject A handle to a Hid Device Object.
ReportBuffer The buffer that the input report should be placed
into. The first byte of the buffer should be set to
the report ID of the desired report
ReportBufferLength The size (in bytes) of ReportBuffer. This value
should be greater than or equal to the
InputReportByteLength field as specified in the
HIDP_CAPS structure for the device
Return Value:
TRUE if successful
FALSE otherwise -- Use GetLastError() to get extended error information
--*/
BOOLEAN __stdcall
HidD_SetOutputReport (
IN HANDLE HidDeviceObject,
IN PVOID ReportBuffer,
IN ULONG ReportBufferLength
);
/*++
Routine Description:
Send an output report to a HID device.
Arguments:
HidDeviceObject A handle to a Hid Device Object.
ReportBuffer The buffer of the output report to send to the device
ReportBufferLength The size (in bytes) of ReportBuffer. This value
should be greater than or equal to the
OutputReportByteLength field as specified in the
HIDP_CAPS structure for the device
Return Value:
TRUE if successful
FALSE otherwise -- Use GetLastError() to get extended error information
--*/
BOOLEAN __stdcall
HidD_GetNumInputBuffers (
IN HANDLE HidDeviceObject,
OUT PULONG NumberBuffers
);
/*++
Routine Description:
This function returns the number of input buffers used by the specified
file handle to the Hid device. Each file object has a number of buffers
associated with it to queue reports read from the device but which have
not yet been read by the user-mode app with a handle to that device.
Arguments:
HidDeviceObject A handle to a Hid Device Object.
NumberBuffers Number of buffers currently being used for this file
handle to the Hid device
Return Value:
TRUE if successful
FALSE otherwise -- Use GetLastError() to get extended error information
--*/
BOOLEAN __stdcall
HidD_SetNumInputBuffers (
IN HANDLE HidDeviceObject,
OUT ULONG NumberBuffers
);
/*++
Routine Description:
This function sets the number of input buffers used by the specified
file handle to the Hid device. Each file object has a number of buffers
associated with it to queue reports read from the device but which have
not yet been read by the user-mode app with a handle to that device.
Arguments:
HidDeviceObject A handle to a Hid Device Object.
NumberBuffers New number of buffers to use for this file handle to
the Hid device
Return Value:
TRUE if successful
FALSE otherwise -- Use GetLastError() to get extended error information
--*/
BOOLEAN __stdcall
HidD_GetPhysicalDescriptor (
IN HANDLE HidDeviceObject,
OUT PVOID Buffer,
IN ULONG BufferLength
);
/*++
Routine Description:
This function retrieves the raw physical descriptor for the specified
Hid device.
Arguments:
HidDeviceObject A handle to a Hid Device Object.
Buffer Buffer which on return will contain the physical
descriptor if one exists for the specified device
handle
BufferLength Length of buffer (in bytes)
Return Value:
TRUE if successful
FALSE otherwise -- Use GetLastError() to get extended error information
--*/
BOOLEAN __stdcall
HidD_GetManufacturerString (
IN HANDLE HidDeviceObject,
OUT PVOID Buffer,
IN ULONG BufferLength
);
/*++
Routine Description:
This function retrieves the manufacturer string from the specified
Hid device.
Arguments:
HidDeviceObject A handle to a Hid Device Object.
Buffer Buffer which on return will contain the manufacturer
string returned from the device. This string is a
wide-character string
BufferLength Length of Buffer (in bytes)
Return Value:
TRUE if successful
FALSE otherwise -- Use GetLastError() to get extended error information
--*/
BOOLEAN __stdcall
HidD_GetProductString (
IN HANDLE HidDeviceObject,
OUT PVOID Buffer,
IN ULONG BufferLength
);
/*++
Routine Description:
This function retrieves the product string from the specified
Hid device.
Arguments:
HidDeviceObject A handle to a Hid Device Object.
Buffer Buffer which on return will contain the product
string returned from the device. This string is a
wide-character string
BufferLength Length of Buffer (in bytes)
Return Value:
TRUE if successful
FALSE otherwise -- Use GetLastError() to get extended error information
--*/
BOOLEAN __stdcall
HidD_GetIndexedString (
IN HANDLE HidDeviceObject,
IN ULONG StringIndex,
OUT PVOID Buffer,
IN ULONG BufferLength
);
/*++
Routine Description:
This function retrieves a string from the specified Hid device that is
specified with a certain string index.
Arguments:
HidDeviceObject A handle to a Hid Device Object.
StringIndex Index of the string to retrieve
Buffer Buffer which on return will contain the product
string returned from the device. This string is a
wide-character string
BufferLength Length of Buffer (in bytes)
Return Value:
TRUE if successful
FALSE otherwise -- Use GetLastError() to get extended error information
--*/
BOOLEAN __stdcall
HidD_GetSerialNumberString (
IN HANDLE HidDeviceObject,
OUT PVOID Buffer,
IN ULONG BufferLength
);
/*++
Routine Description:
This function retrieves the serial number string from the specified
Hid device.
Arguments:
HidDeviceObject A handle to a Hid Device Object.
Buffer Buffer which on return will contain the serial number
string returned from the device. This string is a
wide-character string
BufferLength Length of Buffer (in bytes)
Return Value:
TRUE if successful
FALSE otherwise -- Use GetLastError() to get extended error information
--*/
BOOLEAN __stdcall
HidD_GetMsGenreDescriptor (
IN HANDLE HidDeviceObject,
OUT PVOID Buffer,
IN ULONG BufferLength
);
/*++
Routine Description:
This function retrieves the Microsoft Genre descriptor from the specified
Hid device.
Arguments:
HidDeviceObject A handle to a Hid Device Object.
Buffer Buffer which on return will contain the descriptor
returned from the device.
BufferLength Length of Buffer (in bytes)
Return Value:
TRUE if successful
FALSE otherwise -- Use GetLastError() to get extended error information
--*/
#include <poppack.h>
#endif
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

@@ -11,4 +11,4 @@
// Add manually edited resources here...
/////////////////////////////////////////////////////////////////////////////
SYS_SNOOPY_NT RCDATA "..\\SniffUSB.exe"
//SYS_SNOOPY_NT RCDATA "..\\SniffUSB.exe"
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

@@ -63,6 +63,9 @@
#define IDD_SO7_UTIL_CAMERA 194
#define IDD_SO7_TEMPERATURE_SENSOR 195
#define IDD_SO7_UTIL_TEMPERATURE_DISPLAY 198
#define IDD_SO7_UTIL_Robot_Control 200
#define IDD_So7_Util_Keyence9011 201
#define IDD_DIALOG_OPERATE_EXTRA_IO 204
#define IDC_BUTTON_START_MACHINE 1000
#define IDC_BUTTON_START_MACHINE3 1001
#define IDC_BUTTON_START_POLL_58 1002
@@ -204,6 +207,7 @@
#define IDC_RADIO_HEX_ASCII2BIN 1149
#define IDC_RADIO_2BIN 1149
#define IDC_EDIT_MV_CONFIG_FILE 1150
#define IDC_RADIO_BIN2HEX 1150
#define IDC_RADIO_DUMP_BINARY 1153
#define IDC_BUTTON_GET_MV_CONFIG 1154
#define IDC_RADIO_DUMP_PRS 1154
@@ -355,6 +359,7 @@
#define IDC_EDIT_SO7_UTIL_TEMPERATURE_DISPLAY_C1 1274
#define IDC_EDIT_SO7_UTIL_TEMPERATURE_DISPLAY_VALUE_C1 1274
#define IDC_EDIT_SO7_UTIL_TEMPERATURE_DISPLAY_VALUE_C0 1274
#define IDC_EDIT_SO7_REBOT_CONTROL_POSITION_Z0 1274
#define IDC_EDIT_FRESHSPEED_X2 1275
#define IDC_EDIT_IMAGEDLL_2LASER_TOPZ2 1275
#define IDC_EDIT_MANUAL_MACHINE_MSG 1275
@@ -394,6 +399,7 @@
#define IDC_BUTTON_SAVE_REPETEST 1291
#define IDC_EDIT_FRESHSPEED_Z5 1291
#define IDC_CHECK_REPETESTY 1292
#define IDC_BUTTON_SAVE2 1292
#define IDC_CHECK_REPETESTZ 1293
#define IDC_CHECK_REPETEST_ABSOLUTE 1294
#define IDC_EDIT_MAXSPEED_X1 1298
@@ -502,11 +508,13 @@
#define IDC_CHECK_LKG5000_CONTINUE_READ2 1394
#define IDC_CHECK_SO7_CONTROL_MODE_X 1394
#define IDC_CHECK_PLC_TCPIP_SERVER_E__STOP 1394
#define IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_CYCLE 1394
#define IDC_BUTTON_MANUAL_HOME 1395
#define IDC_CHECK_TEST_KEYENCE_LK_G_PROGRAM2 1395
#define IDC_CHECK_ 1396
#define IDC_CHECK_REPETEST_VOLCOMP 1396
#define IDC_CHECK_TEST_KEYENCE_LK_G_PROGRAM3 1396
#define IDC_CHECK_MSG_LOG_ENABLE 1396
#define IDC_BUTTON_CALIBRATE_ENCODER 1397
#define IDC_CHECK_TEST_KEYENCE_LK_G_PROGRAM4 1397
#define IDC_COMBOREPETEST_FROM 1398
@@ -639,6 +647,8 @@
#define IDC_BUTTON_START_SAMPLE_SCURVE 1519
#define IDC_BUTTON_SAVE_PICTURE 1520
#define IDC_BUTTON_SV2000E_SAVEFILE 1521
#define IDC_BUTTON_SAVE_PICTURE2 1521
#define IDC_BUTTON_SET_PARA 1521
#define IDC_BTN_CONFIGURE_CALIBRATEV 1522
#define IDC_BUTTON_SETUP_SO7CONFIG 1523
#define IDC_BUTTON_SCAN_KEYENCE_LK_GLASER 1524
@@ -670,6 +680,11 @@
#define IDC_BUTTON_SO7_MOTION_SET_CNTS 1542
#define IDC_BUTTON_SO7_TEMPERATURE_SENSOR_UPDATE 1542
#define IDC_BUTTON_SO7_UTIL_TEMPERATURE_DISPLAY_CLOSE 1542
#define IDC_BUTTON_So7_UTIL_REBOT_CONTROL_DISCONNECT 1542
#define IDC_BUTTON_SO7_UTIL_Keyence9011_CLOSE 1542
#define IDC_BUTTON_PLC_TCPIP_SERVER_EXPORT 1542
#define IDC_BUTTON_PROGRAM_EXPORT 1542
#define IDC_BUTTON_SET_IO_0 1542
#define IDC_BUTTON_STOP_SAMPLE_SCURVE 1543
#define IDC_BTN_KEYENCE_LKG5000_ETHERNET_READOUT2 1543
#define IDC_BUTTON_SO7_MOTION_CONFIG_OK2 1543
@@ -700,6 +715,7 @@
#define IDC_STATIC_SDK3000_PICTURE 1562
#define IDC_RADIO_GRAY 1563
#define IDC_RADIO_SV2000E_GRAY 1564
#define IDC_RADIO_BINARZATION 1564
#define IDC_BTN_CONFIGURE_MOVEVIN 1565
#define IDC_EDIT_CONFIGURE_MSGOUT 1566
#define IDC_EDIT_SO7CONFIG_ZOOMID 1567
@@ -886,6 +902,7 @@
#define IDD_SO7_VIDEOCARD_MV900 1723
#define IDD_SO7_UTIL_PLC_TCPIP 1724
#define IDD_SO7_UTIL_PLC_TCPIP_SERVER 1725
#define IDD_SO7_VIDEOCARD_MINDVISION 1726
#define IDC_RADIO_SPEED_SLOW 1770
#define IDC_RADIO_SCALE 1772
#define IDC_EDIT_SPEED_X 1773
@@ -921,16 +938,27 @@
#define IDC_BUTTON_IMAGEDLL_CCSPRIMA_START 1794
#define IDC_BUTTON_SO7_TEMPERATURE_SENSOR_EXIT 1794
#define IDC_BUTTON_SO7_UTIL_TEMPERATURE_DISPLAY_OPEN 1794
#define IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_CONNECT 1794
#define IDC_BUTTON_SO7_UTIL_Keyence9011_OPEN 1794
#define IDC_BUTTON_PLC_TCPIP_SERVER_AUTOTEST 1794
#define IDC_BUTTON_PROGRAM_CLEAR_LOG 1794
#define IDC_BUTTON_SET_IO_1 1794
#define IDC_COMBO_RWDATA_ADDR 1795
#define IDC_BTN_KEYENCE_LKG5000_ETHERNET_CONNECT2 1795
#define IDC_BUTTON_STIL_LASER_SET_MODE 1795
#define IDC_BUTTON_PLC_TCPIP_SERVER_AUTOTEST2 1795
#define IDC_EDIT_MOTION_SPEEDY 1796
#define IDC_COMBO_OUTPORT_NUMBER 1796
#define IDC_BUTTON_PLC_TCPIP_SERVER_AUTOTEST3 1796
#define IDC_EDIT4 1797
#define IDC_EDIT_MOTION_SPEEDZ 1797
#define IDC_EDIT_SO7_EXTRIG_RESULT 1797
#define IDC_EDIT_SO7_UTIL_TEMPERATURE_DISPLAY_A2 1797
#define IDC_EDIT_SO7_UTIL_TEMPERATURE_DISPLAY_VALUE_A2 1797
#define IDC_EDIT_SO7_REBOT_CONTROL_POSITION_A0 1797
#define IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_SPEED 1797
#define IDC_BUTTON_PLC_TCPIP_SERVER_AUTOTEST4 1797
#define IDC_BUTTON_PLC_TCPIP_SERVER_GAUSS_TEST 1797
#define IDC_EDIT_MOTION_SPEEDX 1798
#define IDC_BUTTON_SCAN_KEYENCE_LK_H_LASER 1799
#define IDC_BUTTON_STOP_SCAN_KEYENCE_LK_H_LASER 1800
@@ -939,6 +967,7 @@
#define IDC_COMBO_SO7_HOMEMODE 1802
#define IDC_COMBO_SO7_TEMOERATURE_SENSOR_PORT 1802
#define IDC_COMBO_SO7_UTIL_TEMPERATURE_DISPLAY_PORT 1802
#define IDC_COMBO_SO7_PROGRAM_CNCLIST 1802
#define IDC_EDIT_ZOOM_TIME 1803
#define IDC_RADIO_READ_INPUT_PORT 1804
#define IDC_RADIO_READ_OUTPUT_PORT 1805
@@ -1040,11 +1069,15 @@
#define IDC_BUTTON_SO7_TRIGPULSE_READ_PARA 1855
#define IDC_BUTTON_SO7_MOTION_GET_SEGMENT_DIS 1855
#define IDC_BUTTON_SO7_UTIL_TEMPERATURE_DISPLAY_END 1855
#define IDC_BUTTON_SO7_UTIL_Keyence9011_SAVE 1855
#define IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_SERVON 1855
#define IDC_BUTTON4 1856
#define IDC_BUTTON_SET_SCALE_COEFFICIENT 1856
#define IDC_BUTTON_SO7_MOTION_SET_SEGMENT_DIS 1856
#define IDC_BUTTON_SO7_TEMPERATURE_SENSOR_END 1856
#define IDC_BUTTON_SO7_UTIL_TEMPERATURE_DISPLAY_EXIT 1856
#define IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_END 1856
#define IDC_BUTTON_SO7_UTIL_Keyence9011_STOP 1856
#define IDC_BUTTON_STIL_GET_DATA 1857
#define IDC_EDIT_STIL_INTERVAL 1858
#define IDC_CHECK_STIL_CONTINUE_GET_DATA 1859
@@ -1135,6 +1168,7 @@
#define IDC_EDIT_SO7_UTIL_TEMPERATURE_DISPLAY_Temperature3 1949
#define IDC_EDIT16 1950
#define IDC_EDIT_SO7_UTIL_TEMPERATURE_DISPLAY_Temperature4 1950
#define IDC_EDIT_SO7_REBOT_CONTROL_POSITION_N1 1950
#define IDC_BUTTON_SO7_UTIL_TEMPERATURE_DISPLAY_UPDATE 1951
#define IDC_BUTTON_SO7_UTIL_TEMPERATURE_DISPLAY_SAVE 1952
#define IDC_EDIT_SO7_UTIL_TEMPERATURE_DISPLAY_A1 1953
@@ -1143,10 +1177,66 @@
#define IDC_EDIT_SO7_UTIL_TEMPERATURE_DISPLAY_VALUE_B4 1955
#define IDC_EDIT5 1956
#define IDC_EDIT_SO7_UTIL_TEMPERATURE_DISPLAY_VALUE_C4 1956
#define IDC_EDIT_SO7_REBOT_CONTROL_POSITION_B0 1956
#define IDC_CHECK_PLC_TCPIP_SERVER_MEASURE_TRIG 1957
#define IDC_CHECK4 1958
#define IDC_CHECK_PLC_TCPIP_SERVER_FIX2 1958
#define IDC_EDIT_SO7_UTIL_TEMPERATURE_DISPLAY_VALUE_A4 1959
#define IDC_EDIT_SO7_REBOT_CONTROL_POSITION_Y0 1960
#define IDC_EDIT_SO7_REBOT_CONTROL_POSITION_C0 1961
#define IDC_EDIT_SO7_REBOT_CONTROL_POSITION_M0 1962
#define IDC_EDIT8 1963
#define IDC_EDIT_SO7_REBOT_CONTROL_POSITION_N0 1963
#define IDC_EDIT_SO7_REBOT_CONTROL_POSITION_X1 1964
#define IDC_EDIT_SO7_REBOT_CONTROL_POSITION_Y1 1965
#define IDC_EDIT_SO7_REBOT_CONTROL_POSITION_Z1 1966
#define IDC_EDIT_SO7_REBOT_CONTROL_POSITION_A1 1967
#define IDC_EDIT_SO7_REBOT_CONTROL_POSITION_B1 1968
#define IDC_EDIT_SO7_REBOT_CONTROL_POSITION_C1 1969
#define IDC_EDIT_SO7_REBOT_CONTROL_POSITION_M1 1970
#define IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_RUN 1971
#define IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_EXIT 1972
#define IDC_EDIT_SO7_REBOT_CONTROL_POSITION_X0 1973
#define IDC_EDIT_SO7_REBOT_CONTROL_POSITION_X2 1973
#define IDC_COMBO2 1974
#define IDC_COMBO_SO7_UTIL_Keyence9011_BAUD 1974
#define IDC_BUTTON_SO7_UTIL_Keyence9011_RECV 1975
#define IDC_BUTTON_SO7_UTIL_Keyence9011_EXIT 1976
#define IDC_CHECK_SO7_UTIL_Keyence9011_CYCLE 1977
#define IDC_EDIT_SO7_UTIL_Keyence9011_TIMER 1978
#define IDC_COMBO_SO7_UTIL_Keyence9011_PORT 1979
#define IDC_EDIT_SO7_UTIL_Keyence9011_RECVDATA 1980
#define IDC_RADIO_SO7_keyence9011 1981
#define IDC_EDIT_SO7_REBOT_CONTROL_POSITION_PRO_SELECT 1983
#define IDC_EDIT_SO7_REBOT_CONTROL_POSITION_PROGRAM 1984
#define IDC_RADIO_SO7_ROBOT 1988
#define IDC_BUTTON3 1989
#define IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_SAVEPROG 1989
#define IDC_BUTTON_PLC_TCPIP_SERVER_IMPORT 1989
#define IDC_BUTTON_SO7_PROGRAM_MOVETO_POINT 1989
#define IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_SERVOFF 1990
#define IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_SETSPEED 1991
#define IDC_EDIT2 1992
#define IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_WRITEPROGVALUE 1992
#define IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_WRITEPROG 1994
#define IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_WRITEPROGNAME 1994
#define IDC_BUTTON_ReadPosition 1995
#define IDC_BUTTON_So7_UTIL_ROBOT_CONTORL_WRITEPROGNUMBER 1996
#define IDC_EDIT_SO7_PROGRAM_DEADBAND 1997
#define IDC_RADIO_PROJECT_58354 1999
#define IDC_RADIO_PROJECT_583584 1999
#define IDC_RADIO_PROJECT_598603 2000
#define IDC_RADIO_CONTROL_EF1A 2001
#define IDC_STATIC_SELECT_IO 2003
#define IDC_STATIC_IO_OPRATION 2004
#define IDC_BUTTON_READ_IO 2006
#define IDC_STATIC_IO_STAURT 2007
#define IDC_EDIT_IO_NUMBER 2008
#define IDC_MFCBUTTON1 2009
#define IDC_MFCBUTTON_IO_STAURT 2020
#define IDC_BUTTON_IO_TEST 2030
#define IDC_BUTTON_SET_MOTION_TYPE 2031
#define IDC_BUTTON_DIY_EXIT_BUTTON 32740
#define ID_EDIT_SO7_CONFIG_MOTION 32741
@@ -1154,9 +1244,9 @@
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 200
#define _APS_NEXT_RESOURCE_VALUE 206
#define _APS_NEXT_COMMAND_VALUE 32771
#define _APS_NEXT_CONTROL_VALUE 1960
#define _APS_NEXT_CONTROL_VALUE 2010
#define _APS_NEXT_SYMED_VALUE 104
#endif
#endif