Visual Basic - Mscomm1

Life is soft - evento anual de software empresarial
   
Vista:

Mscomm1

Publicado por Fernando (1 intervención) el 12/12/2008 20:46:04
Buenas tardes, hace ya un tiempito estoy intentando hacer una aplicación, para poder transferir de una balanza el peso tomado a una celda espesífica de excel. El puerto por el que la balanza se conecta a la pc es el com1. Ya logré tomar el dato de la balanza y volcarlo a excel ( a dicha celda y demás ).El problema es que, al azar, me tira un valor que no es el que muestra el visor de la balanza y agrega un cuadrado al final del dato o al principio o simplemente cambia el valor eliminando alguno de los números precentes.

Les dejo el código de la aplicacion, por ahí alguno sabe cual es el error ( más allá que la programacion es bastante precaria :P ).

Desde ya muchas gracias y espero la respuesta de alguno!.

Dim HojaExcel
Dim valor
Dim fila, columna, cuenta As Integer

Private Sub Command1_Click(Index As Integer)
Close
Select Case Index
Case 0

Timer1.Enabled = True
leer
Case 2

If Timer1 = False Then

Timer1.Enabled = True
Command1(2).Caption = "Pausar"
AsaInput.Caption = "Módulo de adquisición"


Else

Timer1.Enabled = False
Command1(2).Caption = "Reanudar"
AsaInput.Caption = "Módulo de adquisición ( PAUSADO) "

End If


End Select

End Sub

Private Sub leer()

' Búfer para almacenar la cadena de entrada
Dim Instring As String
' Usar COM1.
MSComm1.CommPort = 1
' 9600 baudios, sin paridad, 8 bits de datos y 1
' bit de parada.
MSComm1.Settings = "9600,N,8,1"
' Indicar al control que lea todo el búfer al usar
' Input.
MSComm1.InputLen = 1
' Abrir el puerto.
MSComm1.PortOpen = True
' Enviar al módem el comando de atención.
MSComm1.Output = "ATV1Q0" & Chr$(13) ' Asegúrese de que
' el módem responde con "OK".
' Esperar a que vuelvan los datos al puerto serie.
Do
DoEvents

buffer$ = buffer$ & MSComm1.Input
valor = Mid$(buffer$, 2, 6)
Text1(0) = valor

Loop Until InStr(buffer$, Chr(13))
' Leer los datos de respuesta de aceptación en el
' puerto serie.
' Cerrar el puerto serie.
MSComm1.PortOpen = False
excel
End Sub
Private Sub excel()

If Text1(0) = "" Then
Timer1 = False
MsgBox "Faltan datos para poder ser volcados a la planilla"
Timer1 = True
Exit Sub
End If
If Text1(2) = 105 Then
Timer1 = False
MsgBox "Tiene que seleccionar otro rango de correlatividad"
Timer1 = True
End If
If Text1(2) = 210 Then
Timer1 = False
MsgBox "Tiene que seleccionar otro rango de correlatividad"
Timer1 = True
End If
If Text1(2) = 315 Then
Timer1 = False
MsgBox "Fin De la Operacion"
Timer1 = True
End If
'HojaExcel.Application.Visible = True
'HojaExcel.Sheets("Hoja1").Select
'HojaExcel.Sheets("Hoja1").Name = nombre

desp = 73

HojaExcel.ActiveSheet.cells(fila, columna).Value = valor

buffer$ = ""
fila = fila + 1
cuenta = cuenta + 1
Text1(2) = cuenta
If cuenta = 36 Then
fila = 14
columna = 6
End If
If cuenta = 71 Then
fila = 14
columna = 9
End If

If cuenta = 141 Then
columna = 6
fila = 67
End If
If cuenta = 176 Then
columna = 9
fila = 67
End If
If cuenta = 246 Then
columna = 6
fila = 121
End If
If cuenta = 281 Then
columna = 9
fila = 121
End If


End Sub

Private Sub Command2_Click()
fila = fila - 1
cuenta = cuenta - 1
Text1(2) = cuenta
valor = ""
End Sub

Private Sub Form_KeyPress(KeyAscii As Integer)

If KeyAscii = 27 And Timer1 = True Then excel

End Sub

Private Sub Form_Load()

' Set HojaExcel = CreateObject("Excel.Sheet")
Set HojaExcel = GetObject(, "Excel.Application")
Dim Instring As String
cuenta = 0

Text1(2) = cuenta

End Sub

Private Sub Option1_Click()
If Option1.Value = True Then
cuenta = 1
Text1(2) = cuenta
columna = 3
fila = 14
End If

End Sub

Private Sub Option2_Click()
If Option2.Value = True Then
cuenta = 106
Text1(2) = cuenta
columna = 3
fila = 67
End If

End Sub

Private Sub Option3_Click()
If Option3.Value = True Then
cuenta = 211
Text1(2) = cuenta
columna = 3
fila = 121
End If
End Sub

PD: Se que está medio desornado, pero la idea es que el usruario, precinando la tecla ESC imprima en una celda de excel el peso que muestra la balanza.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder