Manual Puerto serie RS232 Con PIC16F84A controlado por Visual C#

Hola:

En primer lugar pido perdón si esto no va aquí.

Presento Manual Puerto serie RS232 Con PIC16F84A controlado por Visual C# en el que podrás aprender a controlar un PIC mediante una Interfaz en el PC bajo Visual C# .net.

Aún así, por falta de tiempo no he acabado la parte de MonoDevelop en Linux cosa que haré en el futuro ya en el 2009. Que sepan que también continuaré solo las primeras 200 páginas con Visual Basic .net (depende de la demanda lo haré también con Visual Basic 6) y Visual C++ otras 200.

Por ahora no he encontrado un lugar donde poder descargarlo directamente en PDF.

Ver Manual

Descargar 1ª parte
Descargar 2ª parte

Si estás registrado, hay una opción para bajarlo en PDF.

Ver vídeo:
YouTube - RS232 con PIC 16F84A y Visual C#

Espero cualquier opinión, duda, preguntas sobre errores que puedan encontrar y mejoras del manual.

Un cordial saludo.
 
Gracias por compartir este manual Meta, si quieres con gusto te puedo ayudar a pasarlo a Visual Basic 2008. Voy a checar tu manual.
 
Gracias, la verdad que si necesito ha alguien para poder pasarlo sin errores a Basic ya que no lo entiendo. Aunque tenía intención de ir a foros sobre Visual Basic.

Recuerda que Visual Basic 6 y Visual Basic .net ha cambiado mucho y no se programa igual.

A ver si puedo colgar el PDF directamente aquí.

Si lo pasamos a Visual Basic .net 2008, empezaré ha instalarlo. Visual C# y más aún Visual Basic lo quiere programar todo el mundo y eso que no me he metido con los puertos paralelos, que tengo intención de hacerlo.

Quizás esto nos ayude un poco. El cambiar de C# a Basic y al revés.
http://www.developerfusion.com/tools/convert/csharp-to-vb/
 
Saludos! Muy bueno el proyecto y el manual, te he leido en varios hilos hablar sobre hacer un manual para vb.net ¿sabes ya la forma de hacerlo? Es que lo he estado intentado, pero no consigo enviar y recibir datos tipo byte, solo encuentro ejemplos con cadenas de caracteres. He intentado adaptar codigos, y no consigo una recepcion limpia de datos.
 
kain589 dijo:
Saludos! Muy bueno el proyecto y el manual, te he leido en varios hilos hablar sobre hacer un manual para vb.net ¿sabes ya la forma de hacerlo? Es que lo he estado intentado, pero no consigo enviar y recibir datos tipo byte, solo encuentro ejemplos con cadenas de caracteres. He intentado adaptar codigos, y no consigo una recepcion limpia de datos.

Estoy trabajando con el manual para Visual C++ que he logrado enviar datos y Visual Basic .net 2008 que también he logrado enviar datos pero con una forma de programar que no me hace mucha gracia pero funciona.

Dentro del formulario principal si el proyecto es nuevo se llama Form1, colocas un button1 y el componente serialPort1.

Pincha dos veces el buttón1 o botón y te aparecerá esto.

Código:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    
    End Sub

Dentro de ella escribe este código:

Código:
        SerialPort1.Open()
        Dim mBuffer As Byte() = New Byte(0) {}
        mBuffer(0) = &H74 'ASCII letra "t". 
        SerialPort1.Write(mBuffer, 0, mBuffer.Length)
        SerialPort1.Close()

En general el códig completo es:
Código:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        SerialPort1.Open()
        Dim mBuffer As Byte() = New Byte(0) {}
        mBuffer(0) = &H74 'ASCII letra "t". 
        SerialPort1.Write(mBuffer, 0, mBuffer.Length)
        SerialPort1.Close()
    End Sub

Tengo el manual completo para el Visual C# que quizás te funcione algo o pueda dar ideas para lo que buscas.
http://www.abcdatos.com/tutoriales/tutorial/z9521.html

Saludos
 
Hola man mira, yo estoy haciendo un programa o bueno tengo q hacer un programa q se comunique por medio del serial a una estacion labVolt q es un controlador foxbro modelo 761, en si por lo q entiendo tengo q mandar bloques de numeros en binario o hexadecimal para dar instrucciones y luego leer lo que me regresa, estoy usando half duplex, y una tarjeta q utiliza un max232, pero soy una basura en programacion o al menos aun lo soy, no sabes donde pueda encontrar un manual de C# o Visual basic, y que me recomendarias aprender, q sea a primera instancia mas facil o q si lo aprendo me pueda ayudar con mi problema, espero me puedas responder pronto y muchas gracias de antemano.
 
