Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Error en tiempo de ejecución

Estas en el tema de Error en tiempo de ejecución en el foro de Visual Basic clásico en Foros del Web. Saludos compañeros: actualmente estoy concluyendo un proyecto que recibe una serie de datos por el puerto serial y los almacena en una base de datos, ...
  #1 (permalink)  
Antiguo 01/02/2005, 16:32
Avatar de jmaquino  
Fecha de Ingreso: octubre-2004
Mensajes: 26
Antigüedad: 19 años, 7 meses
Puntos: 0
Error en tiempo de ejecución

Saludos compañeros:
actualmente estoy concluyendo un proyecto que recibe una serie de datos por el puerto serial y los almacena en una base de datos, todo está en un solo frm con dos controles data, dos controles msgrid y un control mscomm, el código es como sigue:
Public aux As Integer
Public Function guardaElectrico(entrada As String)
Dim falla As String, alto_ag As Integer, bajo_ag As Integer
Dim alto_bg As Integer, bajo_bg As Integer, alto_ab As Integer
Dim bajo_ab As Integer, Dist_ab As Integer, Dist_ag As Integer
Dim Dist_bg As Integer

If Mid$(entrada, 2, 1) = "C" Then
falla = "Corto"
ElseIf Mid$(entrada, 2, 1) = "A" Then
falla = "Abierto"
End If
1==>alto_ag = 256# * Asc(Mid$(entrada, 3, 1))
bajo_ag = Asc(Mid$(entrada, 4, 1))
alto_bg = 256# * Asc(Mid$(entrada, 5, 1))
bajo_bg = Asc(Mid$(entrada, 6, 1))
alto_ab = 256# * Asc(Mid$(entrada, 7, 1))
bajo_ab = Asc(Mid$(entrada, 8, 1))
Dist_ag = alto_ag + bajo_ag
Dist_bg = alto_bg + bajo_bg
Dist_ab = alto_ab + bajo_ab
With Data1.Recordset
.AddNew
!Tipo_Falla = falla
!Distancia_ag = Dist_ag
!Distancia_bg = Dist_bg
!Distancia_ab = Dist_ab
.Update
End With
Data1.Refresh

End Function
Public Function guardaDiafo(entrada As String)

With Data2.Recordset
.AddNew
!Nivel_F1 = -1 * Asc(Mid$(entrada, 2, 1))
!Nivel_F2 = -1 * Asc(Mid$(entrada, 3, 1))
!Nivel_F3 = -1 * Asc(Mid$(entrada, 4, 1))
!Nivel_F4 = -1 * Asc(Mid$(entrada, 5, 1))
.Update
End With
Data2.Refresh

End Function
Private Sub Command1_Click()
MSFlexGrid1.Visible = True
MSFlexGrid2.Visible = False
End Sub

Private Sub Command2_Click()
MSFlexGrid1.Visible = False
MSFlexGrid2.Visible = True
End Sub


Private Sub Form_Load()

Form1.Width = 8500
Data1.Visible = False
Data2.Visible = False
Data1.DatabaseName = App.Path & "\db1.mdb"
'Data1.DatabaseName = App.Path & "\telefonos_vb.mdb"
Data2.DatabaseName = Data1.DatabaseName
Data1.RecordSource = "select * from electrica"
Data2.RecordSource = "select * from tabla1"
'Data2.RecordSource = "select * from Diafonia"
MSFlexGrid1.Visible = False
MSFlexGrid2.Visible = False

'inicializa el componente de comunicaciones
'Indica el numero del puerto a usar

MSComm1.CommPort = 1

'Otros seteos basicos

MSComm1.Settings = "9600,n,8,1"
MSComm1.InBufferSize = 11
MSComm1.OutBufferSize = 4
MSComm1.RThreshold = 2
MSComm1.SThreshold = 1
MSComm1.InputLen = 0
MSComm1.ParityReplace = "?"
MSComm1.RTSEnable = False
MSComm1.DTREnable = False
MSComm1.NullDiscard = False
MSComm1.Handshaking = comNone

' Abre el puerto

MSComm1.PortOpen = True

End Sub

Private Sub MSComm1_OnComm()
' declara una variable donde quedaran los datos recibidos

Static strData As String

With MSComm1
Select Case .CommEvent
Case comEventBreak
MsgBox "Error", "1comEventBreak"
Case comEventFrame
MsgBox "Error", "1comEventFrame"
Case comEventOverrun
MsgBox "Error", "1comEventOverrun"
Case comEventRxOver
MsgBox "Error", "1comEventRxOver"
Case comEventRxParity
MsgBox "Error", "1comEventRxParity"
Case comEventTxFull
MsgBox "Error", "1comEventTxFull"
Case comEventDCB
MsgBox "Error", "1comEventDCB"
Case comEvReceive

' se guardan los datos en la variable
strData = MSComm1.Input

'se procesa de acuerdo a lo que llegó
If Left$(strData, 1) = "L" Then
aux = Asc(Mid$(strData, 1, 1)) Xor (Asc(Mid$(strData, 2, 1))) Xor (Asc(Mid$(strData, 3, 1))) Xor (Asc(Mid$(strData, 4, 1))) Xor (Asc(Mid$(strData, 5, 1))) Xor (Asc(Mid$(strData, 6, 1))) Xor (Asc(Mid$(strData, 7, 1))) Xor (Asc(Mid$(strData, 8, 1)))
2 ==> par = Asc(Mid$(strData, 9, 1))
If aux = par Then
guardaElectrico (strData)
'se envia el dato de aceptación
MSComm1.Output = "O"
Else
MsgBox "Error de Trama", vbCritical, "Error"
MSComm1.Output = "E"
End If

ElseIf Left$(strData, 1) = "D" Then
aux = Asc(Mid$(strData, 1, 1)) Xor (Asc(Mid$(strData, 2, 1))) Xor (Asc(Mid$(strData, 3, 1))) Xor (Asc(Mid$(strData, 4, 1))) Xor (Asc(Mid$(strData, 5, 1)))
If aux = Asc(Mid$(strData, 6, 1)) Then
guardaDiafo (strData)
'se envia el dato de aceptación
MSComm1.Output = "O"
Else
MsgBox "Error de Trama", vbCritical, "Error"
MSComm1.Output = "E"
End If
End If


' borra la variable para los proximos datos
strData = ""
End Select
End With

End Sub


en este código tengo dos problemas en tiempo de ejecución (están marcados como 1==> y 2==>)
el primero es cuando ejecuto el programa paso a paso (es decir con f8), pone un errror de desbordamiento, y el segundo es cuando ejecuto el programa por completo (f5) dice que el argumento de la función no es válido, pero ejecuta bien cuando lo hago paso a paso.
Si alguien puede colaborarme a corregir estos dos bugs le estaré enormemente agradecido.
suerte a todos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:00.