机械手程序代码.docx

上传人:b****7 文档编号:24937790 上传时间:2023-06-03 格式:DOCX 页数:203 大小:44.38KB
下载 相关 举报
机械手程序代码.docx_第1页
第1页 / 共203页
机械手程序代码.docx_第2页
第2页 / 共203页
机械手程序代码.docx_第3页
第3页 / 共203页
机械手程序代码.docx_第4页
第4页 / 共203页
机械手程序代码.docx_第5页
第5页 / 共203页
点击查看更多>>
下载资源
资源描述

机械手程序代码.docx

《机械手程序代码.docx》由会员分享,可在线阅读,更多相关《机械手程序代码.docx(203页珍藏版)》请在冰豆网上搜索。

机械手程序代码.docx

机械手程序代码

//countDlg.cpp:

实现文件

//

#include"stdafx.h"

#include"count.h"

#include"countDlg.h"

#include"stdafx.h"

#include"afxdialogex.h"

#include

#include

#include

#include"MyThreadPool.h"

#include"MyThread.h"

#include

#ifdef_DEBUG

#definenewDEBUG_NEW

#endif

usingnamespacestd;

 

CTestTask:

:

CTestTask(intid)

:

CTask(id)

{

}

CTestTask:

:

~CTestTask(void)

{

}

CMyThreadPoolthreadpool(10);

//用于应用程序“关于”菜单项的CAboutDlg对话框

structLinkingBoard1

{

BOOLlistflag1;//板子测试位空闲标志1为位空闲0为忙碌

BOOLlistflag2;//板子测试位空闲标志1为位空闲0为忙碌

BOOLlistflag3;//板子测试位空闲标志1为位空闲0为忙碌

BOOLlistflag4;//板子测试位空闲标志1为位空闲0为忙碌

inttestresult1;//板子测试结果标志8为PASS6为FAIL2为没有测试

inttestresult2;//板子测试结果标志8为PASS6为FAIL

inttestresult3;//板子测试结果标志8为PASS6为FAIL

inttestresult4;//板子测试结果标志8为PASS6为FAIL

BOOLboard1;//工位有无测试板子标志

BOOLboard2;//工位有无测试板子标志

BOOLboard3;//工位有无测试板子标志

BOOLboard4;//工位有无测试板子标志

CStringdisabled1;//工位不可用颜色

CStringdisabled2;//工位不可用颜色

CStringdisabled3;//工位不可用颜色

CStringdisabled4;//工位不可用颜色

BOOLstations1;//工位1是否可用

BOOLstations2;//工位2是否可用

BOOLstations3;//工位3是否可用

BOOLstations4;//工位4是否可用

BOOLtesttostation1;//工位是否执行测试标志

BOOLtesttostation2;//工位是否执行测试标志

BOOLtesttostation3;//工位是否执行测试标志

BOOLtesttostation4;//工位是否执行测试标志

intcurrent1;//板子测试位正在测试的板子编号

intcurrent2;//板子测试位正在测试的板子编号

intcurrent3;//板子测试位正在测试的板子编号

intcurrent4;//板子测试位正在测试的板子编号

BOOLtesting1;//测试板子完成标志0正在测试1测试完成

BOOLtesting2;//测试板子完成标志0正在测试1测试完成

BOOLtesting3;//测试板子完成标志0正在测试1测试完成

BOOLtesting4;//测试板子完成标志0正在测试1测试完成

inttest1;//抓板子到工位的标志用于最后不显示重复测试

inttest2;//抓板子到工位的标志用于最后不显示重复测试

inttest3;//抓板子到工位的标志用于最后不显示重复测试

inttest4;//抓板子到工位的标志用于最后不显示重复测试

intpfail1;//抓板子到PASSFAIL的标志用于最后不显示重复测试

intpfail2;//抓板子到PASSFAIL的标志用于最后不显示重复测试

BOOLpfail3;//抓板子到PASSFAIL的标志用于最后不显示重复测试

BOOLpfail4;//抓板子到PASSFAIL的标志用于最后不显示重复测试

BOOLready1;//字据工位是否准备好拿去测试1为准备好0为未准备好

BOOLready2;//字据工位是否准备好拿去测试1为准备好0为未准备好

BOOLready3;//字据工位是否准备好拿去测试1为准备好0为未准备好

BOOLready4;//字据工位是否准备好拿去测试1为准备好0为未准备好

BOOLreaddy1;//工位是否准备好拿走到passorfail1为准备好0为未准备好

BOOLreaddy2;//工位是否准备好拿走到passorfail1为准备好0为未准备好

BOOLreaddy3;//工位是否准备好拿走到passorfail1为准备好0为未准备好

BOOLreaddy4;//工位是否准备好拿走到passorfail1为准备好0为未准备好

};