Hola man, disculpa q te moleste por aqui, pero ya no se donde postear :p, mira yo estoy siguiendo tu manual de c# el q hiciste para el pic, de antemano muchisimas gracias por el manual, me ha servido mucho y me ha dado idea de como sacar datos con c#, lo que yo quiero hacer es mandar una cadena de bytes para un controlador foxboro (es una estacion de trabajo muy flexible), pero bueno lo importante es mandar las cadenas, luego recibirlas y decodificarlas por asi decir, la primera parte creo q ya la tengo hecha gracias a tu manual esto es lo que puse

private void button1_Click(object sender, EventArgs e)
{
{ int count = 7; //esto creo q esta de mas pero no estoy seguro
byte[] mBuffer = new byte[8];
mBuffer[0] = 0x10; // DLE
mBuffer[1] = 0x02; //STX
mBuffer[2] = 0x01; //cont addr
mBuffer[3] = 0x0B; //Poll command
mBuffer[4] = 0x10; //DLE
mBuffer[5] = 0x03; //ETX
mBuffer[6] = 0B; //crc alto
mBuffer[7] = 0xA9; //crc bajo
serialPort1.Write(mBuffer, 0, mBuffer.Length); }
}

claro despues de usar el if que pusiste para abrir el puerto, de nuevo gracias,

ahora lo q se supone mi programa debe de hacer es leer inmediatamente despues de mandar eso para recibir datos, el problema es q al igual q lo q mande me va a enviar una cadena de bytes, lo cual no se como estar muestreando y guardando cada byte, me estoy guiando mas o menos por tu manual para al menos recibirlo como string, y poder mostrar algo q me muestre en el textbox tal como lo haces tu con el pic, eso ya esta hecho gracias a ti basicamente, pero pues no lo he probado para ver q sale, ahora estaba buscando una pagina q una vez vi aqui q te ayudaba a pasar codigos de vb a c#, porq tengo algo q te hace lo que quiero, q de ahi tambien me estoy basando un poco, te lo posteo a continuacion

Private Sub Command1_Click()
Timer1.Enabled = True

End Sub

Private Sub Command2_Click()
End
End Sub

Private Sub Timer1_Timer()
Dim Count As Integer
Dim s As Integer
Dim t As Long
Dim x As Double
Dim y As Double
Dim a As Integer
Dim b As Long
Dim c As Double
Dim d As Double
Dim e As Integer
Dim f As Long
Dim g As Double
Dim h As Double
Dim largo1 As Integer
Dim bin3 As String
Dim bin4 As String
Dim cadena1 As String
Dim largo2 As Integer
Dim bin6 As String
Dim bin5 As String
Dim cadena2 As String
Dim largo As Integer
Dim bin As String
Dim bin2 As String
Dim cadena As String
Dim poll_cmd(0 To 7) As Byte
Dim poll_resp(0 To 23) As Byte
Const DLE = &H10, STX = &H2, ETX = &H3
Const addr = &H1, poll = &HB
poll_cmd(0) = DLE
poll_cmd(1) = STX
poll_cmd(2) = addr
poll_cmd(3) = poll
poll_cmd(4) = DLE
poll_cmd(5) = ETX
poll_cmd(6) = &HDB
poll_cmd(7) = &HA9
envio = poll_cmd()
MSComm1.Output = envio

/////////////////segun yo la parte que esta aqui arriba es lo q llevo hecho, ahora para loo siguiente es lo q tengo q hacer
MSComm1.InputLen = 24
If MSComm1.InBufferCount Then
recibe = MSComm1.Input
For Count = 0 To (LenB(recibe) - 1)
poll_resp(Count) = CByte(recibe(Count))
List1.AddItem poll_resp(Count)
Next Count
End If

////////////////// lo siguiente es pura decifracion segun yo..., hace una parte de un ciclo crc..., no se si estes familiarizado

' Para set point
'asignar la respuesta
x = (poll_resp(13))
y = (poll_resp(14))
'conversion a binario
largo = 7
For K = largo To 0 Step -1
If x And (2 ^ K) Then
bin = bin + "1"
Else
bin = bin + "0"
End If
If y And (2 ^ K) Then
bin2 = bin2 + "1"
Else
bin2 = bin2 + "0"
End If
Next
'concatenacion
cadena = (bin & bin2)
'binario a decimal
For s = 1 To 16
t = t + (Mid(cadena, Len(cadena) - s + 1, 1) * (2 ^ (s - 1)))
Next s
'resultado
Text1.Text = t / 20
Text2.Text = t

' Para control de variable
'conversion a binario
c = (poll_resp(15))
d = (poll_resp(16))

largo2 = 7
For M = largo2 To 0 Step -1
If c And (2 ^ M) Then
bin6 = bin6 + "1"
Else
bin6 = bin6 + "0"
End If
If d And (2 ^ M) Then
bin5 = bin5 + "1"
Else
bin5 = bin5 + "0"
End If
Next
'concatenacion
cadena2 = (bin6 & bin5)
'binario a decimal
For a = 1 To 16
b = b + (Mid(cadena2, Len(cadena2) - a + 1, 1) * (2 ^ (a - 1)))
Next a
'resultado
Text3.Text = b / 20
Text4.Text = b

