VB envía datos al problema del microcontrolador
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") p>
De lo contrario, si test gt; = Asc("a") y test lt; = Asc("f") entonces
test = test - Asc("a") 10 p>
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 p >
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 p >
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 p>
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