structB

{

intcount1;//字据1提供的工位数

intcount2;//字据2提供的工位数

intcount3;//字据3提供的工位数

intcount4;//字据4提供的工位数

intconduct1;//执行切割板测试

intconduct2;//执行切割板测试

intconduct3;//执行切割板测试

intconduct4;//执行切割板测试

BOOLlinkingboard;//测试板子是否是连板的标志,1连板,0为切割板

BOOLstation1;//字据1是否可用

BOOLstation2;//字据2是否可用

BOOLstation3;//字据3是否可用

BOOLstation4;//字据4是否可用

intunt;

intttp;//提供的字据数进行判断

inttestresult1;//板子测试结果标志8为PASS6为FAIL2为没有测试

inttestresult2;//板子测试结果标志8为PASS6为FAIL2为没有测试

inttestresult3;//板子测试结果标志8为PASS6为FAIL2为没有测试

inttestresult4;//板子测试结果标志8为PASS6为FAIL2为没有测试

BOOLlinkflag1;//连板字据1是否空闲

BOOLlinkflag2;//连板字据2是否空闲

BOOLlinkflag3;//连板字据3是否空闲

BOOLlinkflag4;//连板字据4是否空闲

BOOLlinktesting1;//连接测试板子测试完成标志0正在测试1测试完成

BOOLlinktesting2;//连接测试板子测试完成标志0正在测试1测试完成

BOOLlinktesting3;//连接测试板子测试完成标志0正在测试1测试完成

BOOLlinktesting4;//连接测试板子测试完成标志0正在测试1测试完成

BOOLready1;//字据工位是否准备好拿去测试1为准备好0为未准备好

BOOLready2;//字据工位是否准备好拿去测试1为准备好0为未准备好

BOOLready3;//字据工位是否准备好拿去测试1为准备好0为未准备好

BOOLready4;//字据工位是否准备好拿去测试1为准备好0为未准备好

BOOLreaddy1;//工位是否准备好拿走到passorfail1为准备好0为未准备好

BOOLreaddy2;//工位是否准备好拿走到passorfail1为准备好0为未准备好

BOOLreaddy3;//工位是否准备好拿走到passorfail1为准备好0为未准备好

BOOLreaddy4;//工位是否准备好拿走到passorfail1为准备好0为未准备好

intcurrent1;//板子测试位正在测试的板子编号

intcurrent2;//板子测试位正在测试的板子编号

intcurrent3;//板子测试位正在测试的板子编号

intcurrent4;//板子测试位正在测试的板子编号

inttestedd1;//否执行抓取测试

inttestedd2;//是否执行抓取测试

inttestedd3;//是否执行抓取测试

inttestedd4;//是否执行抓取测试

inttested1;//是否执行抓取测试抓取到PASSfail

inttested2;//是否执行抓取测试抓取到PASSfail

inttested3;//是否执行抓取测试抓取到PASSfail

inttested4;//是否执行抓取测试抓取到PASSfail

BOOLcap1;//1和好0打开

BOOLcap2;//1和好0打开

BOOLcap3;//1和好0打开

BOOLcap4;//1和好0打开

BOOLm_station1;//执行工位测试标志

BOOLm_station2;//执行工位测试标志

BOOLm_station3;//执行工位测试标志

BOOLm_station4;//执行工位测试标志

intgrab1;//反复测试,抓取板子数量到pass或者fail的总数等于字据数量才可以进行抓取测试

intgrab2;//反复测试,抓取板子数量到pass或者fail的总数等于字据数量才可以进行抓取测试

intgrab3;//反复测试,抓取板子数量到pass或者fail的总数等于字据数量才可以进行抓取测试

intgrab4;//反复测试,抓取板子数量到pass或者fail的总数等于字据数量才可以进行抓取测试

LinkingBoard1LB[4];

BOOLmachinehand;//机械手是否空闲1为空闲0处于占用状态

intstop;

BOOLlink;//执行连板或切割板标志,1为连板0为切割板

};

