Cómo utilizar el control MSCOMM en VB para obtener datos del puerto COM y almacenarlos en acceso en tiempo real. Es mejor tener código y explicaciones detalladas.
Esto implica el protocolo de datos de su puerto COM y luego usar el control MSCOMM para analizar los datos obtenidos del puerto COM de acuerdo con el protocolo y luego almacenarlos en la base de datos.
Aquí hay un código de mi proyecto anterior para su referencia
'Configuración del control MSCOMM
Public Sub psubInitComPort(intMsCommIndex As Integer, intComNo As Integer, strSettings As String, intInBuffSize As Integer, intRTreshold como entero, blnPortOpen como booleano)
En caso de error, vaya a err_proc
Si blnPortOpen entonces '--Abra el puerto serie
MSComm(intMsCommIndex).CommPort = intComNo ' --Usar puerto Com1~8
MSComm(intMsCommIndex).Settings = strSettings '"1200,N,8,1" '--Establecer propiedades del puerto, establecer velocidad en baudios a 1200, sin paridad, 8 bits de datos y 1 bit de parada
MSComm(intMsCommIndex).InBufferSize = intInBuffSize '1024 '--Establece el tamaño del búfer de recepción en 1024 bytes
MSComm(intMsCommIndex).RTreshold = intRTreshold ' 12 '--Configura el evento OnComm() para que se active cada n bytes recibidos
MSComm(intMsCommIndex).InBufferCount = 0 '--Borrar el buffer de recepción
MSComm( intMsCommIndex ).InputLen = 0 '--El número de caracteres leídos en el búfer de recepción cuando se usa el atributo de entrada, 0 significa leer todo el contenido del búfer de recepción
MSComm(intMsCommIndex).InputMode = comInputModeBinary '-- El los datos tomados por el atributo de entrada son datos binarios
Si no es MSComm(intMsCommIndex).PortOpen Entonces '--Abra el puerto serie
MSComm(intMsCommIndex).PortOpen = True
End If
Else
If MSComm(intMsCommIndex).PortOpen Then '--Cerrar el puerto serie
MSComm(intMsCommIndex).PortOpen = Falso
Finalizar si
Finalizar si
Salir del sub
err_proc:
Fin del sub
'El control MSCOMM recibe datos
Private Sub MSComm_OnComm(Index As Integer)
En caso de error, reanudar a continuación
Si MSComm(Index).CommEvent = comEvReceive Luego 'Recibir buffer Recibí n bytes que se han configurado
Seleccione el caso I
ndex
Caso 1 '→Estación 1# Agregar agua
Llamar a psubProcComDataCar(Index)
Caso 2 '--Estación 2# Agregar agua
Llamar a psubProcComDataCar(Index)
Caso 3 '--3#站加 acero
Llamar a psubProcComDataCar(Index)
' Caso 5 '-- p>
'
' Caso 6 '--
' Caso 7 '--
' p>
' Caso 8 '--
End Select
End If
End Sub
'Procesos seriales datos de recepción del puerto
Public Sub psubProcComDataCar(intComPortNum As Integer)
Dim intTmpi As Integer
Dim bytTmp() As Byte
Dim strtmp como cadena
En caso de error, vaya a err_proc
bytTmp = Me.MSComm(intComPortNum).Input
Para intTmpi = 0 a UBound(bytTmp)
strtmp = strtmp & " " & Format(bytTmp(intTmpi), "00")
Siguiente intTmpi
'--Muestra el archivo de datos original
Me.txtTmpRecv(intComPortNum) = Me.txtTmpRecv(intComPortNum) & strtmp
Si Len(Me.txtTmpRecv(intComPortNum).Text) > 600 Entonces
Me.txtTmpRecv( intComPortNum) .Text = ""
Finalizar si
'-Escribir base de datos
Llamar a UpdateDatebase(strtmp)
Salir de Sub
err_proc:
End Sub
'--Escribir base de datos
Sub actualización pública Base de datos (strData como cadena)
Atenuar gadoConnLocal como nuevo ADODB.Connection
Atenuar gadoCmdLocal como nuevo ADODB.Command
En caso de error, reanudar siguiente
gadoConnLocal.ConnectionString = "Provider=Microsoft.Jet .OLEDB .4.0;Fuente de datos=C:\db
1.mdb;Persist Security Info=False" 'Supongamos que la base de datos se llama db1 y está almacenada en la unidad C
gadoConnLocal.CursorLocation = adUseClient
gadoConnLocal.Mode = adModeReadWrite 'Abrir la base de datos en modo lectura y escritura
gadoConnLocal.Open 'Conectar a la base de datos
gadoCmdLocal.ActiveConnection = gadoConnLocal
gadoCmdLocal.CommandType = adCmdText
gadoCmdLocal.CommandText = " insertar en [nombre de la tabla de datos] (campo 1) valores('" & strData & "')" 'Escribir en la base de datos
gadoCmdLocal.Execute
gadoConnLocal.Close 'Cerrar base de datos
Establecer gadoConnLocal = Nada
Establecer gadoCmdLocal = Nada
End Sub