Asistente de depuración del puerto serie
Asistente de depuración del puerto serie (mejora continua)
Instrucciones
Instrucciones: Copyright: Canghai Yixiao
Correo electrónico: minios@yeah .net
Función de declaración privada ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal
lpOperation como cadena, ByVal lpFile como cadena, ByVal lpParameters Como cadena, ByVal lpDirectory como cadena,
ByVal nShowCmd As Long) As Long
Opción explícita
Atenuar señal de entrada
Atenuar text_temp como Cadena
Dim flag_dis As Boolean 'Si se debe dejar de mostrar la bandera
Dim rx_count As Single 'El número de caracteres recibidos
Dim tx_count As Single 'El número de caracteres enviados para ser eliminados
'Cerrar el programa
Private Sub Command6_Click()
MSComm1.PortOpen = False 'Cerrar el puerto serie
Descargarme 'Cierra el programa
Finalizar Sub
'Haz clic en el botón "Ayuda" para abrir el enlace web
Subcomando privado7_Click()
ShellExecute Me.hwnd, " open", "", "", "", 5
End Sub
Subcomando privado8_Click()
Abra Label16.Caption & "\com_data. txt" para anexar como n.° 1
Escriba n.° 1, "Ahorrar tiempo:", Formatear (ahora, "aaaa año m mes dd día hh:mm ")
Escribir #1 , Texto1.Text
Cerrar #1 'Cerrar archivo
Fin Sub
''''' '''Inicialización
Private Sub form_load()
MSComm1.Settings = "9600,n,8,1" 'Configuración de parámetros relacionados con el puerto serie
MSComm1 .CommPort = 1 'Puerto serie 1
MSComm1.InputLen = 0 'Indica leer todos los datos a la vez
MSComm1.InBufferSize = 5120
MSComm1.InBufferCount = 0
MSComm1.OutBufferSize = 5120
MSComm1.OutBufferCount = 0
MSComm1.RTreshold = 1 'Activa un evento de comunicación cada vez que se recibe un carácter p>
MSComm1.STreshold = 1
MSComm1.PortOpen = True 'Abre el puerto serie
Shape1.Shape = 2
Shape1.Visible = Verdadero
Forma1.FillStyle = 0 '
Rellenar todo
Shape1.FillColor = QBColor(12) 'Red
flag_dis = False
Timer2.Enabled = True
Timer2. Intervalo = 250
rx_count = 0
tx_count = 0
Etiqueta14.Caption = rx_count 'Número de caracteres recibidos
Etiqueta15. = tx_count 'Número de caracteres enviados
'Selección de puerto serie
Combo1.AddItem "COM1"
Combo1.AddItem "COM2"
Combo1.AddItem "COM3"
Combo1.AddItem "COM4"
'Velocidad en baudios
Combo2.AddItem "300"
Combo2.AddItem "600"
Combo2.AddItem "1200"
Combo2.AddItem "2400"
Combo2.AddItem "4800"
Combo2.AddItem "9600"
Combo2.AddItem "19200"
Combo2.AddItem "38400"
Combo2.AddItem "43000"
Combo2.AddItem "115200"
'Dígito de control
Combo3.AddItem "N"
Combo3.AddItem "E"
Combo3.AddItem "O"
'Bits de datos
Combo4.AddItem "8"
Combo4.AddItem "7" p>
Combo4.AddItem "6"
'Bit de parada
Combo5.AddItem "1"
Combo5.AddItem "2"
Llamar a new_folder
End Sub
'Enviar automáticamente
Sub privado Check1_Click()
Si Check1.Value Entonces
Si Texto2.Text <> "" Entonces
Timer1.Interval = Text3.Text
Timer1.Enabled = True
Finalizar si
Finalizar si
End Sub
'Enviar manualmente
Subcomando privado1_Click()
MSComm1.Output = Text2. Texto
tx_count = tx_count + Len(Text2.Text)
End Sub
'Abrir\cerrar puerto serie
Subcomando privado2_Clic ()
Si Command2.Caption = "Abrir el puerto serie" Entonces
Command2.Caption = "Cerrar el puerto serie"
MSComm1.PortOpen = True
p>
Shape1.FillColor = QBColor(12) 'Rojo
Else
Com
and2.Caption = "Abrir el puerto serie"
MSComm1.PortOpen = False
Shape1.FillColor = QBColor(8) 'Black
End If p>
End Sub
'Borrar el área de recepción
Private Sub Command3_Click()
Text1.Text = ""
End Sub
'Detener visualización
Private Sub Command4_Click()
Si flag_dis = False Entonces
flag_dis = True
Command4.Caption = "Continuar mostrando"
Else
flag_dis = False
Command4.Caption = "Detener visualización"
Finalizar si
End Sub
'Evento de respuesta del puerto serie
Sub privado mscomm1_oncomm()
Seleccionar caso MSComm1.CommEvent
Caso comEvReceive
inputsignal = MSComm1.Input
rx_count = Len(Trim(inputsignal)) + rx_count
Si flag_dis = True Luego
text_temp = Text1.Text 'Bloquea la información de texto en el área de recepción
Text1.Text = text_temp
Else
Text1 .Texto = (Texto1 .Texto) & (inputsignal)
Finalizar si
Caso más
Finalizar selección
Finalizar sub p>
Private Sub Timer1_Timer()
Si MSComm1.PortOpen = True Entonces 'Si el puerto serie está abierto
Si Check1.Value Entonces
Si Text2.Text < > "" Entonces
Timer1.Interval = Text3.Text
Timer1.Enabled = True
MSComm1.Output = Text2.Text
Fin si
Fin si
Fin si
Fin Sub
Sub Timer2_Timer() privado
Label14 .Caption = rx_count
Label15.Caption = tx_count
End Sub
'Crear un archivo
Sub público new_folder() p>
Dim fol, fso, fil, fils, s, f, fldr
Dim aa As String
Set fso = CreateObject("Scripting. FileSystemObject") p>
En caso de error, reanudar siguiente
aa$ = "C:\COMDATA"
Si fso.folderexi
sts(aa$) = False Then
fol = fso.CreateFolder(aa$)
'MkDir aa
Finalizar si
aa$ = "C:\COMDATA\test"
Si fso.folderexists(aa$) = False Entonces
fol = fso.CreateFolder(aa$)
'MkDir aa
End If
End Sub
Puntos de conocimiento utilizados:
1 Abrir haciendo clic en el botón Enlace web. .
Dado que se va a llamar a la API, se declara lo siguiente al comienzo del programa:
Función de declaración privada ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( ByVal hwnd Como largo, _
ByVal lpoperación como cadena, ByVal lpfile como cadena, ByVal lpparameters como cadena, _
ByVal lpdirectory como cadena, ByVal nshowcmd Como largo) Como largo p>
Luego puede pasar el único clic en el botón "Ayuda" para abrir el enlace web. El código del evento de clic es el siguiente:
Private Sub Command7_Click()
. ShellExecute Me.hwnd, "open", "", "", "", 5
End Sub
2. Cómo inicializar la lista desplegable del cuadro combinado.
'Selección de puerto serie
Combo1.AddItem "COM1"
Combo1.AddItem "COM2"
Combo1.AddItem "COM3"
Combo1.AddItem "COM4"
3. Operaciones de inicialización relacionadas con el puerto serie.
MSComm1.Settings = "9600,n,8,1" 'Configuración de parámetros relacionados con el puerto serie
MSComm1.CommPort = 1 'Puerto serie 1
MSComm1 InputLen = 0 'significa leer todos los datos a la vez
MSComm1.InBufferSize = 5120
MSComm1.InBufferCount = 0
MSComm1.OutBufferSize = 5120
MSComm1.OutBufferCount = 0
MSComm1.RTreshold = 1 'Activa un evento oncomm cada vez que se recibe un carácter
MSComm1.STreshold = 1
MSComm1. PortOpen = True 'Abre el puerto serie
4.
Sub pública new_folder()
Atenuar fol, fso, fil, fils, s, f, fldr
Atenuar aa como cadena
Establecer fso = CreateObject("Scripting.FileSystemObject")
En caso de error, reanudar a continuación
aa$ = "C:\COMDATA"
Si fso.folderexists (aa$) = False Then
fol = fso.CreateFolder(aa$)
'MkDir aa
End If
aa $ = "C:\COMDATA\test"
Si fso.folderexists(aa$) = False Entonces
fol = fso.CreateFolder(aa$)
'MkDir aa
End If
End Sub
Se puede observar que primero se crea la carpeta COMDATA y luego se crean sus subcarpetas, no todas al una vez Crea carpetas de varios niveles.
5. Cómo crear carpetas y archivos en el directorio especificado y escribir datos. y operaciones de formato de hora.
Subcomando privado8_Click()
Abra Label16.Caption & "\com_data.txt" para anexar como #1
Escriba #1, "Ahorre tiempo: ", Formato(Ahora, "aaaa año m mes dd día hh:mm")
Escribe #1, Texto1.Text
Cerrar #1 'Cerrar el archivo
End Sub
6. Utilice el control de forma para dibujar un círculo y rellenarlo con un color específico.
Shape1.Shape = 2 'Círculo
Shape1.Visible = True 'Visible
Shape1.FillStyle = 0 'Rellenar todo
Shape1.FillColor = QBColor(12) 'Red
Además, QBColor(8) es negro y QBColor(12) es rojo.
El código fuente más reciente:
Función de declaración privada ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal
lpOperation Como cadena, ByVal lpFile como cadena, ByVal lpParameters como cadena, ByVal lpDirectory como cadena,
ByVal nShowCmd As Long) As Long
Opción explícita
Atenuar señal de entrada
Dim text_temp As String
Dim flag_dis As Boolean 'Si se debe dejar de mostrar la bandera
Dim rx_count As Single 'El número de caracteres recibidos
Dim tx_count As Single 'Enviar el número de caracteres a eliminar
'*************************** ********* *
Atenuar x1 como cadena, x2 como cadena, x3 como cadena, x4 como cadena, x5 como cadena
Atenuar comset_temp como cadena p>
Subcombo privado1_click( )
Combo1.ForeColor = RGB(255, 0, 0)
Combo1.BackColor = RGB(12, 0, 0) p>
Llamar a comm_set p>
End Sub
Sub privado Combo2_click()
Combo2.ForeColor = RGB(255, 0, 0)
Combo2.BackColor = RGB (12, 0, 0)
Llamar a comm_set
Finalizar sub
Subcombo privado3_click()
Combo3.ForeColor = RGB( 255, 0, 0)
Combo3.BackColor = RGB(12, 0, 0)
Llamar a comm_set
End Sub
Sub privado Combo4_click()
Combo4.ForeColor = RGB(255, 0, 0)
Combo4.BackColor = RGB(12, 0, 0)
Llamar a comm_set
End Sub
Sub privado Combo5_click()
Combo5.ForeColor = RGB(255, 0, 0 )
Combo5 .BackColor = RGB(12, 0, 0)
Llamar a comm_set
End Sub
'Cuenta borrada p>
Subcomando privado5_Click()
rx_count = 0
tx_count = 0
End Sub
'Cerrar el programa
Subcomando privado6_Click()
<p>MSComm1.PortOpen = False 'Cerrar el puerto serie
Descargarme 'Cerrar el programa
End Sub
'Haga clic en el botón "Ayuda" para abrir el enlace web
p>Private Sub Command7_Click()
ShellExecute Me.hwnd, "open", "", "", "", 5
Finalizar sub
Subcomando privado8_Click()
Llamar a new_folder
Abrir Label16.Caption & "\com_data.txt" para agregar como #1
Escribe #1, "Ahorrar tiempo:", Formato(Ahora, "aaaa año m mes dd día hh:mm")
Escribe #1, Texto1.Texto
Cerrar #1 'Cerrar archivo
End Sub
''''''''Inicialización
Sub privado form_load()
MSComm1.Settings = "9600, n,8,1" 'Configuración de parámetros relacionados con el puerto serie
MSComm1.CommPort = 1 'Puerto serie 1
MSComm1.InputLen = 0 'Indica lectura todos los datos a la vez
MSComm1.InBufferSize = 5120
MSComm1.InBufferCount = 0
MSComm1.OutBufferSize = 5120
MSComm1.OutBufferCount = 0
MSComm1.RTreshold = 1 'Activa un evento de comunicación cada vez que se recibe un carácter
MSComm1.STreshold = 1
MSComm1.PortOpen = True ' Abre el puerto serie
Shape1 .Shape = 2
Shape1.Visible = True
Shape1.FillStyle = 0 'Rellenar todo
Shape1.FillColor = QBColor(12) 'Rojo p>
flag_dis = False
Timer2.Enabled = True
Timer2.Interval = 250
rx_count = 0
tx_count = 0
Label14.Caption = rx_count 'Número de caracteres recibidos
Label15.Caption = tx_count 'Número de caracteres enviados p>
'Selección de puerto serie
p>
Combo1.AddItem "COM1"
Combo1.AddItem "COM2"
Combo1.AddItem "COM3"
Combo1.AddItem "COM4"
'Velocidad de baudios
Combo2.AddItem "300"
Combo2.AddItem " 600"
Combo2.AddItem "1200"
Combo2.AddItem "2400"
Combo2.AddItem "4800"
Combo2. AddItem "9600"
Combo2.AddIt
en "19200"
Combo2.AddItem "38400"
Combo2.AddItem "43000"
Combo2.AddItem "115200"
'Dígito de control
Combo3.AddItem "N"
Combo3.AddItem "E"
Combo3.AddItem "O"
' Bits de datos
Combo4.AddItem "8"
Combo4.AddItem "7"
Combo4.AddItem "6"
' Detener bit
Combo5.AddItem "1"
Combo5.AddItem "2"
'Establecer valor inicial de combobox.text
Combo1 . Texto = "COM1"
Combo2.Text = "9600"
Combo3.Text = "N"
Combo4.Text = "8" p >
Combo5.Text="1"
Llamar a new_folder
Llamar a comm_set
End Sub
'Enviar automáticamente
p>Sub Check1_Click() privado
Si Check1.Value entonces
Si Text2.Text <> "" Entonces
Timer1.Interval = Text3 .Text
Timer1.Enabled = True
Finalizar si
Finalizar si
Finalizar sub
' manualmente enviar
Subcomando privado1_Click()
MSComm1.Output = Text2.Text
tx_count = tx_count + Len(Text2.Text)
End Sub
'Abrir\Cerrar el puerto serie
Private Sub Command2_Click()
Si Command2.Caption = "Abrir el puerto serie" Entonces p>
Command2.Caption = "Cerrar el puerto serie"
MSComm1.PortOpen = True
Shape1.FillColor = QBColor(12) 'Rojo
Else
Command2.Caption = "Abrir el puerto serie"
MSComm1.PortOpen = False
Shape1.FillColor = QBColor(8) 'Negro p>
Finalizar si
End Sub
'Borrar el área de recepción
Subcomando privado3_Click()
Texto1.Text = ""
End Sub
'Detener visualización
Subcomando privado4_Click()
Si flag_dis = False Entonces
flag_dis = True p>
Command4.Caption = "Continuar mostrando"
Else
flag_dis = False
Command4.Caption =
"Detener visualización"
End If
End Sub
'Evento de respuesta del puerto serie
Sub privado mscomm1_oncomm()
Seleccione caso MSComm1.CommEvent
Caso comEvReceive
inputsignal = MSComm1.Input
rx_count = Len(Trim(inputsignal)) + rx_count
Si flag_dis = True Entonces
text_temp = Text1.Text 'Reserva la información de texto en el área de recepción
Text1.Text = text_temp
De lo contrario
Texto1.Texto = (Texto1.Texto) & (inputsignal)
Finalizar si
Caso en caso contrario
Finalizar selección
End Sub
'El temporizador 1 se utiliza para cronometrar la transmisión
Private Sub Timer1_Timer()
Si MSComm1.PortOpen = True Entonces 'Si el el puerto serie está en estado Abierto
Si Check1.Value Entonces
Si Texto2.Text <> "" Entonces
Timer1.Interval = Text3.Text
Timer1.Enabled = True
MSComm1.Output = Text2.Text
Fin si
Fin si
Fin si p>
End Sub
'Timer 2 se utiliza para mostrar la cantidad de recepción y envío
Private Sub Timer2_Timer()
Label14.Caption = rx_count p>
Label15.Caption = tx_count
End Sub
'Crear un archivo
Sub público new_folder()
Dim fol, fso, fil, fils, s, f, fldr
Dim aa As String
Establecer fso = CreateObject("Scripting.FileSystemObject")
En caso de error, reanudar a continuación
aa$ = "C:\COMDATA"
Si fso.folderexists(aa$) = False Entonces
fol = fso.CreateFolder( aa$)
'MkDir aa
End If
aa$ = "C:\COMDATA\test"
Si fso.folderexists(aa$) = False Then
fol = fso.CreateFolder(aa$)
'MkDir aa
Finalizar si
Fin del subtítulo
'******************************
Public Sub comm_set()
Si MSComm1.PortOpen <> Falso Entonces
MS
Comm1.PortOpen = False
Fin si
x1 = Combo1.Text
x2 = Combo2.Text
x3 = Combo3.Text
x4 = Combo4.Text
x5 = Combo5.Text
MSComm1.InputLen = 0 'significa leer todos los datos a la vez
MSComm1.InBufferSize = 512
MSComm1.InBufferCount = 0
MSComm1.OutBufferSize = 512
MSComm1.OutBufferCount = 0
MSComm1. RTreshold = 1 'Activa evento de comunicación cada vez que se recibe un carácter
MSComm1.STreshold = 1
MSComm1.CommPort = Val(Right(x1, 1))
comset_temp = x2 & "," & x3 & "," & x4 & "," & x5
MSComm1.Settings = (comset_temp)
Command2.Caption = "Abrir puerto serie "
Shape1.FillColor = QBColor(8) 'Negro
End Sub
Renderizado:
Último archivo de proyecto:
p>
Archivo: Asistente de depuración de puerto serie.rar
Tamaño: 18 KB
Descargar: Descargar