Red de conocimiento informático - Problemas con los teléfonos móviles - Problema extraño de VB, espero que los expertos puedan darme alguna orientación, puede estar relacionado con la generación de exe~~~~

Problema extraño de VB, espero que los expertos puedan darme alguna orientación, puede estar relacionado con la generación de exe~~~~

Attend.MSComm2.RTreshold = 10

Esta oración significa que se genera una interrupción cuando el puerto serie recibe 10 datos.

Se recomienda intentar configurarlo en 1.

Attend.MSComm2.InBufferSize = 40

Se recomienda establecer esta oración en 4096

Solo puedo decir que muchos convertidores de interfaz USB a puerto serie son virtual La interrupción suave del puerto serie casi no funciona correctamente durante la comunicación continua.

El convertidor de USB a serie que compré antes no funcionó, pero el que compré más tarde, el convertidor de PCI a serie, funcionó bien de inmediato.

La prueba de recepción del puerto serie acaba de completarse, la prueba de baja velocidad pasó.

Copia el siguiente código y guárdalo como .frm.

Utilice esta prueba de compilación para ver si recibirá varios datos.

VERSIÓN 5.00

Objeto = "{648A5603-2C6E-101B-82B6-000000000014}#1.1#0"; "mscomm32.ocx"

Comenzar VB .Form Form1

BorderStyle = 3 'Diálogo fijo

Caption = "Form1"

ClientHeight = 6090

ClientLeft = 45

ClientTop = 330

ClientWidth = 5580

LinkTopic = "Form1"

MaxButton = 0 'False

MinButton = 0 'False

ScaleHeight = 6090

ScaleWidth = 5580

ShowInTaskbar = 0 'False

StartUpPosition = 3 'Ventana predeterminada

Comenzar VB.ComboBox Combo1

Alto = 300

Izquierda = 2640

Estilo = 2 'Lista desplegable

TabIndex = 4

Superior = 5640

Ancho = 855

Fin

Inicio VB.Timer Timer1

Habilitado = 0 'Falso

Intervalo = 40

Izquierda = 240

Arriba = 4560

Fin

Comenzar VB.CommandButton Command2

Caption = "Borrar"

Alto = 495

Izquierda = 1440

TabIndex = 2

Arriba = 5400

Ancho = 975

Fin

Comienzo MSCommLib.MSComm MSComm1

Izquierda = 840

p>

Superior = 4440

_ExtentX = 10

05

_ExtentY = 1005

_Version = 393216

CommPort = 3

DTREnable = -1 'Verdadero

StopBits = 2

Fin

Inicio VB.CommandButton Comando1

Título = "Inicio"

Alto = 495

Izquierda = 120

TabIndex = 1

Arriba = 5400

Ancho = 1095

Fin

Comenzar VB.TextBox Texto1

Alto = 5055

Izquierda = 120

MultiLine = -1 'Verdadero

Barras de desplazamiento = 2 ' Vertical

TabIndex = 0

Superior = 120

Ancho = 5295

Fin

Inicio VB.Shape Forma1

BackColor = &H80000004&

BackStyle = 1 'Opaco

Altura = 255

Izquierda = 4920

Forma = 3 'Círculo

Top = 5640

Ancho = 375

Fin

Comenzar VB.Label Label3

Título = "Byte"

Alto = 255

Izquierda = 3600

TabIndex = 6

Arriba = 5640

Ancho = 495

Fin

Inicio VB.Label Label2

Título = "Recibir longitud de datos"

Alto = 255

Izquierda = 2640

TabIndex = 5

Arriba = 5280

Ancho = 1215

Fin

Inicio VB .Label Label1

Alineación = 1 'Justificar a la derecha

Tamaño automático = -1 'Verdadero

Título = "0 Byte"

Alto = 180

Izquierda = 3960

TabIndex = 3

Arriba = 5280

Ancho = 1380

Fin

Fin

Atributo VB_Name = "Form1"

Atributo VB_GlobalNameSpace = False

Atributo VB_Creatable = False

Atributo VB_PredeclaredId = True

Atributo VB_Exposed = False

Subcombo privado1_Click()

MSComm1.InputLen = Combo1.ListIndex + 1

End Sub

Sub privado Command1_Click()

MSComm1.PortOpen = No MSComm1.PortOpen

Si MSComm1.PortOpen Entonces

Command1. Caption = "Detener"

Else

Command1.Caption = "Iniciar"

Finalizar si

Fin Sub

Subcomando privado2_Click()

Text1.Text = ""

Label1.Caption = "0 Byte"

End Sub

Private Sub Form_Load()

'Inicialización del puerto de comunicación:

Para i = 1 a 99

Combo1.AddItem i

Siguiente

Combo1.ListIndex = 8

MSComm1.Settings="9600,n,8,2"

MSComm1.CommPort = 3

MSComm1.InputMode = comInputModeBinary

MSComm1.InputLen = Combo1.ListIndex + 1

MSCom

m1.InBufferCount = 0

MSComm1.OutBufferCount = 0

MSComm1.RTreshold = Combo1.ListIndex + 1

MSComm1.InBufferSize = 4096

End Sub

Sub privado Form_QueryUnload(Cancelar como entero, UnloadMode como entero)

Si MSComm1.PortOpen entonces MSComm1.PortOpen = False

End Sub

'Evento de recepción del puerto serie

Private Sub MSComm1_OnComm()

Dim inx() As Byte

Dim strTemp As String

Dim strTemp1 como cadena

Dim strLen como byte

Seleccionar caso MSComm1.CommEvent

Caso comEvReceive 'Juzgado para recibir evento

inx = MSComm1.Input 'Recibir datos

MSComm1.InBufferCount = 0

MSComm1.RTreshold = Combo1.ListIndex + 1

Para i = 0 Para UBound (inx)

strTemp1 = Hex(inx(i))

Si Len(strTemp1) > 1 Entonces

strTemp = strTemp & strTemp1 & " "

De lo contrario

strTemp = strTemp & "0" & ​​​​strTemp1 & " "

Finalizar si

Siguiente i

Texto1.Text = Texto1.Text & strTemp & vbCrLf

Text1.SelStart = Len(Text1.Text)

Label1.Caption = Str(Val(Label1.Caption ) + i ) & " Byte"

Borrar inx

Shape1.BackColor = vbRed

Timer1.Enabled = True

Finalizar selección

Fin del subtexto

Subtexto privado1_Change()

Si Len(Text1.Text) > 9999 Then Text1.Text = ""

End Sub

Private Sub Timer1_Timer()

Shape1.BackColor = &H80000004

Timer1.Enabled = False

Fin Sub