三菱PLC通信插件bug(解决的大哥发个红包也行)

XSXY18 2020-11-26 11:22:51
三菱官方插件使用GetDevice就提示类型不匹配
别人用vs2013和三菱官方vs2017版本的程序就可以正常使用这个函数
vs2019创建的就提示类型不匹配
...全文
520 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Eleven 2020-11-30
  • 打赏
  • 举报
回复
DoDataExchange写的是DDX_Text(pDX, IDC_EDIT_XXX, m_devicename_edit);
Eleven 2020-11-27
  • 打赏
  • 举报
回复
完整的错误信息是什么?
XSXY18 2020-11-27
  • 打赏
  • 举报
回复
引用 8 楼 Eleven 的回复:
GetDevice的函数原型是怎样的?
Visual C++ .NET (MFC) lRet = object.GetDevice(szDevice、 *lplData) Long lRet 返回值 Output CString szDevice 软元件名 Input Long *lplData 获取数据 官方手册上这样子写的
Eleven 2020-11-27
  • 打赏
  • 举报
回复
GetDevice的函数原型是怎样的?
XSXY18 2020-11-27
  • 打赏
  • 举报
回复
断点打在 lRet = m_ActUltType.GetDevice(m_devicename_edit, &lValue);// 获取数值 或者 lRet = m_ActProType.GetDevice(m_devicename_edit, &lValue); //获取数值 到断点可以看到m_devicename_edit值是正常的比如“X01” 继续运行还没到下一个断点 (在if (lRet == 0x00){ // 返回值为0,说明获取成功,用两种形式显示数值 m_retval1.Format(L"0x%04x(%d)", lValue, lValue); // Device Value) 就MFC窗口就提示类型不匹配 &lValue都获取不到值
XSXY18 2020-11-27
  • 打赏
  • 举报
回复
引用 5 楼 Eleven 的回复:
你是不是窗口子控件绑定了什么类型?比如Edit Box控件关联了一个CEdit对象??或者说Edit Box需要关联一个CString类对象,但是你关联了一个CEdit类对象,或者反过来?
void Cplctest1Dlg::OnBnClickedGetvalueButton() { // TODO: 在此添加控件通知处理程序代码 long lRet; long lValue; CString MsgStr; UpdateData(TRUE); //获取界面中填写的端口号 m_return_edit = ""; m_retval1 = ""; //获取数值显示控件 m_retval2 = ""; //此控件用于显示PLC型号,此函数没用 //判断设备名是否为空 if (L"" == m_devicename_edit) { AfxMessageBox(L"选择软原件名为空,请正确输入软原件名"); return; } try { if (0 == m_nCurType) //UTL连接模式 { lRet = m_ActUltType.GetDevice(m_devicename_edit, &lValue);// 获取数值 } else if (1 == m_nCurType) //prog连接模式 { // ActProgType Control lRet = m_ActProType.GetDevice(m_devicename_edit, &lValue); //获取数值 } if (lRet == 0x00){ // 返回值为0,说明获取成功,用两种形式显示数值 m_retval1.Format(L"0x%04x(%d)", lValue, lValue); // Device Value } // Renew ReturnValue m_return_edit.Format(L"0x%08x", lRet); } catch (COleDispatchException *Exception) { // OLE IDispatch Interface Error //MsgStr.LoadString(IDS_STRING103); AfxMessageBox(L"获取软原件值出错"); //Exception->Delete(); } UpdateData(FALSE); } 应该不是吧 edit box上我加的是cstring变量,主要是同样的代买别的低版本vs写的可以正常 我2019就GG
Eleven 2020-11-27
  • 打赏
  • 举报
回复
你是不是窗口子控件绑定了什么类型?比如Edit Box控件关联了一个CEdit对象??或者说Edit Box需要关联一个CString类对象,但是你关联了一个CEdit类对象,或者反过来?
XSXY18 2020-11-27
  • 打赏
  • 举报
回复
XSXY18 2020-11-27
  • 打赏
  • 举报
回复
引用 1 楼 Eleven 的回复:
完整的错误信息是什么?
这样子的 并不是VS提示的错误 程序提示类型不匹配 字符集两种都试过 就很迷 打断点看了一下就是你的程序和官方样本 getdevice可以正常返回值,我写就软元件名变量一传入就提示类型不正确,返回变量都没有
XSXY18 2020-11-27
  • 打赏
  • 举报
回复

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