主题:[讨论]C# 调用C++写的dll 动态库的打开串口函数,返回值都是成功
这是C++的定义:
BOOL HDP_OpenPort(HANDLE *hComPort,int nPort,char *hisIpAddr,int
hisPort,char flag);
功能:打开端口
参数:nPort ——端口ID,<50 为实串口,50 以上自动映射为TCP/IP 虚拟串口;
hisIpAddr——设备的IP 地址,对于实串口操作,hisIpAddr 值将被忽略;
hisPort——设备端口号,对于实串口操作,hisPort 值将被忽略;
flag——选择TCP 或UDP 的标志,flag=1 选择TCP 通讯,flag=2 选择UDP 通讯,
建议采用UDP 通讯。
返回:成功返回TRUE,并携带端口句柄hComPort,失败返回FALSE。
说明:在调用本系统其它函数之前,必须先成功调用该打开端口函数,并在之后的其它函数
调用中携带此句柄hComPort,否则将无法实现其它函数的调用目的。
事例:
A. 打开实串口 1,return = HDP_OpenPort(&hComPort,1,””,0,0);
B. 打开通过 TCP/IP 连接虚拟的101 的端口:
return = HDP_OpenPort(&hComPort,101,”192.168.2.1”,9100,2);
成功返回 TRUE,失败返回FALSE
*************************以下是我C#的定义和一个调用方法**************************
[DllImport("HDPDll.dll", EntryPoint = "HDP_OpenPort2", CallingConvention = CallingConvention.Cdecl)]
public static extern Boolean HDP_OpenPort2(ref IntPtr hComPort, int nPort, String HisIPAddr, int HisPort, int Flag);
/*******我写的调用方法,一直有错误,不管打开什么端口都是成功,都返回了true*******/
private Boolean OpenPort(ref IntPtr _hComPort, int _nPort, String _HisIPAddr, int _HisPort, int _Flag)
{
Boolean _openPort;
_openPort = HDP_OpenPort(ref _hComPort, _nPort, _HisIPAddr, _HisPort, _Flag);
return _openPort;
}
***************************************************************************************
但是不知道为什么,不管什么串口,我这打开的时候都显示成功,是不是我C#定义有问题呢?
BOOL HDP_OpenPort(HANDLE *hComPort,int nPort,char *hisIpAddr,int
hisPort,char flag);
功能:打开端口
参数:nPort ——端口ID,<50 为实串口,50 以上自动映射为TCP/IP 虚拟串口;
hisIpAddr——设备的IP 地址,对于实串口操作,hisIpAddr 值将被忽略;
hisPort——设备端口号,对于实串口操作,hisPort 值将被忽略;
flag——选择TCP 或UDP 的标志,flag=1 选择TCP 通讯,flag=2 选择UDP 通讯,
建议采用UDP 通讯。
返回:成功返回TRUE,并携带端口句柄hComPort,失败返回FALSE。
说明:在调用本系统其它函数之前,必须先成功调用该打开端口函数,并在之后的其它函数
调用中携带此句柄hComPort,否则将无法实现其它函数的调用目的。
事例:
A. 打开实串口 1,return = HDP_OpenPort(&hComPort,1,””,0,0);
B. 打开通过 TCP/IP 连接虚拟的101 的端口:
return = HDP_OpenPort(&hComPort,101,”192.168.2.1”,9100,2);
成功返回 TRUE,失败返回FALSE
*************************以下是我C#的定义和一个调用方法**************************
[DllImport("HDPDll.dll", EntryPoint = "HDP_OpenPort2", CallingConvention = CallingConvention.Cdecl)]
public static extern Boolean HDP_OpenPort2(ref IntPtr hComPort, int nPort, String HisIPAddr, int HisPort, int Flag);
/*******我写的调用方法,一直有错误,不管打开什么端口都是成功,都返回了true*******/
private Boolean OpenPort(ref IntPtr _hComPort, int _nPort, String _HisIPAddr, int _HisPort, int _Flag)
{
Boolean _openPort;
_openPort = HDP_OpenPort(ref _hComPort, _nPort, _HisIPAddr, _HisPort, _Flag);
return _openPort;
}
***************************************************************************************
但是不知道为什么,不管什么串口,我这打开的时候都显示成功,是不是我C#定义有问题呢?