[讨论]VB2010中调用CH341DLL.DLL发出的波形会出错,专家看看有没有解

VB6与VB2010的区别,主要在于VB6的TYPE类型定义,可以规定数组的长度 而在VB2010中,不能使用TYPE,只能用structure来定义结构体,因此 Type arrRBuffer buf(4095) As Byte End Type 要改为 Public Structure arrRBuffer Dim buf() As Byte End Structure

我本来是发380102的,但实际发送的可能就是一些没有规律的数据 我把问题发在百度上了,详细的请查看一下这个链接,非常感谢 http://zhidao.baidu.com/question/431618242618292204.html?quesup2&oldq=1

管理员能提供一下CH341DLL的源码么?我想要不改一下DLL源码,也许也有用

我的邮箱是个人信息保护,已隐藏


给你发个CH372的VB.net例子,可以参考一下。


谢谢你的回复,CH372的DLL里面,没有这种类型的定义,所以没有这个问题 Type arrRBuffer buf(4095) As Byte End Type

我CH341的打开设备,设置模式等其他函数都是正常的,只要这个读写的函数,操作异常,感觉是两个开发环境的结构体访问的地址增长方式不一样,对数组赋通用的数据,在VS2010中,每次打开操作,都会是不同的波形,可能访问内存空间地址不一样,如果能把CH341的DLL,定义成数组形式而不是结构体的形式,应该就可以解决了,恳请版主赐源码,或者帮我编译一个适合VS2010版本的DLL,静候佳音


在百度的连接里面,我贴有详细的测试结果图 http://zhidao.baidu.com/question/431618242618292204.html?quesup2&oldq=1


看了一下官方提供Delphi的CH341DLL函数接口,用的是一个指针结构 Function CH341StreamI2C( // 处理I2C数据流 iIndex:cardinal; // 指定CH341设备序号 iWriteLength:cardinal; // 准备写出的数据字节数 iWriteBuffer:pvoid; // 指向一个缓冲区,放置准备写出的数据,首字节通常是I2C设备地址及读写方向位 iReadLength:cardinal; // 准备读取的数据字节数 oReadBuffer:pvoid ):boolean;stdcall; external 'CH341DLL.DLL' ; // 指向一个缓冲区,返回后是读入的数据

所以这个问题的症结,可能就是VB6中,用Type定义的结构体,编译后可以等效于C++中的pointer定义,但VS2010中的VB用Structure可能就不一样了,所以只要能找到VS2010中等效于C++的Pointer定义的方式,问题应该就有解了,我去试试


还是没有搞定,我暂且回答VB6把事情搞定,再研究了,希望官方能协助一下解决这个问题,


只有登录才能回复,可以选择微信账号登录