Привет!
Я для считывания информации с внешних устройств через СОМ порт широко использую RSMINI.dll имеющую API:
Public Declare Function OPENCOM Lib "rsmini" (ByVal A$) As Integer
Public Declare Function READBYTE Lib "rsmini" () As Integer
Public Declare Sub CLOSECOM Lib "rsmini" ()
Public Declare Sub SENDBYTE Lib "rsmini" (ByVal b%)
Public Declare Sub RTS Lib "rsmini" (ByVal b%)
Public Declare Sub DTR Lib "rsmini" (ByVal onoff%)
Public Declare Sub TIMEOUT Lib "rsmini" (ByVal ms%)
При работе под Windows98 все работает без проблем. А при запуске макросов под Win2000 или WinXP возникают проблемы: Excel macros спустя несколько минут после запуска теряет связь по RS232 с внешним устройством. Контроль обмена по RS232 с помощью Portmon показал что по каким то причинам спустя несколько минут после запуска приложение формирует запросы :
IRP_MJ_CLEANUP
IRP_MJ_CLOSE.
Т. е. СОМ порт почему то закрывается. Это не зависит от того ведется ли обмен по последовательному каналу или он простаивает. Тот же эффект наблюдается даже для простейшего примера:
Private Sub CommandButton1_Click()
    If ComOpen(Ports(COMPORT) + ":" + Rates(BAUDRATE) + ",N,8,1") > 0 Then
    MsgBox ("COM port opened!")
    TIMEOUT 2000
    
    
    Else: MsgBox ("COULD NOT OPEN COM PORT!")
    End If
End Sub
Private Sub CommandButton2_Click()
CLOSECOM
End Sub
В Win98 порт после открытия может находиться в этом состоянии сколь угодно долго, а в Win2000 и WinXP через 3-5 минут закрывается. 
В чем тут может быть проблема???
			
		

