Red de conocimientos turísticos - Información de alquiler - Asistente de depuración del puerto serie

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

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"

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

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

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()

Dim fol, fso, fil, fils, s, f, fldr

Dim aa As String

Set fso = CreateObject("Scripting. FileSystemObject")

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

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

Subcombo privado1_click( )

Combo1.ForeColor = RGB(255, 0, 0)

Combo1.BackColor = RGB(12, 0, 0)

Llamar a comm_set

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

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

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

'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"

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

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

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

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

End Sub

'Timer 2 se utiliza para mostrar la cantidad de recepción y envío

Private Sub Timer2_Timer()

Label14.Caption = rx_count

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