C#调用C++封装的dll,函数执行成功了,设备没有执行指令,求大神指教问题在哪

南天空 2016-03-11 03:52:21
C#中关键代码如下:
public class ControlFunction
{
[DllImport("DCS_APP1.dll", EntryPoint = @"Leds",CallingConvention=CallingConvention.StdCall)]
public static extern int Leds(int console,int gate,int unit,int status,int value);//控制Led灯
}
public static void LedOn()
{
int result = ControlFunction.Leds(0,0,0,1,0x004);
if (result==-3040)
{
MessageBox.Show("状态错误!");
}
}
Leds()函数的正确的返回值是0,函数在C#写的测试程序中能正常调用,返回值也是0 ,但是控制的设备led没有跟着变化。请问是哪块的问题。
函数的原型是 int PASCAL EXPORT Leds(int console,int gate,int unit,int status,int value)
...全文
139 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
南天空 2016-03-13
  • 打赏
  • 举报
回复
已经找到问题所在,封装和调用都没有问题,谢谢诸位大神。
socg 2016-03-11
  • 打赏
  • 举报
回复
厂家的demo有没有源代码,一行行的看,你是不是弄掉了初始化过程
Poopaye 2016-03-11
  • 打赏
  • 举报
回复
引用 4 楼 guonan198811 的回复:
[quote=引用 3 楼 shingoscar 的回复:] 用c++程序测试过吗?
用厂家给的测试工具测试没有问题,可以正常控制LED的亮灭,自己封装的调用也没有错误,就是控制不了设备[/quote] 我说自己写c++程序测试过吗?
南天空 2016-03-11
  • 打赏
  • 举报
回复
引用 2 楼 socg 的回复:
返回值没错就应该执行成功了,看看线有没有接错
没有的,同样的接法已经用工具测试过了,正常的。
南天空 2016-03-11
  • 打赏
  • 举报
回复
引用 1 楼 duanzi_peng 的回复:
这个都应该有 说明文档的,每个参数的含义。设备 没有问题吧
设备好的,参数分别是主机号,通道号,单元号,调用的时候,采用的是Leds(0,0,0,1,0x004),全部点亮指令,其中前三个0 都是针对的所有,1为点亮状态。
南天空 2016-03-11
  • 打赏
  • 举报
回复
引用 3 楼 shingoscar 的回复:
用c++程序测试过吗?
用厂家给的测试工具测试没有问题,可以正常控制LED的亮灭,自己封装的调用也没有错误,就是控制不了设备
Poopaye 2016-03-11
  • 打赏
  • 举报
回复
用c++程序测试过吗?
socg 2016-03-11
  • 打赏
  • 举报
回复
返回值没错就应该执行成功了,看看线有没有接错
exception92 2016-03-11
  • 打赏
  • 举报
回复
这个都应该有 说明文档的,每个参数的含义。设备 没有问题吧

110,534

社区成员

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

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

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