📄 digi.bas
字号:
Attribute VB_Name = "Apis"
Option Explicit
Declare Function GetTickCount Lib "kernel32" () As Long
Const NMS = 100 'N鷐ero de milisegundos que espero la respuesta.
Const NumeroIntentos = 3 'N鷐ero de veces que se reintenta una comunicaci髇.
'Variables que contienen los ultimos pesos
'de Pieza y de caja para una posible reimpresion
Global nUltimoPesoCaja As Double
'Matrices de Entradas
Global nPesoRecibido As Double
Global bPesoRecibido(1) As Boolean
Global bRecibiendoTrama(1) As Boolean
Global sTramaRecibida(1) As String
Global sTipoEntrada(1) As String
'--------------------------------------------------------------
'Sub ComprobarPuertoSinRespuesta
' Comprueba si hay datos en el puerto de comunicaciones
' y envia la respuesta a bExtraerCamposTramaRecibida
' directamente, SIN pasar por AnalizarTramaRecibida
' que es el que responde al puerto
'
'--------------------------------------------------------------
Public Sub ComprobarPuertoSinRespuesta(objCOM As Object, nEntrada As Integer)
Dim T1 As Long
Dim T2 As Long
Dim Aux As String
Dim Dummy As Variant
T1 = GetTickCount()
Do
Dummy = DoEvents
T2 = GetTickCount()
If (T2 - T1) >= NMS Then
Exit Do
End If
If objCOM.InBufferCount Then
Aux = objCOM.Input
If Aux <> "" Then
Select Case Asc(Aux)
Case 2 'STX. Comienzo de Trama.
If Not bRecibiendoTrama(nEntrada) Then
'Comienzo a recibir una trama.
bRecibiendoTrama(nEntrada) = True
sTramaRecibida(nEntrada) = ""
Else
sTramaRecibida(nEntrada) = sTramaRecibida(nEntrada) & Aux
End If
Case 3 'ETX. Final de Trama.
If bRecibiendoTrama(nEntrada) Then
'Trama recibida. Analizo dicha trama.
bRecibiendoTrama(nEntrada) = False
Dummy = bExtraerCamposTramaRecibida(nEntrada)
Else
sTramaRecibida(nEntrada) = sTramaRecibida(nEntrada) & Aux
End If
Case 6 'ACK. El microfug髆etro ha entendido el mensaje.
If Not bRecibiendoTrama(nEntrada) Then
'Se recibe OK (al 鷏timo mensaje enviado).
sTramaRecibida(nEntrada) = Aux
Else
sTramaRecibida(nEntrada) = sTramaRecibida(nEntrada) & Aux
End If
Case 21 'NAK. El microfug髆etro no ha entendido el mensaje.
If Not bRecibiendoTrama(nEntrada) Then
'Se recibe KO (al 鷏timo mensaje enviado).
sTramaRecibida(nEntrada) = Aux
Else
sTramaRecibida(nEntrada) = sTramaRecibida(nEntrada) & Aux
End If
Case Else
If bRecibiendoTrama(nEntrada) Then
sTramaRecibida(nEntrada) = sTramaRecibida(nEntrada) & Aux
Else
sTramaRecibida(nEntrada) = ""
End If
End Select
End If
T1 = GetTickCount()
End If
Loop
End Sub
Public Sub PuertoComunicaciones(objCOM As Object, Estado As Boolean, _
Optional nInputLen As Integer)
On Error GoTo error
If Estado Then
'Abrir.
objCOM.InputLen = nInputLen
If Not objCOM.PortOpen Then
objCOM.PortOpen = True
End If
Else
'Cerrar.
If objCOM.PortOpen Then
objCOM.PortOpen = False
End If
End If
error:
MsgBox "Error en el puerto COM" & objCOM
FormPrincipal.TimerGeneral.Enabled = False
End Sub
'------------------------------------------------------------------
'Function bExtraerCamposTramaRecibida
' Estrae de la trama recibida los campos que tiene
' que analizar (Peso y Linea Recibida)
'
'------------------------------------------------------------------
Public Function bExtraerCamposTramaRecibida(nEntrada As Integer) As Boolean
Dim nPos As Integer
On Error Resume Next
Err.Clear
'Analisis del peso
nPos = InStr(1, sTramaRecibida(nEntrada), "W")
If nPos > 0 Then
nPesoRecibido = Val(Mid(sTramaRecibida(nEntrada), nPos + 1, Len(sTramaRecibida(nEntrada))))
nPesoRecibido = nPesoRecibido / 1000
nPesoRecibido = Format(nPesoRecibido, "0.000")
FormPrincipal.peso.Caption = nPesoRecibido & " Kg"
End If
If Err.Number = 0 Then
bExtraerCamposTramaRecibida = True
Else
bExtraerCamposTramaRecibida = False
End If
End Function
'-----------------------------------------------------------------------
'Sub Main
'
'Autor: CSA
'-----------------------------------------------------------------------
Sub Main()
'Comprueba que solo exista una insatancia de la aplicacion ejecutandose
If App.PrevInstance = True Then
End
End If
'mostrar el formulario
Load FormPrincipal
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -