优秀的毕业设计论文网
计算机 JAVA 电子信息 单片机 机械机电 模具 土木工程 建筑结构 论文
热门搜索词:网络 ASP.NET 汽车 电气 数控 PLC

模拟实验测试平台

以下是资料介绍,如需要完整的请充值下载.
1.无需注册登录,支付后按照提示操作即可获取该资料.
2.资料以网页介绍的为准,下载后不会有水印.资料仅供学习参考之用.
  
资料介绍:

5 实现代码及其效果介绍
5.1 程序效果介绍
该平台它能够对各同学编写完成的虚拟器件进行测试,首先要做的是将编写好的器件封装成的DLL库以及存放器件信息的TXT文件的名字告诉平台,然后平台就可以对其进行装载,并且将器件显示在器件图中,之后就可以开始对器件进行简单的测试。

【买计算机毕业论文就到计算机毕业论文网】 本文来自think58 [资料来源:http://think58.com]

think58好,好think58
[资料来源:THINK58.com]


5.2 主要函数介绍
5.2.1 对DLL库进行装载
下面一段代码实现了对DLL函数库的加载以及对DLL库里的函数调用,具体方法是用HMODULE hMod = LoadLibrary(m_LibName+"Dll.dll");对指定的DLL库进行了加载,然后再以pComp = pfnEF((LPVOID )pDoc)导出函数返回了一个指针值,然后就可以以这个指针来调用其中的函数。
void CTestComponentDlg::OnBtnLoad()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);

HMODULE hMod = LoadLibrary(m_LibName+"Dll.dll");
typedef DComponent* (*PExportedFn)(LPVOID ); 本文来自think58 [来源:http://www.think58.com]

PExported FnpfnEF=(PExportedFn)GetProcAddress(hMod,"Create"+m_LibName); 内容来自think58 [资料来源:http://THINK58.com]

pComp = pfnEF((LPVOID )pDoc);
// int ver = pComp->GetVersion();

think58 [资料来源:THINK58.com]

[资料来源:http://THINK58.com]

UpdateData(FALSE);
} think58.com [资料来源:http://www.THINK58.com]

5.2.2 读取器件信息
下面这段代码可以将指定的.TXT文本文档中的器件信息进行读取,其中包括器件位置(画图时开始的位置)、管脚信息等相关信息。
它首先是打开了一个文档,该文档的开始地址给了FP这个指针然后用自己编写的一个函数pComp->ReadInfo(fp,pDoc)对该文档的内容进行了读取。
void CTestComponentDlg::OnBtnReadinfo()
{

// TODO: Add your control notification handler code here
FILE *fp ;
UpdateData(TRUE);
fp = fopen(m_CompMsg,"rt");
pComp->ReadInfo(fp,pDoc);
fclose(fp);
UpdateData(FALSE);
} think58.com [资料来源:http://THINK58.com]

5.2.3 显示器件
这段代码完成的是画出器件图的功能,它根据读取器件代码所读取到的信息来完成器件图的显示。
void CTestComponentDlg::OnBtnDisp()
{
// TODO: Add your control notification handler code here
CDC *pdc = c_Field.GetDC();

// int ver = pComp->GetVersion();
// char *pName = pComp->GetMyName() ;
pComp->DrawObject(pdc);
c_Field.ReleaseDC(pdc);
}

copyright think58 [资料来源:http://THINK58.com]

[资料来源:www.THINK58.com]

5.2.4 对单一管脚施加信号
这是对单一管脚的信号施加代码段m_Pin是管脚编号,SigVal是信号值。
void CTestComponentDlg::OnBtnaddsig()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
pComp->OutSig(m_Pin,m_SigVal); //m_Pin是管脚编SigVal是信号
UpdateData(FALSE);
} 本文来自think58

[资料来源:www.THINK58.com]

5.2.5 连续信号施加
在这里由于要施加连续信号,所以使用了一个定时器SetTimer(100,500,NULL)函数,在定时器内打开了一个TXT文档,在这文档中提取出了2个整形参数(管脚编号与信号值)再将它赋给相对应的管脚。在读完文档后释放了fp指针。
void CTestComponentDlg::OnButton1()
{
// TODO: Add your control notification handler code here
SetTimer(100,500,NULL);
fp = fopen("cmd.txt","r"); [资料来源:http://www.THINK58.com]

} think58好,好think58

[资料来源:http://THINK58.com]

void CTestComponentDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
char buf[250];
if(fp != NULL)
{
int pin,s;
fgets(buf,250,fp);
sscanf(buf,"%d,%d",&pin,&s);
pComp->OutSig(pin,s);
// c_ListMsg.AddString(buf);
if(feof(fp))
{
fclose(fp);
fp = NULL ;
}
}
CDialog::OnTimer(nIDEvent);
} [来源:http://think58.com]

[资料来源:http://www.THINK58.com]