c#调用ATL组件问题

贪玩的老鼠 2011-08-15 09:49:40

private void button4_Click(object sender, EventArgs e)
{
ICCardLib.CardManage ss = new ICCardLib.CardManage();//com组件
ss.Init("COM1:baud=38400,parity=N,data=8,stop=1", 255);
ss.BroadcastAdjustTime();//程序执行到这里,不往下走了
int n=ss.Result;
........
}

//对应的C++代码 测试代码可以执行

ICCardLib::ICardManagePtr p;
p.CreateInstance("ICCard.CardManage");
p->Init("COM1:baud=38400,parity=N,data=8,stop=1",255);
p->BroadcastAdjustTime();

这是什么原因啊?如果解决
...全文
2406 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
贪玩的老鼠 2011-08-19
  • 打赏
  • 举报
回复
搞定了!
直接调用是无法达到效果的!!
只能采用异步委托!!!
真郁闷!!

现在OK了
贪玩的老鼠 2011-08-19
  • 打赏
  • 举报
回复
楼上的有Q没,把DLL发给你,
你试一下就知道了
Forget 2011-08-17
  • 打赏
  • 举报
回复
这跟框架没关系吧,你用线程处理不就不卡了吗?同步执行淡然会挂起当前线程。
mjp1234airen4385 2011-08-17
  • 打赏
  • 举报
回复
VB.net去掉框架那就是VB
VC.net去掉框架那就是VC。
C#.net去掉框架什么都不是。


所以C#是微软为dotnet平台量身定做的语言。
贪玩的老鼠 2011-08-17
  • 打赏
  • 举报
回复
事实就是那样,
我用VB.NET做测试,
如果设置程序包含框架,程序就卡在那里,
如果没有包含框架,运行就正常,

那个组件要跟串口通信,并等待串口的返回值,
发送命令是OK的,可是堵在接收命令那里
「已注销」 2011-08-16
  • 打赏
  • 举报
回复
不会,帮顶下!
sdl2005lyx 2011-08-16
  • 打赏
  • 举报
回复
ATL组件怎么有跟VB.NET扯上关系,把人都弄糊涂了。。。。
贪玩的老鼠 2011-08-16
  • 打赏
  • 举报
回复
现在找到原因了,是那.NET框架的问题!
我用VB.NET在编译的时候,没使用.net框架执行成功,
使用框架编译的程序,执行不成功!
c#怎么取消框架啊.
贪玩的老鼠 2011-08-16
  • 打赏
  • 举报
回复
BroadcastAdjustTime向考勤机发送广播校时

----
SetWaitTime(d, 2000);//设置超时两秒

卡在
void *m_pActReturn = StartICDMCommand(d,mmm,28, &nRecvCount, sizeof(int));
//此函数是向考勤机发命令字.并等待返回结果
贪玩的老鼠 2011-08-16
  • 打赏
  • 举报
回复
init 是第一个参数是BSTR
贪玩的老鼠 2011-08-16
  • 打赏
  • 举报
回复
跟字符串没关系!!
mjp1234airen4385 2011-08-16
  • 打赏
  • 举报
回复
ICCardLib.CardManage ss = new ICCardLib.CardManage();//com组件
ss.Init("COM1:baud=38400,parity=N,data=8,stop=1", 255);
ss.BroadcastAdjustTime();//程序执行到这里,不往下走了
int n=ss.Result;


看看ss下有没有CreateControl这个方法,如果有,请调用试试(在ICCardLib.CardManage ss = new ICCardLib.CardManage();这句话之后)。
你看看C++里Init这个地方用的是什么数据类型,在你导入到ActiveX里时候是什么格式的,会不会有问题。
能不能改成StringBuilder
sdl2005lyx 2011-08-16
  • 打赏
  • 举报
回复
ATL的COM组件是你自己开发的吗?如果是,就好解决了,
第一种办法:工程的调试属性:“启用非托管代码调试”选项勾上,F11进入组件内部。
第二种办法:启用ATL调试,直接把net程序当成外挂应用程序,在组件内部函数BroadcastAdjustTime设置断点
贪玩的老鼠 2011-08-16
  • 打赏
  • 举报
回复
catch没用的,他卡在那里不动,
当你关闭对话框时,它又往下执行拉
falx2004 2011-08-16
  • 打赏
  • 举报
回复
Unicode 的问题?
ycproc 2011-08-16
  • 打赏
  • 举报
回复
catch一下

Message打印出来
贪玩的老鼠 2011-08-16
  • 打赏
  • 举报
回复
怎么没人呢?
stonespace 2011-08-15
  • 打赏
  • 举报
回复
在BroadcastAdjustTime内部ShowMessageBox输出信息,寻找出错原因,
omagic 2011-08-15
  • 打赏
  • 举报
回复
学习,帮顶了。

110,570

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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