现在C#中引用Delphi中dll里的方法,其它方法都是没问题的,唯独这个,老是出问题:
SetClockModeEx: 设置设备工作模式
语法:
function SetClockModeEx(hPort: THandle; Mode: Integer; ExtraMode: Integer;
SystemMode: Integer; RingMode: Integer): Boolean; 参数说明:
hPort: 端口句柄, 调用OpenCommPort函数得到,需要联机
设备的工作模式,以位方式操作(低八位)以上是帮助文本里的说明,C#中我是这样的:[DllImport("EastRiver.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern bool SetClockModeEx(IntPtr handle, int Mode, int ExtraMode, int SystemMode, int RingMode);我要传的后4个值是103 7 0 0 对应的8位二进制分别是 01100111 00000111 00000000 00000000
数据类型,int double string stringBulider我都试过了,结果就是返回false
麻烦各位高手帮我看看,C#这里引用,我该怎么传值呢
我调用function GetClockModeEx(hPort: THandle; Mode: Integer; ExtraMode: Integer;
SystemMode: Integer; RingMode: Integer): Boolean;读取参数信息时,返回的是int类型,但是就是设置时传值有问题,有劳各位了
SetClockModeEx: 设置设备工作模式
语法:
function SetClockModeEx(hPort: THandle; Mode: Integer; ExtraMode: Integer;
SystemMode: Integer; RingMode: Integer): Boolean; 参数说明:
hPort: 端口句柄, 调用OpenCommPort函数得到,需要联机
设备的工作模式,以位方式操作(低八位)以上是帮助文本里的说明,C#中我是这样的:[DllImport("EastRiver.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern bool SetClockModeEx(IntPtr handle, int Mode, int ExtraMode, int SystemMode, int RingMode);我要传的后4个值是103 7 0 0 对应的8位二进制分别是 01100111 00000111 00000000 00000000
数据类型,int double string stringBulider我都试过了,结果就是返回false
麻烦各位高手帮我看看,C#这里引用,我该怎么传值呢
我调用function GetClockModeEx(hPort: THandle; Mode: Integer; ExtraMode: Integer;
SystemMode: Integer; RingMode: Integer): Boolean;读取参数信息时,返回的是int类型,但是就是设置时传值有问题,有劳各位了
[return : MarshalAs( UnmanagedType.I1)]
public static extern bool SetClockModeEx(IntPtr handle, int Mode, int ExtraMode, int SystemMode, int RingMode);
I1: 1 字节有符号整数。可使用此成员将布尔值转换为 1 字节、C 样式的 bool(true = 1、false = 0)。
// 扩展读取机具工作模式
function ReadClockModeEx(hPort: THandle; var Mode: Integer; var ExtraMode: Integer; var SystemMode: Integer; var RingMode: Integer): Boolean; stdcall; external EASTRIVER_API
扩展设置设备工作模式
function SetClockModeEx(hPort: THandle; Mode: Integer; ExtraMode: Integer; SystemMode: Integer; RingMode: Integer): Boolean; stdcall; external EASTRIVER_API