Autor Tema: enviar un conjunto de bytes por MSComm  (Leído 2523 veces)

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

Desconectado ENO45

  • PIC10
  • *
  • Mensajes: 42
enviar un conjunto de bytes por MSComm
« en: 05 de Marzo de 2006, 16:44:00 »
hola tengo un pequeño problema tengo que enviarle al pic un byte y recibir su respuesta, enviarle otro byte y recibir su respuesta asi sucesivamente  hasta llegar a 18 bytes y comensar de nuevo con el primer byte, la recepcion creo que esta solucionada a traves de interrupcion el drama que tengo ahora es el envio me creia que podia hacerlo con el time pero no funciona alguien tine alguna idea de como lo puedo hacer porque estoy re trabado en esto. lo que yo habia hecho es esto

Private Sub Timer2_Timer()
MSComm1.Output = "0"
MSComm1.Output = "1"
MSComm1.Output = "2"
MSComm1.Output = "3"
MSComm1.Output = "4"
MSComm1.Output = "5"
MSComm1.Output = "6"
MSComm1.Output = "7"
MSComm1.Output = "8"
MSComm1.Output = "9"
MSComm1.Output = "a"
MSComm1.Output = "b"
MSComm1.Output = "c"
MSComm1.Output = "d"
MSComm1.Output = "e"
MSComm1.Output = "f"
MSComm1.Output = "g"
MSComm1.Output = "h"
End Sub
Hasta 2 bytes me funciona bien despues no anda
ENO45

Desconectado karen81

  • PIC10
  • *
  • Mensajes: 22
RE: enviar un conjunto de bytes por MSComm
« Respuesta #1 en: 09 de Marzo de 2006, 18:32:00 »
Pues no se si te he entendido bien RollEyespero yo lo que haria es: no utilizar interrupciones.
en visual basic haria lo siguiente:

For c = 1 To 18 Step 1
        ;poner el dato a enviar
        Call enviar        
        Call recibir
        ;hacer lo que sea con el dato recibido
 Next

Private Sub enviar()
MSComm1.Output = datoaenviar
Do While MSComm1.OutBufferCount > 0
Loop
End Sub

Private Sub recibir()
Do While MSComm1.InBufferCount = 0
DoEvents
Loop
datoarecibir = MSComm1.Input
End Sub

en el pic lo mismo solo que primero call recibir y despues call enviar.

aunque el puerto serial es asincrono en las rutinas de recepcion del pic y de la pc los programas se quedan trabados hasta recibir un dato. y eso da cierta sincronia
por cierto no se si sabias pero por el puerto serial los datos se van en ascii SIEMPRE, asi como los estabas mandando llegan al pic como "30", "31".... y las letras como su respectivo ascii a="61", b="62"
para enviarlos y que llegen 00,01.....0A..0F hay que convertirlos a ascii, si te interesa por ahi tengo la rutina, solo me avisas Giño