回  复

查看: 377 | 回复: 1

[求助]CH341A USBIOX.DLL C#调用的问题
上位机是什么 发表于:2018-01-10 09:39:44 1# 编辑

1

主题

2

帖子

22

积分
等级

幼儿园

私信

        [DllImport("USBIOX.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
        public static extern ulong USBIO_GetVersion();

 获得DLL版本号是可以的,  版本号 6959871503894577177 ulong

 

         [DllImport("USBIOX.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
        public unsafe static extern IntPtr USBIO_OpenDevice(ulong iIndex);

打开CH341设备,返回句柄 总是出现

调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配。

 

IntPtr 换成void* 也一样,StdCall换成Cdecl 也一样,ulong换成uint64也一样

我应该怎么用啊?~~~~~~~~

 

参考例程C代码:

HANDLE WINAPI USBIO_OpenDevice(  // 打开CH341设备,返回句柄,出错则无效
 ULONG   iIndex );  // 指定CH341设备序号,0对应第一个设备

搜索查了说HANDLE  可用IntPtr 直接代替

文章被上位机是什么2018-01-10 10:29:31时间编辑
上位机是什么 发表于:2018-01-10 19:25:25 2#

1

主题

2

帖子

22

积分
等级

幼儿园

私信

一天了都没人回...

可以了

         [DllImport("USBIOX.dll")]
        public static extern bool USBIO_WriteI2C(IntPtr iIndex, byte iDevice, byte iAddr, byte iByte);

楼层回复

关闭

评分

关闭
积分 评分区间 今日剩余
评分扣除自身相应积分,普通会员最高加分3分 0~10 5
你需要登录才可以发帖