| 网站首页 | 业界新闻 | 群组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 编程论坛
大量收QQ微信精准粉/交友粉,非诚勿扰千里之行 始于足下
共有 2932 人关注过本帖
标题:给一个仪器编写一个控制界面的相关问题
只看楼主 加入收藏
lijingyi
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2016-3-7
结帖率:0
  已结贴   问题点数:5  回复次数:5   
给一个仪器编写一个控制界面的相关问题
各位大侠们好,,帮帮忙

我是一个编程的菜鸟

现在要编写一个仪器的控制界面,用vc++编写,已经建好工程,如何才能让仪器和电脑连通?? 这属于动态链接库方面的知识吗?
以下是粘贴的部分代码,,请高手指点我应该参考哪些方面的具体知识,谢谢

// TestDlg.cpp : 实现文件
//

#include "stdafx.h"
#include "Myximea.h"
#include "TestDlg.h"


// CTestDlg 对话框

IMPLEMENT_DYNAMIC(CTestDlg, CDialog)

CTestDlg::CTestDlg(CWnd* pParent /*=NULL*/)
    : CDialog(CTestDlg::IDD, pParent)
    //, m_num1(_T(""))
    //, m_num2(_T(""))
    //, m_num3(_T(""))
{

}

CTestDlg::~CTestDlg()
{
}
搜索更多相关主题的帖子: include  对话框  仪器  动态  
2016-03-07 15:34
仰望星空的
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:50
专家分:248
注 册:2015-9-28
  得分:5 
个人见识有限,一般仪器通过串口或者接口与电脑相连,在界面中添加类似串口调试程序就行吧,
你说说的动态链接库,在仪器安装驱动时候就应该直接与电脑相连结上了,换句话说,这底层的代码就不用我们写了吧;
个人间接,之前写过器件(类似于仪器)的采集控制程序,我觉得楼主遇到问题差不多,说错见谅~
收到的鲜花
  • lijingyi 于 2016-03-09 09:54 送鲜花  3朵   附言:我很赞同
2016-03-08 17:39
lijingyi
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2016-3-7
  得分:0 
回复 2楼 仰望星空的
1.非常感谢你给我的建议,让我省去了不用看动态链接库的麻烦了,
2.你说的很对,仪器和电脑是通过接口(usb)连接的,我再想问下高手,你以前也写过类似的程序,麻烦你好人帮到底,这个串口调试程序我该看哪方面的内容,
3.下面是我的程序以及出错的地方,麻烦帮我看看好吗,非常感谢
4/ TestDlg.cpp : 实现文件
//

#include "stdafx.h"
//using namespace std;
#include "Myximea.h"
#include "TestDlg.h"


#include "string.h"
#include "windows.h"
//#include "xiApi.h"
#include "memory.h"


XI_IMG image;
memset(&image,0,sizeof(image));
image.size = sizeof(XI_IMG);


HANDLE xiH = NULL;
int XI_RETURN stat = XI_OK;


// CTestDlg 对话框

IMPLEMENT_DYNAMIC(CTestDlg, CDialog)

CTestDlg::CTestDlg(CWnd* pParent /*=NULL*/)
    : CDialog(CTestDlg::IDD, pParent)
    //, m_num1(_T(""))
    //, m_num2(_T(""))
    //, m_num3(_T(""))
{

}

CTestDlg::~CTestDlg()
{
}

void CTestDlg::DoDataExchange(CDataExchange* pDX)
{
    CDialog::DoDataExchange(pDX);
    DDX_Text(pDX, IDC_EDIT1, m_num1);
    //DDX_Text(pDX, IDC_EDIT2, m_num2);
    //DDX_Text(pDX, IDC_EDIT3, m_num3);

}


BEGIN_MESSAGE_MAP(CTestDlg, CDialog)
    ON_BN_CLICKED(IDOK, &CTestDlg::OnBnClickedOk)
    ON_BN_CLICKED(IDCANCEL, &CTestDlg::OnBnClickedCancel)
//    ON_EN_CHANGE(IDC_EDIT2, &CTestDlg::OnEnChangeEdit2)
    ON_BN_CLICKED(IDCOUNT, &CTestDlg::OnBnClickedCount)
    ON_BN_CLICKED(IDSTOPAC, &CTestDlg::OnBnClickedStopac)
END_MESSAGE_MAP()


// CTestDlg 消息处理程序

void CTestDlg::OnBnClickedOk()
{
    // TODO: 在此添加控件通知处理程序代码
    OnOK();
}

void CTestDlg::OnBnClickedCancel()
{
    // TODO: 在此添加控件通知处理程序代码
    OnCancel();
}

void CTestDlg::OnEnChangeEdit2()
{
    // TODO:  如果该控件是 RICHEDIT 控件,则它将不会
    // 发送该通知,除非重写 CDialog::OnInitDialog()
    // 函数并调用 CRichEditCtrl().SetEventMask(),
    // 同时将 ENM_CHANGE 标志“或”运算到掩码中。

    // TODO:  在此添加控件通知处理程序代码
}

void CTestDlg::OnBnClickedCount()
{
    // TODO: 在此添加控件通知处理程序代码--开始采集
    /*int num1,num2,num3;
    CString str1,str2,str3;
    GetDlgItem(IDC_EDIT1)->GetWindowText(str1);
    GetDlgItem(IDC_EDIT2)->GetWindowText(str2);

    num1=_ttoi((LPCTSTR)str1);
    num2=_ttoi((LPCTSTR)str2);
    num3=num1+num2;

    _itow(num3,(TCHAR*)str3.GetBuffer(10),10);
    str3.ReleaseBuffer();
    GetDlgItem(IDC_EDIT3)->SetWindowText(str3);*/

    stat = xiOpenDevice(0, &xiH);
    HandleResult(stat,"xiOpenDevice");

    XI_RETURN xiOpenDevice(IN DWORD DevId, OUT PHANDLE * hDevice);
    XI_RETURN xiStartAcquisition(IN HANDLE hDevice);
    HandleResult(stat,"xiSetParam(exposure set)");

   


}

