Como Enviar y Recibir datos por el puerto Serial
Hola expertos, tengo un objeto "COM" configurado así:
THISFORM.OleComm.CommPort = 1
THISFORM.OleComm.Settings = "9600,n,8,1"
THISFORM.OleComm.InputMode = 1 && 1-comInputModeBinary
THISFORM.OleComm.Handshaking = 0
THISFORM.OleComm.InputLen = 0
THISFORM.OleComm.RThreshold = 1
THISFORM.OleComm.SThreshold = 1
THISFORM.OleComm.DTREnable = .T.
THISFORM.OleComm.RTSEnable = .T.
THISFORM.OleComm.NullDiscard = .F.
THISFORM.OleComm.InBufferSize = 1024
THISFORM.OleComm.OutBufferSize =1024
IF THISFORM.OleComm.PortOpen = .F.
THISFORM.OleComm.PortOpen = .T.
ENDIF
Este objeto "COM" recibe una trama con las siguientes características y devuelve "ACK" si es que esta bien sino un "NAK"
1) <ENQ> && El equipo envia y espera una respuesta
2) <ACK> && Mi Host reponde
3) <STX><FN><TEXT><ETB><C1><C2><CR><LF> && Si el equipo recibe un ACK envia esta trama
4) <ACK> && Mi Host reponde
<STX><FN><TEXT><ETB><C1><C2><CR><LF> && Si el equipo recibe un ACK envia esta trama
<ACK> && Mi Host reponde
.
.
.
5) <STX><FN><TEXT><CR><ETX><C1><C2><CR><LF> && Si el equipo recibe un ACK envía esta trama Final
6) <ACK> && Mi Host reponde
7) <EOT> && El equipo envia
Como puedo hacer para trabajar con los datos que llegan en bytes.
CASE THISFORM.OleComm.CommEvent = 2 &&comEvReceive
THISFORM.OleComm.InputLen = 0
NumCars = THISFORM.OleComm.InBufferCount
IF Numcars > 0
strBuffer = THISFORM.OleComm.Input
DO CASE
CASE ASC(strBuffer) = 5 &&ENQ
THISFORM.OleComm.Output = CHR(6) && ACK
CASE ASC(strBuffer) = 10 &&LF
THISFORM.OleComm.Output = CHR(6) && ACK
CASE ASC(strBuffer) = 4 &&EOT
THISFORM.OleComm.PortOpen = .F.
THISFORM.OleComm.PortOpen = .T.
ENDCASE
strINPUT = strINPUT + strBuffer
THISFORM.Edit1.Value = ""
THISFORM.Edit1.Value = strINPUT
impre="R"+DTOS(DATE())+LEFT(TIME(),2)+SUBSTR(TIME(),4,2)+RIGHT(TIME(),2)+".txt"
archivo = FCREATE("C:\Comm\"+impre)
IF archivo < 0 && Comprobar error al abrir archivo
=MESSAGEBOX("No se creo el archivo",16,"Error")
ELSE
=FWRITE(archivo ,THISFORM.Edit1.Value)
ENDIF
= FCLOSE(archivo)
THISFORM.Refresh ()
ENDIF
Muchas gracias por las respuestas.