Red de conocimiento informático - Problemas con los teléfonos móviles - VB envía datos al problema del microcontrolador

VB envía datos al problema del microcontrolador

Opción explícita

Dim intTime como entero

Privado strSendText como cadena 'Enviar datos de texto

Privado bytSendByte() Como byte 'Enviar datos binarios

PrivateblnReceiveFlag es un valor booleano

Private blnAutoSendFlag es un valor booleano

Private intPort es un número entero

Private strSet es una cadena

Private intReceiveLen para números enteros

PrivatebytReceiveByte() como byte

Private strAscii como cadena 'Establecer valor inicial

Private strHex como cadena

Private intHexWidth As Integer

Private intLine As Integer

Private m As Integer

Private strAddress As String

'El número hexadecimal se convierte a la representación de caracteres correspondiente del número entero, error devuelto -1

Función ConvertHexChr(str As String) As Integer

Dim test As Integer

test = Asc(str )

Si prueba gt; = Asc("0") y prueba lt; = Asc("9") entonces

prueba = prueba - Asc("0")

De lo contrario, si test gt; = Asc("a") y test lt; = Asc("f") entonces

test = test - Asc("a") 10

De lo contrario, si test = Asc("A") y test lt; = Asc("F") Entonces

test = test - Asc("A") 10

Else

prueba = -1 ' Mensaje de error

Finalizar si

ConvertHexChr = prueba

Finalizar función

'Convierte los datos hexadecimales representados por la cadena en la cadena de bytes correspondiente y devuelve el número de bytes convertidos

Función strHexToByteArray (strText como cadena, bytByte() como byte) como entero

Dim HexData As Integer 'Equivalente en bytes de datos hexadecimales (binarios)

Dim hstr As String * 1 'Carácter alto

Dim lstr As String* Dim HighHexData As Integer 'Alto valor

Dim LowHexData As Integer 'Valor bajo

Dim HexDataLen As Integer 'Número de bytes

Dim Stri

ngLenAs Integer 'Longitud de cadena

Dim Account As Integer

Dim n As Integer

'Count

'txtSend = "" ' Establecer valor inicial

HexDataLen = 0

strHexToByteArray= 0

StringLen = Len(strText)

Cuenta = StringLen \ 2

ReDim bytByte(Cuenta)

Para n = 1 a StringLen

Haga 'Borrar espacios

hstr = Mid(strText, n, 1 )

n = n 1

Si (n - 1) gt; StringLen Entonces

HexDataLen = HexDataLen - 1

Salir para

If (n - 1) gt; StringLen Then

HexDataLen = HexDataLen - 1

Salir para

Finalizar si

Bucle Mientras que hstr = " "

Hacer

lstr = Mid(strText, n, 1)

n = n 1

Si ( n - 1) gt; StringLen Then

HexDataLen = HexDataLen - 1

Salir para

Finalizar si

Bucle mientras lstr = " "

n = n - 1

Si n gt; StringLen Entonces

HexDataLen = HexDataLen - 1

Salir para

Finalizar si

HighHexData = ConvertHexChr(hstr)

LowHexData = ConvertHexChr(lstr)

Si HighHexData = -1 o LowHexData = - 1 Entonces 'Abortar la conversión si es ilegal.

1 y luego 'Si se encuentra un carácter ilegal, interrumpa la conversión

HexDataLen = HexDataLen -1

Salir para

Else

HexData = HighHexData * 16 LowHexData

bytByte(HexDataLen) = HexData

HexDataLen = HexDataLen 1

Finalizar si

Siguiente n

If HexDataLen gt; 0 Then 'Corrige el valor cambiado en el bucle anterior

HexDataLen = HexDataLen - 1

ReDim Preserve bytByte(HexDataLen)

Else

ReDim Preserve bytByte(0)

End If

If StringLen = 0 Then 'Si es una cadena vacía, no entrará en el bucle body

strHexToByteArray = 0

Else

strHexToByteArray = HexDataLen 1

Finalizar si

Finalizar función

Private Sub cmdManualSend_Click()

Si no es Me.MSComm.PortOpen entonces

Me.MSComm.CommPort = intPort

Me.MSComm. CommPort = intPortPortOpen = False

Finalizar si

End Sub

Sub privado cmdAutoSend_Click()

Si blnAutoSendFlag Entonces

Yo. ctrTimer.PortOpen entonces

Me.MSComm.CommPort = intPort

Me.MSComm.Settings = strSet

Me.MSComm.PortOpen = True

Fin si

Me.ctrTimer.Interval = intTime

Me.MSComm.Settings = strSet

Me.MSComm.PortOpen = Verdadero

Fin si

Me.ctrTimer.Interval = intTime