我想用下位机以中断传输方式通知上位机程序动做,可是不太稳定,有时上位机可以收到中断但数据都为0,有时程序就死掉了。不知什么原因,网上也没有更多的关于中断传输资料供参考。批量上传下传都没问题。请指教,谢各位大侠!
\\以下是下位机部份关键代码,其它略
while(1) { if(!Key1){ //当key1按下通知上位机软件动做 EX0 = 0; //CH372中断INT连接单片机中断INT0 CH375_WR_CMD_PORT(CMD_WR_USB_DATA5);//用中断传输通知PC Delay2us( ); cnt=8; CH375_WR_DAT_PORT(cnt); //发送8个字节 do{ CH375_WR_DAT_PORT(0xa5); }while(--cnt); EX0 = 1; } }
\\以下是上位机VB部份关键代码 private Sub Form_Load()
'--其它代码略 '-- '-- '-- mIndex=0 mCallInt
End Sub
Public Sub mCallInt()'此段代码在模块里 Dim x As Boolean x = CH375SetIntRoutine(mIndex, AddressOf mInterruptEvent) '调用中断子程序 End Sub
'此段代码在模块里 Public Sub mInterruptEvent(ByRef mBuffer As INT_PARA) '中断服务程序 Dim bool As Boolean bool = PostMessage(FormMain.hwnd, WM_KEYDOWN, 1, 0)' 中断特征数据1则键被按下 End Sub
Private Type DATA_PACKET ' 自定义的命令包结构 dat(8) As Byte ' 参数 End Type
'模拟调用窗体的按键按下事件 Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) Dim i As Integer Dim rbuf as DATA_PACKET CH375ReadInter 0, rbuf, 8 Cls For i = 0 To 8 Print rbuf.dat(i) Next End Sub