void CTestDlg::OnBnClickedStopac()
{
    // TODO: 在此添加控件通知处理程序代码 --停止采集

    //XI_RETURN xiStopAcquisition(IN HANDLE hDevice);
    //XI_RETURN xiCloseDevice(IN HANDLE hDevice);

}
1>------ 已启动生成: 项目: Myximea, 配置: Debug Win32 ------
1>正在编译...
1>stdafx.cpp
1>正在编译...
1>Myximea.cpp
1>MainFrm.cpp
1>MyximeaDoc.cpp
1>MyximeaView.cpp
1>TestDlg.cpp
1>.\TestDlg.cpp(16) : error C2146: 语法错误 : 缺少“;”(在标识符“image”的前面)
1>.\TestDlg.cpp(16) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>.\TestDlg.cpp(16) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>.\TestDlg.cpp(17) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>.\TestDlg.cpp(17) : error C2365: “memset”: 重定义;以前的定义是“函数”
1>        C:\Program Files (x86)\VC\include\string.h(57) : 参见“memset”的声明
1>.\TestDlg.cpp(17) : error C2078: 初始值设定项太多
1>.\TestDlg.cpp(18) : error C2143: 语法错误 : 缺少“;”(在“.”的前面)
1>.\TestDlg.cpp(18) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>.\TestDlg.cpp(18) : error C2086: “int image”: 重定义
1>        .\TestDlg.cpp(16) : 参见“image”的声明
1>.\TestDlg.cpp(22) : error C2146: 语法错误 : 缺少“;”(在标识符“stat”的前面)
1>.\TestDlg.cpp(22) : error C2513: “stat”: 在“=”前没有声明变量
1>.\TestDlg.cpp(22) : error C2065: “XI_OK”: 未声明的标识符
1>.\TestDlg.cpp(101) : error C2513: “stat”: 在“=”前没有声明变量
1>.\TestDlg.cpp(102) : error C2275: “stat”: 将此类型用作表达式非法
1>        C:\Program Files (x86)\VC\include\wchar.h(502) : 参见“stat”的声明
1>.\TestDlg.cpp(101) : error C3861: “xiOpenDevice”: 找不到标识符
1>.\TestDlg.cpp(102) : error C3861: “HandleResult”: 找不到标识符
1>.\TestDlg.cpp(104) : error C2146: 语法错误 : 缺少“;”(在标识符“xiOpenDevice”的前面)
1>.\TestDlg.cpp(104) : error C2275: “DWORD”: 将此类型用作表达式非法
1>        C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\windef.h(152) : 参见“DWORD”的声明
1>.\TestDlg.cpp(104) : error C2146: 语法错误 : 缺少“)”(在标识符“DevId”的前面)
1>.\TestDlg.cpp(104) : error C2059: 语法错误 : “)”
1>.\TestDlg.cpp(105) : error C2146: 语法错误 : 缺少“;”(在标识符“xiStartAcquisition”的前面)
1>.\TestDlg.cpp(104) : error C3861: “xiOpenDevice”: 找不到标识符
1>.\TestDlg.cpp(105) : error C2275: “HANDLE”: 将此类型用作表达式非法
1>        C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\winnt.h(402) : 参见“HANDLE”的声明
1>.\TestDlg.cpp(105) : error C2146: 语法错误 : 缺少“)”(在标识符“hDevice”的前面)
1>.\TestDlg.cpp(105) : error C2059: 语法错误 : “)”
1>.\TestDlg.cpp(106) : error C2275: “stat”: 将此类型用作表达式非法
1>        C:\Program Files (x86)\VC\include\wchar.h(502) : 参见“stat”的声明
1>.\TestDlg.cpp(105) : error C3861: “xiStartAcquisition”: 找不到标识符
1>.\TestDlg.cpp(106) : error C3861: “HandleResult”: 找不到标识符
1>正在生成代码...
1>生成日志保存在“file://g:\xiMEA\program\Myximea\Myximea\Debug\BuildLog.htm”
1>Myximea - 28 个错误,0 个警告
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
2016-03-09 09:36
仰望星空的
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:50
专家分:248
注 册:2015-9-28
  得分:0 
抱歉,今天才看到回复的帖子,
回到问题上来,既然是USB链接的,那是不是直接查看电脑com号,哪个被占用,然后通过设置这设备号来与电脑进行通讯;

或者,你仪器里面有木有底层SDK的东西,就是已经封装好的可以兼容到Vc++里面的工具包,可以看下例程啥的,我也只能帮你到这了,我也是菜鸟~

我之前也是照着网上的代码改的,现在真是记不起来了,不好意思,没有贴出实例来。
2016-03-17 15:32
王考拉
Rank: 3Rank: 3
来 自:山东
等 级:论坛游侠
威 望:1
帖 子:69
专家分:156
注 册:2015-12-9
  得分:0 
回复 4楼 仰望星空的
我现在是用电脑与数据采集卡连接,如何操作??编写VC程序连接数据采集卡进行模数转换??

我的孤独,虽败犹荣!
2016-03-22 08:44
农民工
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:21
帖 子:109
专家分:639
注 册:2015-8-22
  得分:0 
采集卡有sdk包给你的
2016-03-29 09:15







关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.036942 second(s), 10 queries.
Copyright©2004-2018, BCCN.NET, All Rights Reserved