[求助]CH341DLL.DLL 函数 CH341MemReadAddr1卡死 BUG

第一次调用 CH341MemReadAddr1 函数 读引脚状态, 或CH341MemWriteAddr1 写状态, 会出现卡死现像, 无法关闭软件, 就算任务管理器也无法终止, 必须拔掉设备才可以恢复响应 求解决方法

测试 重现此BUG方法 1. 运行开发包示例程序 CH341PAR1.EXE, 并切换到 数字IO 选项卡, 选择 地址1 2. CH341A 设备 连机 第一次, 随即 软件界面卡死, 无响应 3. CH341A 设备 连机 第二次, 恢复正常了, 8位开关状态处的, 刷新状态按钮可正常使用

录像为证, 求解决.......录像中, 选择 地址1(代表使用 CH341MemReadAddr1 和CH341MemWriteAddr1), 随即设备进行连机, 就会现软件卡死, 具体在3楼贴子, 我做了详细解释 201462617122783.gif

有一个疑问,刚开始你设备不在的时候,是如何点击刷新状态按钮的?


设备 一连机 软件界面 就卡死了, 标题根本就来不急刷新为 已连机状态 例程里的 VC++, VB, DELPHI, 全部代码生成的程序, 都测试, 都是此现像

示例代码里了, 设备一连机 就会调用 数字IO的事件. 触发了SendLedVal过程的代码

CH341_INT_Func的回调函数 引用的部份代码 If (bEnable = True) Then //窗体标题显示 Form1.Caption := 'CH341EVT **设备已插上' Else Form1.Caption := 'CH341EVT **设备已拔出';

If (bEnable = True) Then //数字I/O窗口已初始化,刷新LED,按拔码开关状态 Begin Form1.LED1Click(Form1.LED1);//调用的LED Checkbox事件, 事件里则是调用SendLedVal过程 Form1.LED2Click(Form1.LED2); Form1.LED3Click(Form1.LED3); Form1.LED4Click(Form1.LED4); Form1.LED5Click(Form1.LED5); Form1.LED6Click(Form1.LED6); Form1.LED7Click(Form1.LED7); Form1.LED8Click(Form1.LED8); Form1.Button1Click(Form1.Button1); End;

SendLedVal里的代码, 调用了 CH341MemWriteAddr1函数, 所以就会出现卡死

只要设备拔掉, 重新连机, 这样之后都不会出现卡死现像了

我反复测试

只要是第一次使用 CH341MemWriteAddr1 和 CH341MemReadAddr1 函数, 就会出现卡死


我用EVT包下面的演示文件,无论插拨多少次,都是插上就卡死,必须拨出才能恢复。每个平台的EXE都一样,我是在341A最小板上试的,对比EVT电路图,应该不致于啊


你说的最小版是哪个板子?341A的27引脚千万不能接地


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