Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   .NET (https://www.clubdelphi.com/foros/forumdisplay.php?f=17)
-   -   Enviar datos al puerto db9 (https://www.clubdelphi.com/foros/showthread.php?t=59698)

REHome 04-09-2008 22:07:22

Enviar datos al puerto db9
 
Hola:

Estoy intentado enviar datos por el puerto serie con el Visual C# 2008 Express con la configuración puerto COM1.
6400-N-8-1.

Quiero lograr que en cada botón, envíe un carácter al puerto serie db9 o RS232, por ejemplo:

Abrir:
Puerta A: Que envíe este caracter apa
Puerta B: apb
.
.
Puerta E: ape

Lo mismo para cerrar puerta.
Cerrar:
Puerta A: cpa
Puerta B: cpb
.
.
Puerta E:cpe

Espero que se entienda. Al menos quiero probar con el priemr botón Puerta A para aprender como se hace.



Un cordial saludos.

egostar 04-09-2008 22:26:00

Hola REHome

Y cual es la pregunta concreta?

Salud OS

FGarcia 04-09-2008 22:28:55

Hola!

Primero ¿que componente estas usando para hacer tu conexion de VC# al puerto serie o como estas accediendo a ese puerto?

No existe una velocidad de 6400 baudios en forma estandar.

El componente o como estes accesando al puerto te debe de permitir "escribir" en el una cadena ASCII, algo asi como:

EscribirCadena('micadena'); o
EscribirChar('M');

Solo son ideas, platicanos mas.

REHome 04-09-2008 22:42:12

Hola:

Lo saco como objeto en el cuadro de herramientas.

Sobre la pregunta concreta quiero lograr cómo se hace o cuál es el código al menos de un botón Puerta A para lograr enviar carácteres que se llama apa y que sea enviado por el RS232.

Ver foto.
http://tombraidereditor.iespana.es/cs/escritorio_cs.jpg

egostar 04-09-2008 22:46:00

Pues la tienes fácil, al ser un objeto, tiene eventos y funciones, otra pregunta, a que le llamas puertas

Salud OS

REHome 04-09-2008 22:49:34

Hola de nuevo.

Llamo Puerta A a un botón en concreto como muestra en la imagen. En ese botón quiero enviar una carácter llamado apa (abrrir puerta a) al puerto serie db9.



Después de conseguir eso, el microcontrolador debe entender que apa significa activar un pin del pic para encender un Led pero, esto ya es otra historia.

Saludos.

egostar 04-09-2008 22:53:07

Cita:

Empezado por REHome (Mensaje 311911)
Hola de nuevo.

Llamo Puerta A a un botón en concreto como muestra en la imagen. En ese botón quiero enviar una carácter llamado apa (abrrir puerta a) al puerto serie db9.

Después de conseguir eso, el microcontrolador debe entender que apa significa activar un pin del pic para encender un Led pero, esto ya es otra historia.

Saludos.

Pues como te digo, la tienes facil, debes usar las funciones que tenga para escribir al puerto tal como te lo indica FGarcia.

Por ejemplo algo como esto
  • SerialPort1.PutChar()
  • SerialPort1.PutString()
  • SerialPort1.WriteChar()
  • SerialPort1.WriteString()

es obvio que desconozco las funciones pero pues tu las tienes ahi, escribe SerialPort1. y te mostrara todos sus eventos y funciones.

Salud OS

REHome 04-09-2008 23:05:47

Voy a investigar ya he encontrado algo por aquí.

http://msdn.microsoft.com/es-es/libr...t_members.aspx

egostar 04-09-2008 23:12:24

Asi es, esta muy simple, las funciones que debes usar para enviar datos son

Cita:

Empezado por msdn.microsoft.com
Write(String) Writes the specified string to the serial port.
Write(Byte[], Int32, Int32) Writes a specified number of bytes to the serial port using data from a buffer.
Write(Char[], Int32, Int32) Writes a specified number of characters to the serial port using data from a buffer.

Sacado de la misma pagina

Salud OS

REHome 04-09-2008 23:38:34

Ya veo.

también los hay en español.

http://msdn.microsoft.com/es-es/libr...ort.write.aspx

EDIT:
He encontrado esto, no se si servirá pero estoy probado.
http://www.codeproject.com/KB/cs/vik...tualports.aspx

Edit2:
A ver si ustedes lo prueden probar de alguna manera yo que no puedo porque sólo tengo el com1.

Código:

private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                serialPort1.Write("apa");
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }

            label1.Text = "A";
        }

Edit3:
Hola otra vez más.

Pensando bien quiero enviar en ASCII la letra t que en hexadecimal es 0x74 o si prefieren la T su hexadecimal es 0x54.
t = 0x74
T = 0x54
¿Cómo envío este carácter en hexadecimal?

private void button1_Click(object sender, EventArgs e)
{
try
{
serialPort1.Write("0x74"); // No creo que así funcione, quizás sea sin las comillas.
}
catch (System.Exception ex)
{
MessageBox.Show(ex.ToString());
}

label1.Text = "A";
}


La franja horaria es GMT +2. Ahora son las 18:18:26.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi