Autor Tema: comunicacion RS232 en Visual Basic  (Leído 341249 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado hhpp

  • PIC12
  • **
  • Mensajes: 99
RE: comunicacion RS232 en Visual Basic
« Respuesta #75 en: 26 de Diciembre de 2005, 16:41:00 »

hasta donde se no se puede enviar datos hex, solo envia ASCII bueno no hay otra que convertirlos una llegados, pero no entiendo que esta mal ya por ejemplo envio la A  y no passa nada, haber una manito con el programita lo probe en el simualdor y trabaja de maravilla pero el momentio de montar no pasa nada.
Gracias.
hp.

Desconectado hhpp

  • PIC12
  • **
  • Mensajes: 99
RE: comunicacion RS232 en Visual Basic
« Respuesta #76 en: 04 de Enero de 2006, 14:47:00 »
Bueno ya no se que esta mal revise todo el hardware y todas lsa conexiones estan bien, estoy recibiendo los datos de los cnales analogicos peroo no pasa nada el rato de trasnmitir por fsavor ayuda.

Desconectado hhpp

  • PIC12
  • **
  • Mensajes: 99
RE: comunicacion RS232 en Visual Basic
« Respuesta #77 en: 04 de Enero de 2006, 21:19:00 »
Hola karen bueno simplemente sumas 30hex, por ejemplo 0=30hex
1=31hex, etc ahora tendrias que tomar restricciones 0-9, tb para las letras.
Bueno sigo con mi tema, recuerdan que esoty recibiendo los datos analogicos que el pic envia en los correspondientes textbox, con el codigo que ya puse atras.
los datos analogicos vienen de la siguiente manera:
A2.445B4.567.... etc
Ahora tyengo un problema por que cuando se produice una interrupcion en el pic
este envia otro dato el cual debo separar y colocarlo en diferentes textbos, segun
sea su equivalente bianrio, lo malo esque se mete justo en medio de los datos analogicos A3.455@B4.567 y asi, cualquier idea ayudaria.
Gracias.

Desconectado edibrok

  • PIC10
  • *
  • Mensajes: 1
RE: comunicacion RS232 en Visual Basic
« Respuesta #78 en: 19 de Enero de 2006, 09:24:00 »
hola!!
quisiera saber como envio un enter en visial basic por el puerto serial, osea el CrLf, ya que nesecito enviar comandoas at y estos requieren de un enter al final.

Desconectado Colores

  • Moderadores
  • PIC16
  • *****
  • Mensajes: 232
RE: comunicacion RS232 en Visual Basic
« Respuesta #79 en: 19 de Enero de 2006, 19:03:00 »
Char 13?

Desconectado hhpp

  • PIC12
  • **
  • Mensajes: 99
RE: comunicacion RS232 en Visual Basic
« Respuesta #80 en: 23 de Enero de 2006, 16:24:00 »
Bueno ahora ya vamos con esto y necesito su ayuda.
Como testeo bits en VB?

por ejemplo tengo el caracter "A" =01000001

quisiera hacer esto a= A(solo el bit 0)  and 1 (solo el bit 0) de modo que si ambos bits estan en uno  , entonces que el resulto sea uno, caso contrrario 0.

Aqui denme una mano .

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
RE: comunicacion RS232 en Visual Basic
« Respuesta #81 en: 23 de Enero de 2006, 21:00:00 »
Hola. la funcion AND es una multiplicacion.

No entendi bien...yo aca te hice el algoritmo para que compares los 2 bits ceros de las dos variables que le pongas. El codigo:

Private Function FuncionAND(byte1, byte2 As Long) As Boolean

FuncionAND = CBool(Right(byte1, 1) * (Right(byte2, 1)))

End Function

y para ver el resultado hace asi:

MsgBox FuncionAND(1000001,11111111 )

Eso debe dar TRUE (=verdadero)(=1) ya que ambos bits ceros de ambos valores que ingrese son 1.

Espero que sea eso lo que querias.Proba y juga. Exitos.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado Pithya

  • PIC10
  • *
  • Mensajes: 5
RE: comunicacion RS232 en Visual Basic
« Respuesta #82 en: 24 de Enero de 2006, 11:56:00 »
Hola!! Es la segunda vez que entro en el foro, espero que me podais ayudar como la otra vez... Mi problema es que tengo un pic 16f873a en el que he almacenado datos de humedad que un robot ha ido tomando y quiero pasarlos a visual basic, pero al usar el programilla que habia por aqui he visto que te pasa el codigo binario a ascii automaticamente y a mi eso no me vale, necesitaria ver los numeros en binario!! Alguien sabe como puedo hacerlo? Gracias!!

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
RE: comunicacion RS232 en Visual Basic
« Respuesta #83 en: 24 de Enero de 2006, 12:05:00 »
Hola. No te entendi bien...
Si. El programita que usaste es seguramente el que hice para ENO45. Y es para pasar de binario a ASCII.
Si lo que necesitas es pasar de binario a decimal, entonces solamente necesitas cambiar el programa asi:

Private Function Bin2String(DatoBin As Long) As integer

Dim DatoInt As Integer
Dim Recorre As Integer

DatoInt = 0
For Recorre = 0 To Len(CStr(DatoBin)) - 1
DatoInt = DatoInt + ((2 ^ Recorre) * CInt(Mid(CStr(DatoBin), Len(CStr(DatoBin)) _
- Recorre, 1)))
Next

Bin2String = DatoInt

End Function

y la llamas por ejemplo asi:


dim midecimal as integer
midecimal = Bin2String(1001)
msgbox midecimal

Ahora si lo que necesitas es pasar de decimal a binario..hay que hacer otro programa, pero no es muy complicado. Exitos.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado Pithya

  • PIC10
  • *
  • Mensajes: 5
RE: comunicacion RS232 en Visual Basic
« Respuesta #84 en: 25 de Enero de 2006, 10:06:00 »
Bueno... a ver si me se explicar:

Tengo un form en el que recibo datos por el puerto serie, yo envio datos en binario, pero en mi form "recibir" me aparecen en ASCII. Así que tengo un problema, porque por ejemplo, un "1"binario es un "1" decimal, pero no es un "1" ASCII... O sea que al enviar, por ejemplo, el byte "1000001", que es un 65 decimal, me aparece en la pantalla una "A" y no un "65", que es lo que yo quiero. Adjunto mi form "recibir", a ver si sabes que arreglos le tengo que hacer... perdon porque no se mucho de visual (xa entendernos, no me he enterado de nada de lo que habia escrito en tu post anterior) si me puedes ayudar te estaré eternamente agradecida.

FORM TRANSMISION RS232:

rivate Sub cmdDatos_Click()
Dim buferentrada As String
buferentrada = MSComm1.Input        
txtRebre.Text = buferentrada      
End Sub

Private Sub Command1_Click()
Form3.Show
Form8.Hide
Form3.Enabled = True
End Sub

Private Sub Form_Load()
Dim CommPort As String, Handshaking As String, Settings As String

Dim buferentrada    As String
MSComm1.CommPort = 1        
MSComm1.PortOpen = True    
End Sub

Private Sub Frame1_DragDrop(Source As Control, X As Single, Y As Single)

End Sub

Private Sub MSComm1_OnComm()
MSComm1.Settings = "9600,n,8,1" "configuracion del puerto serie

End Sub

Private Sub Texto_Change()

End Sub

Private Sub Texto2_Change()

End Sub

Private Sub txtRebre_Change()

End Sub


YA TA

En el form tengo un boton para recibir, uno para salir (volver al form principal) y el textbox donde se ven los datos que llegan

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
RE: comunicacion RS232 en Visual Basic
« Respuesta #85 en: 25 de Enero de 2006, 13:28:00 »
Hola.

Cambia esto:

Dim buferentrada As String
buferentrada = MSComm1.Input

por esto:

Dim buferentrada As integer
buferentrada = Asc(MSComm1.Input )

Exitos.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado Pithya

  • PIC10
  • *
  • Mensajes: 5
RE: comunicacion RS232 en Visual Basic
« Respuesta #86 en: 29 de Enero de 2006, 05:10:00 »
No funcionó Llorica

Me da un error en lo de Asc(...). He encontrado un programilla por el foro para pasar de ASCII a decimal, a lo mejor me sirve... probare a ver que tal. El codigo es el siguiente (por si alguien ve algo mal o alguna sugerencia...)

Recibo en el puerto un caracter ascii de ese valor hexadecimal que es del tipo string, lo que hago es convertir dicho valor en un valor decimal (recibo un string de 2 caracteres para la resolucion de 10bits que comentas)
//////////////////////////////////////////////////////////////////////////
Public Function pasarAsciiDato(cad As String) As Integer
Dim rdo As Boolean
Dim carAscii As String
Dim carHex As String
Dim carDec As Integer

"a partir de un caracter ascii recibido en el puerto,
"obtenemos el dato asociado
"If cad <> vbNullString Then
carAscii = Asc(cad)
carHex = Hex(carAscii)
carDec = pasarHexADecimal(carHex)
"End If
pasarAsciiDato = carDec
End Function
//////////////////////////////////////////////////////////////////////////////////
Esta funcion nos devuelve el valor decimal de los 10bits que enviaste por el puerto.
aqui esta definida la funcion pasarHexADecimal()
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Public Function pasarHexADecimal(InputData As String) As Double
""
"" Converts Hexadecimal to Decimal
""
Dim i As Integer
Dim DecOut As Double
Dim Lenhex As Integer
Dim HexStep As Double


"" Zeroise the output
DecOut = 0

"" The length of the input
""
InputData = UCase(InputData)
Lenhex = Len(InputData)

""
"" Check to make sure its a valid Hex Number
""
For i = 1 To Lenhex

If IsNumeric(Mid(InputData, i, 1)) Then
""
GoTo NumOk
ElseIf Mid(InputData, i, 1) = "A" Then
GoTo NumOk
ElseIf Mid(InputData, i, 1) = "B" Then
GoTo NumOk
ElseIf Mid(InputData, i, 1) = "C" Then
GoTo NumOk
ElseIf Mid(InputData, i, 1) = "D" Then
GoTo NumOk
ElseIf Mid(InputData, i, 1) = "E" Then
GoTo NumOk
ElseIf Mid(InputData, i, 1) = "F" Then
GoTo NumOk
Else
MsgBox "El número no es hexadecimal", vbCritical
Exit Function
End If

NumOk:
Next i

HexStep = 0

""
""
"" Convert the Number to Decimal
""
For i = Lenhex To 1 Step -1

HexStep = HexStep * 16
If HexStep = 0 Then
HexStep = 1
End If

If Mid(InputData, i, 1) = "0" Then
DecOut = DecOut + (0 * HexStep)
ElseIf Mid(InputData, i, 1) = "1" Then
DecOut = DecOut + (1 * HexStep)
ElseIf Mid(InputData, i, 1) = "2" Then
DecOut = DecOut + (2 * HexStep)
ElseIf Mid(InputData, i, 1) = "3" Then
DecOut = DecOut + (3 * HexStep)
ElseIf Mid(InputData, i, 1) = "4" Then
DecOut = DecOut + (4 * HexStep)
ElseIf Mid(InputData, i, 1) = "5" Then
DecOut = DecOut + (5 * HexStep)
ElseIf Mid(InputData, i, 1) = "6" Then
DecOut = DecOut + (6 * HexStep)
ElseIf Mid(InputData, i, 1) = "7" Then
DecOut = DecOut + (7 * HexStep)
ElseIf Mid(InputData, i, 1) = "8" Then
DecOut = DecOut + (8 * HexStep)
ElseIf Mid(InputData, i, 1) = "9" Then
DecOut = DecOut + (9 * HexStep)
ElseIf Mid(InputData, i, 1) = "A" Then
DecOut = DecOut + (10 * HexStep)
ElseIf Mid(InputData, i, 1) = "B" Then
DecOut = DecOut + (11 * HexStep)
ElseIf Mid(InputData, i, 1) = "C" Then
DecOut = DecOut + (12 * HexStep)
ElseIf Mid(InputData, i, 1) = "D" Then
DecOut = DecOut + (13 * HexStep)
ElseIf Mid(InputData, i, 1) = "E" Then
DecOut = DecOut + (14 * HexStep)
ElseIf Mid(InputData, i, 1) = "F" Then
DecOut = DecOut + (15 * HexStep)
Else
MsgBox "ERROR pasando a decimal", vbCritical
End If

Next i



pasarHexADecimal = DecOut

eds:
End Function
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Y gracias al que posteó esto y a todos los que respondeis Sonrisa

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
RE: comunicacion RS232 en Visual Basic
« Respuesta #87 en: 29 de Enero de 2006, 11:06:00 »
Hola. Tiene que funcionar...
A ver si nos entendemos:

Vos lo que queres es esto?

ejemplo:

mivariablestring = "@"

¿y queres obtener el valor 64, que le corresponde al @ en la tabla ASCII?

si es eso hace:

if mivariablestring <> "" then mivariableinteger  = asc(mivariablestring)

"" se puede reemplazar por VbNullString. Como desees.

Exitos
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado Yului

  • PIC10
  • *
  • Mensajes: 2
RE: comunicacion RS232 en Visual Basic
« Respuesta #88 en: 17 de Febrero de 2006, 08:17:00 »
Hola a todos.. Soy nueva en el foro, decidi inscribirme porque veo que tratan temas muy interesantes...

Les digo que mi tesis se basa en realizar la implementación de un bus de campo asíncrono, mediante el uso de PIC 16f84, la parte que tengo que desarrollar es el protocolo de comunicación entre el pic maestro con la PC (mediante comunicación serial) y el maestro con los esclavos.. Estoy un poco desorientada.. Por lo que agradezco toda la ayuda que me puedan proporcionar al respecto...

Gracias...

Desconectado Yului

  • PIC10
  • *
  • Mensajes: 2
RE: comunicacion RS232 en Visual Basic
« Respuesta #89 en: 17 de Febrero de 2006, 08:18:00 »
Hola a todos.. Soy nueva en el foro, decidi inscribirme porque veo que tratan temas muy interesantes...

Les digo que mi tesis se basa en realizar la implementación de un bus de campo asíncrono, mediante el uso de PIC 16f84, la parte que tengo que desarrollar es el protocolo de comunicación entre el pic maestro con la PC (mediante comunicación serial) y el maestro con los esclavos.. Estoy un poco desorientada.. Por lo que agradezco toda la ayuda que me puedan proporcionar al respecto...

Gracias...