Bb;

classCAboutDlg:

publicCDialogEx

{

public:

CAboutDlg();

//对话框数据

enum{IDD=IDD_ABOUTBOX};

protected:

virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDV支持

//实现

protected:

DECLARE_MESSAGE_MAP()

};

CAboutDlg:

:

CAboutDlg():

CDialogEx(CAboutDlg:

:

IDD)

{

}

voidCAboutDlg:

:

DoDataExchange(CDataExchange*pDX)

{

CDialogEx:

:

DoDataExchange(pDX);

}

BEGIN_MESSAGE_MAP(CAboutDlg,CDialogEx)

END_MESSAGE_MAP()

 

//CcountDlg对话框

 

CcountDlg:

:

CcountDlg(CWnd*pParent/*=NULL*/)

:

CDialogEx(CcountDlg:

:

IDD,pParent)

m_count(0)

m_current(0)

m_list1(0)

m_list2(0)

m_list3(0)

m_list4(0)

m_pass(0)

m_fail(0)

m_list5(0)

m_list6(0)

m_list7(0)

m_list8(0)

m_list9(0)

m_list10(0)

m_list11(0)

m_list12(0)

m_list13(0)

m_list14(0)

m_list15(0)

m_list16(0)

{

m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);

m_disabled.CreateSolidBrush(RGB(0,0,0));

}

voidCcountDlg:

:

DoDataExchange(CDataExchange*pDX)

{

CDialogEx:

:

DoDataExchange(pDX);

DDX_Text(pDX,IDC_EDIT1,m_count);

DDX_Text(pDX,IDC_EDIT2,m_current);

DDX_Text(pDX,IDC_LIST1,m_list1);

DDX_Text(pDX,IDC_LIST2,m_list2);

DDX_Text(pDX,IDC_LIST3,m_list3);

DDX_Text(pDX,IDC_LIST4,m_list4);

DDX_Text(pDX,IDC_PASS,m_pass);

DDX_Text(pDX,IDC_FAIL,m_fail);

DDX_Text(pDX,IDC_LIST5,m_list5);

DDX_Text(pDX,IDC_LIST6,m_list6);

DDX_Text(pDX,IDC_LIST7,m_list7);

DDX_Text(pDX,IDC_LIST8,m_list8);

DDX_Text(pDX,IDC_LIST9,m_list9);

DDX_Text(pDX,IDC_LIST10,m_list10);

DDX_Text(pDX,IDC_LIST11,m_list11);

DDX_Text(pDX,IDC_LIST12,m_list12);

DDX_Text(pDX,IDC_LIST13,m_list13);

DDX_Text(pDX,IDC_LIST14,m_list14);

DDX_Text(pDX,IDC_LIST15,m_list15);

DDX_Text(pDX,IDC_LIST16,m_list16);

DDX_Control(pDX,IDC_LIST17,m_list17);

DDX_Control(pDX,IDC_LIST18,m_list18);

DDX_Control(pDX,IDC_LIST19,m_list19);

DDX_Control(pDX,IDC_LIST20,m_list20);

}

BEGIN_MESSAGE_MAP(CcountDlg,CDialogEx)

ON_WM_SYSCOMMAND()

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

ON_EN_CHANGE(IDC_EDIT1,&CcountDlg:

:

OnEnChangeEdit1)

ON_BN_CLICKED(IDC_BUTTON1,&CcountDlg:

:

OnBnClickedButton1)

ON_WM_CTLCOLOR()

ON_WM_SIZE()

END_MESSAGE_MAP()

 

//CcountDlg消息处理程序

BOOLCcountDlg:

:

OnInitDialog()

