FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Consumo de CPU
Posts: 1816
Joined: Wed Oct 26, 2005 02:49 PM
Consumo de CPU
Posted: Sat Jun 15, 2019 12:26 PM
Buenos días para todos,

En los ejemplos que vienen en fw, hay unas funciones que verifican que puertos COM (seriales) estan activos, la compile y funciona de maravilla, la idea es detectar el puerto COM y guárdalo en una DBF, al inicio de la aplicación. En teoria hago eso, pero el problema radica en que parece que algo queda activo durante todo el tiempo que la aplicación está abierta y ese proceso consume toda la CPU del PC. ¿alguien a tenido el mismo problema?

Code (fw): Select all Collapse
//----------------------------------------------------------------//
Function CommTest()
LOCAL cP, cR, j, i
LOCAL aSpd := { '9600' } 

LOCAL aDisponible:={}
LOCAL aNoDisponible:={}

FOR i = 1 TO 4
   cP := LTrim( Str( i ) )
   IF Empty( CommOpen( cP, aSpd[ 1 ] ) )
      CloseComm( nComm )
      FOR j = 1 TO Len( aSpd )
         cR := CommOpen( cP, aSpd[ j ] )
         IF Empty( cR )
            aadd(aDisponible,cP)
         ELSE
            aadd(aNoDisponible,cR)
         ENDIF
         CloseComm( nComm )
      NEXT
   ELSE
      aadd(aNoDisponible,cP)
   ENDIF
NEXT
Return aDisponible

//----------------------------------------------------------------//
Function CommOpen ( cPort, cSpeed )
LOCAL cDcb, cRv := '', cS := 'COM' + cPort + ':' + cSpeed + ',n,8,1'
nComm := OpenComm( 'COM' + cPort, 1024 , 128 )
IF nComm >= 0
   IF BuildCommDcb( cS, @cDcb ) 
      #ifdef __CLIPPER__
         IF SetCommState( cDcb )
      #else   
         IF SetCommState( nComm, cDcb )
      #endif   
         cRv := ''
      ELSE
         cRv := 'Failed to SetCommState on COM' + cPort + ' at ' + cSpeed
      ENDIF
   ELSE
      cRv := 'Failed to BuildCommDCB on COM' + cPort + ' at ' + cSpeed
   ENDIF
ELSE
   cRv := 'Failed to find COM' + cPort
ENDIF
Return cRv


Antes de Lanzar el proceso



Después de correr proceso

Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Turbo Incremental Link64 6.98 Embarcadero 7.70 ] [ FiveWin 25.01 ] [ xHarbour 64 bits) ]
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Consumo de CPU
Posted: Sun Jun 16, 2019 05:26 AM

Leandro,

Si no corres ese proceso, desaparece ese consumo ?

Prueba a poner una llamada a SysRefresh() dentro del bucle

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1816
Joined: Wed Oct 26, 2005 02:49 PM
Re: Consumo de CPU
Posted: Mon Jun 17, 2019 05:24 PM
Antonio buenos días

Si no corres ese proceso, desaparece ese consumo ?

Exacto, sin el proceso el consumo es del 0.87%, prácticamente nada.

Prueba a poner una llamada a SysRefresh() dentro del bucle

Agregue sysrefresh(), pero el consumo sigue muy alto.

Code (fw): Select all Collapse
//----------------------------------------------------------------//
Function CommTest()
LOCAL cP, cR, j, i
LOCAL aSpd := { '9600' } 

LOCAL aDisponible:={}
LOCAL aNoDisponible:={}

FOR i = 1 TO 4
   cP := LTrim( Str( i ) )
   IF Empty( CommOpen( cP, aSpd[ 1 ] ) )
      CloseComm( nComm )
      FOR j = 1 TO Len( aSpd )
         cR := CommOpen( cP, aSpd[ j ] )
         IF Empty( cR )
            aadd(aDisponible,cP)
         ELSE
            aadd(aNoDisponible,cR)
         ENDIF
         CloseComm( nComm )

      NEXT
   ELSE
      aadd(aNoDisponible,cP)
   ENDIF
   SysRefresh()
NEXT
Return aDisponible


Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Turbo Incremental Link64 6.98 Embarcadero 7.70 ] [ FiveWin 25.01 ] [ xHarbour 64 bits) ]
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Consumo de CPU
Posted: Mon Jun 17, 2019 05:37 PM
Intenta asi:

Code (fw): Select all Collapse
FUNCTION CommTest()

   LOCAL cP, cR, j, i
   LOCAL aSpd := { '9600' }

   LOCAL aDisponible := {}
   LOCAL aNoDisponible := {}

   HB_GCALL( .F. )

   FOR i = 1 TO 4

      SYSREFRESH()

      cP := LTrim( Str( i ) )

      IF Empty( CommOpen( cP, aSpd[ 1 ] ) )

         CloseComm( nComm )

         FOR j = 1 TO Len( aSpd )

            SYSREFRESH()

            cR := CommOpen( cP, aSpd[ j ] )

            IF Empty( cR )
               aadd( aDisponible, cP )
            ELSE
               aadd( aNoDisponible, cR )
            ENDIF

            CloseComm( nComm )

         NEXT

      ELSE

         aadd( aNoDisponible, cP )

      ENDIF

   NEXT

RETURN aDisponible


Saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 1816
Joined: Wed Oct 26, 2005 02:49 PM
Re: Consumo de CPU
Posted: Mon Jun 17, 2019 06:05 PM
karinha, Gracias por responder

Si bajo una gran cantidad (56%), pero me sigue pareciendo alto el consumo, que opinas?

Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Turbo Incremental Link64 6.98 Embarcadero 7.70 ] [ FiveWin 25.01 ] [ xHarbour 64 bits) ]
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Consumo de CPU
Posted: Mon Jun 17, 2019 06:14 PM

Leandro como haces la llamada a CommTest()?? és um WHILE... ENDDO??

Muestra...

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Consumo de CPU
Posted: Mon Jun 17, 2019 06:17 PM
Leandro, pocas veces he utilizado este tema y además hace mucho tiempo, pero me llama la atención que abras y cierres con distinto handle, quizás se quede abierto, aunque seguramente no tenga nada que ver con el tema que te ocupa.



cR := CommOpen( cP, aSpd[ j ] ) // Aqui es cR

IF Empty( cR )
aadd( aDisponible, cP )
ELSE
aadd( aNoDisponible, cR )
ENDIF

CloseComm( nComm ) // Aqui es nComm

Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo

El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 1816
Joined: Wed Oct 26, 2005 02:49 PM
Re: Consumo de CPU
Posted: Tue Jun 18, 2019 10:37 PM

Cristobal gracias por la sugerencia, quedo corregido :D

Pero tienes razón, el problema persiste. :(

Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Turbo Incremental Link64 6.98 Embarcadero 7.70 ] [ FiveWin 25.01 ] [ xHarbour 64 bits) ]
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Consumo de CPU
Posted: Tue Jun 18, 2019 11:50 PM
leandro wrote:Cristobal gracias por la sugerencia, quedo corregido :-)

Pero tienes razón, el problema persiste. :-)


Revisa todo tu código, para que no quede ningún handle abierto
Quieres decir que el consumo, después de haber arreglado lo anterior, es el mismo que antes?
Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo

El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 1816
Joined: Wed Oct 26, 2005 02:49 PM
Re: Consumo de CPU
Posted: Wed Jun 19, 2019 03:30 PM

Exactamente el mismo :(

Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Turbo Incremental Link64 6.98 Embarcadero 7.70 ] [ FiveWin 25.01 ] [ xHarbour 64 bits) ]

Continue the discussion