温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Vc++6.0如何调用KvTcpipClientOcx控件

发布时间:2021-11-26 15:16:17 来源:亿速云 阅读:282 作者:iii 栏目:互联网科技

这篇文章主要讲解了“Vc++6.0如何调用KvTcpipClientOcx控件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vc++6.0如何调用KvTcpipClientOcx控件”吧!

一、v0.2思路

  1. 因不知道aardio中数据类型和ocx中函数调用的参数类型如何对应 ,感觉继续用aardio是徒劳的,连登录函数都调用不成功的。组态王的帮助文档说KvRealDBClient.exe是基于Vc++开发的,我只能求助于Vc++了。

  2. 无奈VS IDE实在太大了,又耗内存,于是装VM,装XP,装Vc+6.0搭建开发环境,就用去了一两天,还好没啥问题,准备堆码。

  3. 不会Vc++,不会MFC,临时抱佛脚,边百度边看边码,累得腰疼。

二、Vc++6.0测试代码

  1. 我以为的可行方案是用windows定时任务每几分钟调用一次exe,exe中获取实时数据并发送到串口,然后自动结束退出,不管接收方是否收到。

  2. 登录和取值测试代码如下:

BOOL CMingdadataDlg::OnInitDialog()
	{
	CDialog::OnInitDialog();
	//....省略编辑器自动生成的代码

	LPCTSTR server_ip_address = "127.0.0.1";
	unsigned short server_port = 41190;
	LPCTSTR user_name = "admin";
	LPCTSTR user_password = "77887788";

	//::SysFreeString(bstr);

	CString  dataStr = "##";
        CTime curTime = CTime::GetCurrentTime();
        dataStr += curTime.Format("%Y%m%d%H%M");

	//MessageBox(dataStr);
        //尝试登录
	short ret = m_kvtcpipserver.Method_LoginServer(server_ip_address, server_port, 
	user_name, user_password);

	CString strTmp;
	strTmp.Format("%d",ret);
	MessageBox("Login?: " +   strTmp);

         unsigned short station_id = 0;
	 unsigned long variable_id = 22;

         BSTR variable_value_string = ::SysAllocString(L"");
	 short v_type = 3;

        //根据id获取其值
	ret = m_kvtcpipserver.Method_GetVariableValueByVariableId(station_id,variable_id,
	                      &v_type,  &variable_value_string);


        strTmp.Format("%d",ret);
	MessageBox("get data value ok?: " +   strTmp);

	strTmp.ReleaseBuffer();
	dataStr.ReleaseBuffer();

	return TRUE;  // return TRUE  unless you set the focus to a control
}

greate!编译成release版本进行测试。

三、测试吧测试吧

  1. 可喜可贺,登录测试成功

Vc++6.0如何调用KvTcpipClientOcx控件

  1. 小激动后面就是无情的鞭笞

Vc++6.0如何调用KvTcpipClientOcx控件

  1. 首先想吐槽下组态王,不过也不能吐(mei)槽(gei)人(qian)家。文档接口中的某些参数的默认值没有给出,比如登录接口的server_port参数。也是好找一把。我是通过登录KvRealDBClient.exe后用netstat命令去猜的。出现的几个端口逐一代入。最后确定为 KvTcpipClientOcx登录接口Method_LoginServer的server_port参数值为41190。

Vc++6.0如何调用KvTcpipClientOcx控件

  1. 虽然登录成功了,但是用一个变量的ID去查值的时候,总是不成功,改尽各种可能的参数,也是没有成功,始终返回的2(访问本地库或者远程库失败)。KvRealDBClient.exe能调用到结果,我在Vc++中却拿不到,郁闷,不知是不是还有其他隐含参数 。

感谢各位的阅读,以上就是“Vc++6.0如何调用KvTcpipClientOcx控件”的内容了,经过本文的学习后,相信大家对Vc++6.0如何调用KvTcpipClientOcx控件这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

c++
AI