Autor Tema: interrupcion por recepcion del MScomm  (Leído 3245 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado ENO45

  • PIC10
  • *
  • Mensajes: 42
interrupcion por recepcion del MScomm
« en: 04 de Febrero de 2006, 11:25:00 »
hola me podrian explicar como funciona (con un ejemplo asi lo entiendo mas rapido) la interrupcion por recepcion del MScomm porque segun lo que lei la recepcion por time no es conveniente

Desconectado alex22ra

  • PIC10
  • *
  • Mensajes: 41
RE: interrupcion por recepcion del MScomm
« Respuesta #1 en: 13 de Febrero de 2006, 04:28:00 »
Hola que tal,

Bueno la rutina de interrupcion por recepcion de caracter es muy sencilla:

"Aqui entrara cada vez que algo ocurra en el puerto serie
Private Sub MSComm1_OnComm()
         Dim dato_rec As String "definimos variable para recoger byte recibido
         "dependiendo de lo que halla causado la int hacemos una cosa u otra
         Select Case MSComm1.CommEvent
     

         " Errores(no muy importantes, aunque depende de lo que estes haciendo)
            Case comEventBreak   " A Break was received.
            Case comEventCDTO    " CD (RLSD) Timeout.
            Case comEventCTSTO   " CTS Timeout.
            Case comEventDSRTO   " DSR Timeout.
            Case comEventFrame   " Framing Error.
            Case comEventOverrun " Data Lost.
            Case comEventRxOver  " Receive buffer overflow.
            Case comEventRxParity   " Parity Error.
            Case comEventTxFull  " Transmit buffer full.
            Case comEventDCB     " Unexpected error retrieving DCB]

         " Eventos(nos interesa el de receive)
            Case comEvCD   " Change in the CD line.
            Case comEvCTS  " Change in the CTS line.
            Case comEvDSR  " Change in the DSR line.
            Case comEvRing " Change in the Ring Indicator.
            Case comEvReceive " Received RThreshold # of chars.
            "en las propiedades del mscomm dependiendo de como lo hayas configurado se generará esta int cada caracter recibido, cada dos,...
               InBuff = MSComm1.Input    "cogemos el dato del puerto
            "Recuerda que estara en formato ascii  
            Case comEvSend " There are SThreshold number of
                           " characters in the transmit buffer.
            Case comEvEOF  " An EOF character was found in the
                           " input stream.
         End Select

      End Sub


Y mas o menos ya estaria, mira bien las propiedades de configuracion, es decir:

With MSComm1
            .CommPort = 2
            .Handshaking = 2 - comRTS
            .RThreshold = 1    "Cada caracter recibido(8 bits) se genera la int
            .RTSEnable = True
            .Settings = "9600,n,8,1"
            .SThreshold = 1
            .PortOpen = True
            " Leave all other settings as default values.
End With

Ya me contaras si te funciona o no.

SalU2


Desconectado nacha4

  • PIC16
  • ***
  • Mensajes: 113
RE: interrupcion por recepcion del MScomm
« Respuesta #2 en: 16 de Febrero de 2006, 12:40:00 »
hola a mi lo que me interesaria conocer (ejemplo) es la interupcion cuando entra un BYTE por el puerto serie, como seria eso, cual de todas las partes que pusiste iria.
perdon por mi desconocimiento del tema
Nacha4

Desconectado alex22ra

  • PIC10
  • *
  • Mensajes: 41
RE: interrupcion por recepcion del MScomm
« Respuesta #3 en: 20 de Febrero de 2006, 04:42:00 »
Hola,

Bueno, creo que estaba claro en el mensaje, pero lo repito,

Cada vez que ocurra algo en el puerto serie entra en la interrupcion, ahora tienes que ver si lo que ha producido la interrupcion es la llegada de 8 bits, que en concreto es el evento "Recieve", y ya esta; ahora coges el dato y haces con el lo que quieras.

Ya me contaras si tienes mas problemas.

SalU2

Desconectado nacha4

  • PIC16
  • ***
  • Mensajes: 113
RE: interrupcion por recepcion del MScomm
« Respuesta #4 en: 23 de Febrero de 2006, 18:48:00 »
hola te molesto de nuevo pero no entiendo lo que hice con tu programa es lo sigiente pero no tengo respuesta, yo quiero que lop que mande aparesca en text1 pero no pasa nada

Private Sub boton_Click()
MSComm1.Output = "a"
End Sub

Private Sub Form_Load()
    MSComm1.CommPort = 1
    MSComm1.PortOpen = True
 End Sub

Private Sub MSComm1_OnComm()

Select Case MSComm1.CommEvent
Case comEvCD " Change in the CD line.
Case comEvCTS " Change in the CTS line.
Case comEvDSR " Change in the DSR line.
Case comEvRing " Change in the Ring Indicator.
Case comEvReceive " Received RThreshold # of chars.
dato_rec = MSComm1.Input
Text1.Text = dato_rec
Case comEvSend " There are SThreshold number of
Case comEvEOF " An EOF character was found in the input stream.
End Select

End Sub

With MSComm1
.CommPort = 2
.Handshaking = 2 - comRTS
.RThreshold = 1 "Cada caracter recibido(8 bits) se genera la int
.RTSEnable = True
.Settings = "9600,n,8,1"
.SThreshold = 1
.PortOpen = True
" Leave all other settings as default values.
End With