Recibir datos puerto serie

Estoy haciendo un programa para recibir
Datos por el puerto serie en VB 6.
El código que tengo es el siguiente:
Dim ByteCount As Long
Dim FileData As Byte
Private Sub Command1_Click()
MSComm1.Output = Chr$(26)
End Sub
Private Sub Form_Load()
MSComm1.Settings = "9600,N,8,1"
MSComm1.InputLen = 3
MSComm1.CommPort = 4
MSComm1.PortOpen = True
' directorio donde se guarda el archivo
Open "c:\Documents and Settings\archivo\ For Binary Access Write As #1
End Sub
Private Sub MSComm1_OnComm()
If MSComm1.CommEvent = 2 And MSComm1.InBufferCount > 0 Then
FileData = CInt(MSComm1.Input)
ByteCount = ByteCount + 1
Put #1, ByteCount, FileData
MSComm1.Output = Chr$(26)
End If
End Sub
' UnLoad
Private Sub Form_Unload(Cancel As Integer)
Close #1
End Sub
_____________
Pero recibo el mensaje:
Error '13' no coincen los tipos
Si alguien sabe que puedo hacer o tiene un código alternativo para recibir archivos por el serie se lo agradecería.

1 respuesta

Respuesta
1
El problema está en que tú quieres recibir datos binarios por el puerto, pero no has especificado la propiedad MSComm1. InputMode = comInputModeBinary, con lo cual lo que recibes en la propiedad MSComm1. Input es una cadena. Al hacer el CInt() de una cadena, te salta el error 13.
Tienes puesto MSComm1. InputLen = 3, así que de todas formas, si pones MSComm1. InputMode = comInputModeBinary, el código seguirá sin funcionar, ya que MSComm1. Input te devolverá un array de 3 elementos y el CInt() seguirá fallando.
Si lo que quieres recibir es un único byte, tendrás que poner:
Private Sub Form_Load()
.
MSComm1.InputMode = comInputModeBinary
MSComm1.InputLen = 1
.
End Sub
Private Sub MSComm1_OnComm()
.
FileData = CInt(MSComm1.Input(0))
.
End Sub
No olvides valorar la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas