programar tarjeta pci por el puerto serie
Publicado por natalia (1 intervención) el 08/05/2012 15:27:55
Hola!
tengo una aplicación para controlar una prensa de madera, cambie la tarjeta PCI por la que me llegaba un dato de la prensa y ahora tengo problemas para recoger el dato. He metido el driver en el archivo.bas como indica el fabricante y me da el siguiente error error 429 activeX no puede crear el objeto. La tarjeta nueva es una pci-1761S y el sistema operativo que tengo es windows xp. Os pego el código del modulo. Espero que me podais echar una mano!
Sub datos()
Dim puerto As New MSCommLib.MSComm
Dim setParam As String
Dim rctablero As Recordset
Dim db As Database
Dim rc As Recordset
Set db = CurrentDb
Set rc = db.OpenRecordset("Aux Valores")
rc.MoveFirst
Dim x%
Dim ultimoCola As Integer
ultimoCola = 8
puerto.CommPort = 2 '''' ESTA ES LA PRIMERA LINEA EN LA QUE SALTA EL ERROR
puerto.InputMode = 0
setParam = "1200,N,7,2"
puerto.Settings = setParam
puerto.InputLen = 0
puerto.PortOpen = True
Dim inString As String
Dim lenCap As Integer
Dim volManta As Double
Dim densidadUltima As Double
Dim pesoTotalManta As Double
Dim control
lenCap = 0
inString = ""
Do
If lenCap < 33 Then
inString = inString & puerto.Input
lenCap = Len(inString)
Else
control = Left(inString, 2)
control = Right(control, 1)
If control = "C" Then
inString = Right(inString, 6)
inString = Left(inString, 4)
Forms![Diario Prensa].NºPesadas.value = Forms![Diario Prensa].NºPesadas.value + 1
If IsNumeric(inString) = False Then
Forms![Diario Prensa].pesoMantaUltimo.value = Forms![Diario Prensa].pesoTeorico.value
lenCap = 0
inString = Forms![Diario Prensa].puerto.Input
inString = ""
Else
Forms![Diario Prensa].pesoMantaUltimo.value = inString
End If
'''' ' If control <> "0 B" Then
''' ' Forms![Diario Prensa].pesoMantaUltimo.value = Forms![Diario Prensa].pesoTeorico.value
''' ' Else
'''' ' End If
pesoTotalManta = Forms![Diario Prensa].kilosMaderaAcumulados.value
pesoTotalManta = pesoTotalManta + CDbl(Forms![Diario Prensa].pesoMantaUltimo.value)
Forms![Diario Prensa].kilosMaderaAcumulados.value = pesoTotalManta
Forms![Diario Prensa].pesoMantaMedioAcumulado.value = pesoTotalManta / Forms![Diario Prensa].NºPesadas.value
controlPesadasBascula
lenCap = 0
inString = puerto.Input
inString = ""
If Forms![Diario Prensa].NºOrdenDePrensa.value <> "" Then
ConsultaMapa
Set rctablero = db.OpenRecordset("resumen mapa_tablero")
If rctablero.EOF = False Then
rctablero.MoveLast
Forms![Diario Prensa].densidadMantaMedia.value = rctablero!AvgDensidad
Forms![Diario Prensa].espesorMedioReal.value = rctablero!AvgEspesor
rc.MoveFirst
rc.Edit
rc!kilos = Forms![Diario Prensa].kilosMaderaAcumulados.value
rc![cola ce] = Forms![Diario Prensa].kgColaCEAcumulado.value
rc![cola ci] = Forms![Diario Prensa].kgColaCIAcumulado.value
rc![peso] = Forms![Diario Prensa].pesoMantaMedioAcumulado.value
rc!Prensadas = Forms![Diario Prensa].NºPesadas.value
rc.Update
End If
rctablero.Close
End If
End If
End If
ultimoCola = controlColas(ultimoCola)
x% = DoEvents
Loop
puerto.PortOpen = False
End Sub
tengo una aplicación para controlar una prensa de madera, cambie la tarjeta PCI por la que me llegaba un dato de la prensa y ahora tengo problemas para recoger el dato. He metido el driver en el archivo.bas como indica el fabricante y me da el siguiente error error 429 activeX no puede crear el objeto. La tarjeta nueva es una pci-1761S y el sistema operativo que tengo es windows xp. Os pego el código del modulo. Espero que me podais echar una mano!
Sub datos()
Dim puerto As New MSCommLib.MSComm
Dim setParam As String
Dim rctablero As Recordset
Dim db As Database
Dim rc As Recordset
Set db = CurrentDb
Set rc = db.OpenRecordset("Aux Valores")
rc.MoveFirst
Dim x%
Dim ultimoCola As Integer
ultimoCola = 8
puerto.CommPort = 2 '''' ESTA ES LA PRIMERA LINEA EN LA QUE SALTA EL ERROR
puerto.InputMode = 0
setParam = "1200,N,7,2"
puerto.Settings = setParam
puerto.InputLen = 0
puerto.PortOpen = True
Dim inString As String
Dim lenCap As Integer
Dim volManta As Double
Dim densidadUltima As Double
Dim pesoTotalManta As Double
Dim control
lenCap = 0
inString = ""
Do
If lenCap < 33 Then
inString = inString & puerto.Input
lenCap = Len(inString)
Else
control = Left(inString, 2)
control = Right(control, 1)
If control = "C" Then
inString = Right(inString, 6)
inString = Left(inString, 4)
Forms![Diario Prensa].NºPesadas.value = Forms![Diario Prensa].NºPesadas.value + 1
If IsNumeric(inString) = False Then
Forms![Diario Prensa].pesoMantaUltimo.value = Forms![Diario Prensa].pesoTeorico.value
lenCap = 0
inString = Forms![Diario Prensa].puerto.Input
inString = ""
Else
Forms![Diario Prensa].pesoMantaUltimo.value = inString
End If
'''' ' If control <> "0 B" Then
''' ' Forms![Diario Prensa].pesoMantaUltimo.value = Forms![Diario Prensa].pesoTeorico.value
''' ' Else
'''' ' End If
pesoTotalManta = Forms![Diario Prensa].kilosMaderaAcumulados.value
pesoTotalManta = pesoTotalManta + CDbl(Forms![Diario Prensa].pesoMantaUltimo.value)
Forms![Diario Prensa].kilosMaderaAcumulados.value = pesoTotalManta
Forms![Diario Prensa].pesoMantaMedioAcumulado.value = pesoTotalManta / Forms![Diario Prensa].NºPesadas.value
controlPesadasBascula
lenCap = 0
inString = puerto.Input
inString = ""
If Forms![Diario Prensa].NºOrdenDePrensa.value <> "" Then
ConsultaMapa
Set rctablero = db.OpenRecordset("resumen mapa_tablero")
If rctablero.EOF = False Then
rctablero.MoveLast
Forms![Diario Prensa].densidadMantaMedia.value = rctablero!AvgDensidad
Forms![Diario Prensa].espesorMedioReal.value = rctablero!AvgEspesor
rc.MoveFirst
rc.Edit
rc!kilos = Forms![Diario Prensa].kilosMaderaAcumulados.value
rc![cola ce] = Forms![Diario Prensa].kgColaCEAcumulado.value
rc![cola ci] = Forms![Diario Prensa].kgColaCIAcumulado.value
rc![peso] = Forms![Diario Prensa].pesoMantaMedioAcumulado.value
rc!Prensadas = Forms![Diario Prensa].NºPesadas.value
rc.Update
End If
rctablero.Close
End If
End If
End If
ultimoCola = controlColas(ultimoCola)
x% = DoEvents
Loop
puerto.PortOpen = False
End Sub
Valora esta pregunta
0