我用CH372+51做了一台FLASH烧片器,用VB6.0做的程序界面,所有功能都基本OK,但有一个问题一直无法解决,就是每次在退出应用程序时会弹出一个错误提示如下图:请高手出招解决一下,我在程序中会间隔一秒钟向下位机发送指令读取FLASH芯片的型号,51收到指令后将读到的FLASH型号利用中断上传,在VB中调用中断程序判断芯片型号然后实时显示出来,我的中断部分程序完全是在DEMO程序上改的,退出程序如下,也和DEMO中的一样,我发现只要打开定时读取芯片型号功能退出就会出错,而且是,第一次运行程序退出不出错,以后每次退出都会出错。 CH375SetDeviceNotify mIndex, vbNullString, 0& ’取消设备插拔通知 CH375SetIntRoutine mIndex, 0& ’取消中断上传 CH375CloseDevice (mIndex) ’程序退出关闭设备
图没贴上,就是XP系统运行应用程序出错时弹出的窗口,没人帮我啊!!!!!!
请看我的中断程序: Public Sub mCallInt() Dim x As Boolean x = CH375SetIntRoutine(mIndex, AddressOf mInterruptEvent) '调用中断子程序 If x = 0 Then MsgBox "无法调用中断" & x, vbCritical, "信息提示" Exit Sub End If End Sub
Public Sub mInterruptEvent(ByRef mbuffer As INT_PARA) '中断服务程序 ' CH372产生中断后,产生一个消息通知主程序 If mbuffer.buf(0) = 1 Then '检查中断特征数据,1为上传的是芯片型号代码 ManufacturerCode = mbuffer.buf(1) '读取上传的数据 DeviceCode1 = mbuffer.buf(2) DeviceCode2 = mBuffer.buf(3) DeviceCode3 = mBuffer.buf(4) bool = PostMessage(frmMain.hwnd, WM_KEYUP, 1, 0) '传递消息给主程序摸拟调用窗体的WM_KEYUP, '在WM_KEYUP中放置了判断芯片型号的程序 Else FlagCode = mbuffer.buf(0) bool = PostMessage(frmMain.hwnd, WM_KEYDOWN, 1, 0) End If End Sub 我发现如果取消中断服务程序中的“bool = PostMessage(frmMain.hwnd, WM_KEYUP, 1, 0)”退出程序时就不会出错。大家快帮我想想办法啊!!!!
为什么只要用到了CH372的中断功能就会造成主程序退出时出错啊??????
您把VB的编译模式改为"伪代码"模式,试一下看看.
请问在哪里改编译模式啊,我没有改过
怎么还是没人帮我啊,这个问题真的很难吗?
工程->工程属性->编译设置"编译为本机代码"
刚刚打开看了,已经是"编译为本机代码"啊
工程->工程属性->编译设置"编译为伪代码",您试试.
我又试了,如果是"编译为本机代码",运行的时候就会出错,设置成时在退出时才会出错,我现在就是设置成"编译为伪代码"。请版主们帮忙解决下这个难题啊!!多谢了!!!!!!!
我的问题还是没人帮我解决啊??
您编译生成我们的Demo例子程序看看是什么结果?