{

CDialogEx:

:

OnInitDialog();

//((CEdit*)GetDlgItem(IDC_EDIT1))->SetLimitText(3);

//将“关于...”菜单项添加到系统菜单中。

//IDM_ABOUTBOX必须在系统命令范围内。

ASSERT((IDM_ABOUTBOX&0xFFF0)==IDM_ABOUTBOX);

ASSERT(IDM_ABOUTBOX<0xF000);

CMenu*pSysMenu=GetSystemMenu(FALSE);

if(pSysMenu!

=NULL)

{

BOOLbNameValid;

CStringstrAboutMenu;

bNameValid=strAboutMenu.LoadString(IDS_ABOUTBOX);

ASSERT(bNameValid);

if(!

strAboutMenu.IsEmpty())

{

pSysMenu->AppendMenu(MF_SEPARATOR);

pSysMenu->AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);

}

}

//设置此对话框的图标。

当应用程序主窗口不是对话框时,框架将自动

//执行此操作

SetIcon(m_hIcon,TRUE);//设置大图标

SetIcon(m_hIcon,FALSE);//设置小图标

//TODO:

在此添加额外的初始化代码

//TODO:

在此添加额外的初始化代码

CRectrect;

//获取编程语言列表视图控件的位置和大小

m_list17.GetClientRect(&rect);

m_list18.GetClientRect(&rect);

m_list19.GetClientRect(&rect);

m_list20.GetClientRect(&rect);

//为列表视图控件添加全行选中和栅格风格

m_list17.SetExtendedStyle(m_list17.GetExtendedStyle()|LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);

m_list18.SetExtendedStyle(m_list18.GetExtendedStyle()|LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);

m_list19.SetExtendedStyle(m_list19.GetExtendedStyle()|LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);

m_list20.SetExtendedStyle(m_list20.GetExtendedStyle()|LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);

//为列表视图控件添加三列

m_list17.InsertColumn(0,_T("TestStation"),LVCFMT_CENTER,rect.Width()/2,1);

m_list17.InsertColumn(1,_T("TestItem"),LVCFMT_CENTER,rect.Width()/2,1);

m_list18.InsertColumn(0,_T("TestStation"),LVCFMT_CENTER,rect.Width()/2,0);

m_list18.InsertColumn(1,_T("TestItem"),LVCFMT_CENTER,rect.Width()/2,1);

m_list19.InsertColumn(0,_T("TestStation"),LVCFMT_CENTER,rect.Width()/2,0);

m_list19.InsertColumn(1,_T("TestItem"),LVCFMT_CENTER,rect.Width()/2,1);

m_list20.InsertColumn(0,_T("TestStation"),LVCFMT_CENTER,rect.Width()/2,0);

m_list20.InsertColumn(1,_T("TestItem"),LVCFMT_CENTER,rect.Width()/2,1);

 

b.conduct1=0;

b.conduct2=0;

b.conduct3=0;

b.conduct4=0;

//读取配置文档

CStringFilePath;

//NULL一个模块的句柄。

可以是一个DLL模块,或者是一个应用程序的实例句柄。

如果该参数为NULL该函数返回该应用程序全路径

//FilePath.GetBufferSetLength指定一个字串缓冲区

//装载到缓冲区FilePath.GetBufferSetLength的最大字符数量

GetModuleFileName(NULL,FilePath.GetBufferSetLength(MAX_PATH+1),MAX_PATH);

intn;

//在一个较大的字符串中从末端开始查找本地目录字符,返回位置

n=FilePath.ReverseFind('\\');

//从左侧截取当前相对路径

FilePath=FilePath.Left(n);

//当前绝对路径为测试计划NTG_55TestPlan.txt的位置

FilePath+="\\configuration_document.ini";

b.linkingboard=GetPrivateProfileInt(L"CUSTOM",L"Linkingboard",888,FilePath);

if(b.linkingboard==888)

{

CStringstr;

str="Readingconfigurationdocument“Linkingboard”isError";

AfxMessageBox(str);

}

if(b.linkingboard==1)//连板

{

GetLinkCount(FilePath);

}

else//if(b.linkingboard==0)//不是连板

{

GetNoLinkCount(FilePath);

}

 

returnTRUE;//除非将焦点设置到控件,否则返回TRUE

}

//获取连板字据容量

voidCcountDlg:

:

GetLinkCount(CStringFilePath)

{

b.station1=GetPrivateProfileInt(L"CUSTOM",L"station1",888,FilePath);

if(b.station1)

{

b.linkflag1=1;//连板字据1空闲

}

b.station2=GetPrivateProfileInt(

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 财会金融考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1