我用CH372+51做了一臺FLASH燒片器,用VB6.0做的程序界面,所有功能都基本OK,但有一個問題一直無法解決,就是每次在退出應(yīng)用程序時會彈出一個錯誤提示如下圖:請高手出招解決一下,我在程序中會間隔一秒鐘向下位機發(fā)送指令讀取FLASH芯片的型號,51收到指令后將讀到的FLASH型號利用中斷上傳,在VB中調(diào)用中斷程序判斷芯片型號然后實時顯示出來,我的中斷部分程序完全是在DEMO程序上改的,退出程序如下,也和DEMO中的一樣,我發(fā)現(xiàn)只要打開定時讀取芯片型號功能退出就會出錯,而且是,第一次運行程序退出不出錯,以后每次退出都會出錯。 CH375SetDeviceNotify mIndex, vbNullString, 0& ’取消設(shè)備插拔通知 CH375SetIntRoutine mIndex, 0& ’取消中斷上傳 CH375CloseDevice (mIndex) ’程序退出關(guān)閉設(shè)備
圖沒貼上,就是XP系統(tǒng)運行應(yīng)用程序出錯時彈出的窗口,沒人幫我?。。。。。。?/p>
請看我的中斷程序: Public Sub mCallInt() Dim x As Boolean x = CH375SetIntRoutine(mIndex, AddressOf mInterruptEvent) '調(diào)用中斷子程序 If x = 0 Then MsgBox "無法調(diào)用中斷" & x, vbCritical, "信息提示" Exit Sub End If End Sub
Public Sub mInterruptEvent(ByRef mbuffer As INT_PARA) '中斷服務(wù)程序 ' CH372產(chǎn)生中斷后,產(chǎn)生一個消息通知主程序 If mbuffer.buf(0) = 1 Then '檢查中斷特征數(shù)據(jù),1為上傳的是芯片型號代碼 ManufacturerCode = mbuffer.buf(1) '讀取上傳的數(shù)據(jù) DeviceCode1 = mbuffer.buf(2) DeviceCode2 = mBuffer.buf(3) DeviceCode3 = mBuffer.buf(4) bool = PostMessage(frmMain.hwnd, WM_KEYUP, 1, 0) '傳遞消息給主程序摸擬調(diào)用窗體的WM_KEYUP, '在WM_KEYUP中放置了判斷芯片型號的程序 Else FlagCode = mbuffer.buf(0) bool = PostMessage(frmMain.hwnd, WM_KEYDOWN, 1, 0) End If End Sub 我發(fā)現(xiàn)如果取消中斷服務(wù)程序中的“bool = PostMessage(frmMain.hwnd, WM_KEYUP, 1, 0)”退出程序時就不會出錯。大家快幫我想想辦法?。。。?!
為什么只要用到了CH372的中斷功能就會造成主程序退出時出錯?。??????
您把VB的編譯模式改為"偽代碼"模式,試一下看看.
請問在哪里改編譯模式啊,我沒有改過
怎么還是沒人幫我啊,這個問題真的很難嗎?
工程->工程屬性->編譯設(shè)置"編譯為本機代碼"
剛剛打開看了,已經(jīng)是"編譯為本機代碼"啊
工程->工程屬性->編譯設(shè)置"編譯為偽代碼",您試試.
我又試了,如果是"編譯為本機代碼",運行的時候就會出錯,設(shè)置成時在退出時才會出錯,我現(xiàn)在就是設(shè)置成"編譯為偽代碼"。請版主們幫忙解決下這個難題?。?!多謝了!?。。。。?!
我的問題還是沒人幫我解決????
您編譯生成我們的Demo例子程序看看是什么結(jié)果?