'asignar la respuesta

' Para valor de salida
'conversion a binario
g = (poll_resp(17))
h = (poll_resp(18))
largo1 = 7
For R = largo1 To 0 Step -1
If g And (2 ^ R) Then
bin3 = bin3 + "1"
Else
bin3 = bin3 + "0"
End If
If h And (2 ^ R) Then
bin4 = bin4 + "1"
Else
bin4 = bin4 + "0"
End If
Next
'concatenacion
cadena1 = (bin3 & bin4)
'binario a decimal
For e = 1 To 16
f = f + (Mid(cadena1, Len(cadena1) - e + 1, 1) * (2 ^ (e - 1)))
Next e
'resultado
Text5.Text = f / 39.985
Text6.Text = f

End Sub


Private Sub Form_Load()
Dim K As Integer
Dim poll_cmd(0 To 7) As Byte
Const DLE = &H10, STX = &H2, ETX = &H3
Const addr = &H1, poll = &HB

poll_cmd(0) = DLE
poll_cmd(1) = STX
poll_cmd(2) = addr
poll_cmd(3) = poll
poll_cmd(4) = DLE
poll_cmd(5) = ETX
poll_cmd(6) = &HDB
poll_cmd(7) = &HA9

For K = 0 To 7
List2.AddItem Hex$(poll_cmd(K))
Next K

MSComm1.PortOpen = True

Timer1.Enabled = False


End Sub

Private Sub Form_unload(Cancel As Integer)

MSComm1.PortOpen = False
End Sub

bueno no se como seguir con esto, ahora mismo voy a buscar como postear esto tambien, disculpa q te agobie, y de nuevo gracias por tu manual, sin el estaria aun mas perdido xS.
 
aknightofgod dijo:
Hola man, disculpa q te moleste por aqui, pero ya no se donde postear :p, mira yo estoy siguiendo tu manual de c# el q hiciste para el pic, de antemano muchisimas gracias por el manual, me ha servido mucho y me ha dado idea de como sacar datos con c#, lo que yo quiero hacer es mandar una cadena de bytes para un controlador foxboro (es una estacion de trabajo muy flexible), pero bueno lo importante es mandar las cadenas, luego recibirlas y decodificarlas por asi decir, la primera parte creo q ya la tengo hecha gracias a tu manual esto es lo que puse

[...]

claro despues de usar el if que pusiste para abrir el puerto, de nuevo gracias,

ahora lo q se supone mi programa debe de hacer es leer inmediatamente despues de mandar eso para recibir datos, el problema es q al igual q lo q mande me va a enviar una cadena de bytes, lo cual no se como estar muestreando y guardando cada byte, me estoy guiando mas o menos por tu manual para al menos recibirlo como string, y poder mostrar algo q me muestre en el textbox tal como lo haces tu con el pic, eso ya esta hecho gracias a ti basicamente, pero pues no lo he probado para ver q sale, ahora estaba buscando una pagina q una vez vi aqui q te ayudaba a pasar codigos de vb a c#, porq tengo algo q te hace lo que quiero, q de ahi tambien me estoy basando un poco, te lo posteo a continuacion

[...]

bueno no se como seguir con esto, ahora mismo voy a buscar como postear esto tambien, disculpa q te agobie, y de nuevo gracias por tu manual, sin el estaria aun mas perdido xS.

Hola aknightofgod;

Quizás este manual es Visual Basic .net te resuelva lo que buscas. No me molestas, ahora que estoy con proyectos y nuevos manuales se me va el tiempo.
http://www.abcdatos.com/tutoriales/tutorial/v12.html

Hola Henry Diaz:

Te lo puedes descargar aquí en PDF.
http://www.abcdatos.com/tutoriales/tutorial/z9521.html

Si has podido descargarlo, avisa por aquí para confirmarlo a todo nuevos visitantes.

Saludo.
 
No . Imposible bajarlo se queda en un bucle tanto en la pagina de abcdatos como en el enlace del autor a donde lo remiten si no inicia la descarga. Te agradecemos si lo puedes poner en otro lado. QAP.
 
Eureka! He logrado verlo. Bien... como tengo un programador de PICs de mi propio diseño (ya probado), este fin de semana estaré en mi salsa experimentando.
Te leí mencionando que proximamente le darás palo al puerto Pararalo y USB y me interesa mucho por cuanto tengo una máquina CNC y un software (realizado con V.Basic 6.0), ambos de mi autoría que trabajan de maravilla pero por el puerto paralelo, y como ya entró en extinción habrá que migrar todo el proyecto a puerto USB... trabajo que tengo! Saludo y gracias por el manual.
 
Muy seguramente; me comerá unas noches de sueño como lo hizo en su época el VBasic de la mano de "ElGuille" y de tutores de la Universidad. Ahora será con amigos en estos foros...
 
Atrás
Arriba