光的猪猪 2021-06-21 09:35 采纳率: 50%
浏览 61

1、Qt开发ActiveX如何使两个类的信号槽都能响应。2、ATL项目中有线程的方式完成串口通信

1、Qt ActiveX Server项目创建后默认只会导出一个类。而我现在有一个主界面类baslerMatchModel,一个显示和绘制图像的窗口类QVisionWidget。若按照默认创建ActiveX控件后只会导出主界面类的方法,而另一个窗口类的方法就没有导出,导致不能响应相应的槽函数。若导出两个类,曾尝试在主界面类和窗口类的声明中都用Q_CLASSINFO来定义其ClassID、InterfaceID、EventsID,使用QAXFACTORY_BEGIN()和QAXFACTORY_END()来引用。

窗口类QVisionWidget的ClassID、InterfaceID、EventsID皆为自己编写的,没有找到像ATL项目那样可以添加控件的,所以自己编写。

编译后报错:

问题:不知如此导出两个类的操作是否合法,若不合法,不知如何才能让窗口类也可以响应信号槽。

2、RS232串口读写操作:在c++项目中实现一样的代码,上位机是可以正常发送指令和监听接收到下位机的应答指令;但是,创建ATL项目后,把代码移植过去,生成DLL后,用HTML调用其接口函数发送指令,无论是否发送成功,程序都会报接收不到下位机应答的错误,即使是等候10秒依然是接收不到。而在C++项目中运行时并不会发生这种情况。

ATL项目详细如下:(函数体与建C++测试工程时是一样的)把打开串口函数openCom,关闭串口函数close,发送指令函数send和获取错误码函数error导出为接口函数,如下图:

线程函数则是全局函数,在打开串口后就会被创建,如图:

在关闭串口函数中判断是否线程接收到下位机应答:

获取错误码的接口函数:

使用HTML调用其函数,实现上位机给下位机发送指令,会报“no receive, time out!”的错误信息:

 

  • 写回答

2条回答 默认 最新

  • 光的猪猪 2021-06-21 14:14
    关注

    第一个问题本人已解决,第二个问题未解决

    评论

报告相同问题?

悬赏问题

  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 正弦信号发生器串并联电路电阻无法保持同步怎么办
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据
  • ¥15 个人网站被恶意大量访问,怎么办
  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 Centos / PETGEM
  • ¥15 划分vlan后不通了
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)