Problemas de comunication

Hola, tengo un problema para definir el RS y LF en VISUAL BASIC 6. Me explico estoy intentando comunicarme con el puerto a partir de unas instrucciones de Qbasic las instrucciones son la siguientes:
open "COM1:9600,N,8,1,LF,RS" FOR RANDOM AS #1
Esta instrucción guarda toda la sentencia en una variable llamada #1 que posteriormente puedo llamar de la siguiente forma (en qbasic)
PRINT #1,":DYSPLAY: GRID FRAME"
En Visual Basic estoy utilizando la herramienta Mscomm pero en realidad no se como declarar con estas funciones (RS y LS), y la ayuda (msdn) no es muy explicita en el tema.
Les agradecería cualquier colaboración que pudieran prestarme al respecto.

2 Respuestas

Respuesta
1
Para imprimir en VB, y simular la comunicación con un puerto te aconsejo que abras el puerto como un fichero:
Dim canal as integer
canal=freefile
open "COM1:" for output as #canal
' Le enviamos ESC+ 69 (negrita)
print #canal chr(27)+chr(69);
print "HOLA"
close #canal
Con el control mscomm puedes hacer lo mismo
mscomm. Output chr(27)+chr(69)
Yo no utilizo el control MScomm porque me ha dado muchos problemas a la hora de instalar un programa en el ordenador de varios clientes.
Respuesta
1
Sinceramente no se que es RS y LF pero tengo este ejemplo para hacer una llamada desde el puerto del módem, espero que te sirva.
Private Sub Form_Load()
'Prepara el puerto para llamar.
MSComm1.InputLen = 0
'Asigna el número de puerto del cual marcar.
MSComm1.CommPort = 2
MSComm1.Settings = "9600,N,8,1"
'Abre el puerto de comunicaciones.
On Error Resume Next
MSComm1.PortOpen = True
If Err Then
MsgBox "El puerto COM2 no está disponible. Cambie el número del puerto."
Gl_PuertoOk = False
End If
End Sub
Private Sub MarcaTel()
'Número de teléfono a marcar
MSComm1.Output = "12345678"
' Espera a que venga el "OK" del módem.
Contador = 0
Do
Contador = Contador + 1
dummy = DoEvents()
' Si hay datos en el búfer, los lee.
If MSComm1.InBufferCount Then
FromModem$ = FromModem$ + MSComm1.Input
' Comprueba si hay "OK".
If InStr(FromModem$, "OK") Then
Beep
MsgBox "Descuelgue y presione Intro o haga clic en Aceptar"
Exit Do
End If
End If
' ¿El usuario ha elegido Cancelar? (Suponiendo que hay un botón "Cancelar" o "Parar")
If Parar Then
Parar = False
Exit Do
End If
Loop
' Desconecta el módem.
MSComm1.Output = "ATH" + vbCr
' Cierra el puerto.
MSComm1.PortOpen = False
End Sub
Si tienes algún comentario dímelo
Primero que todo grache por responder tan rápido.
Lo que corresponde al lf y rs es retorno de carro y fin de linea ya en contre lo que respecta a estas sentencias, ahora el problema es que no entiendo como saber si hay datos en el buffer y de estar como recogerlos.
De todas formas grache por la atención prestada.
Solo tienes que hacer un loop para ver si en la propiedad InBufferCount hay datos y reconocer cual dato esperas, que está en el ejemplo que te mandé.
Do
dummy = DoEvents()
' Si hay datos en el búfer, los lee.
If MSComm1.InBufferCount Then
'Va concatenando lo que recibe el puerto.
FromModem$ = FromModem$ + MSComm1.Input
' Comprueba si hay "OK".
'Busca en todo lo que ha recibodo el "OK"
If InStr(FromModem$, "OK") Then
'Encontró respuesta, fin del ciclo.
Beep
MsgBox "Descuelgue y presione Intro o haga clic en Aceptar"
Exit Do
End If
End If

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas