Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > .NET
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-11-2009
REHome REHome is offline
Miembro
 
Registrado: jul 2003
Ubicación: España
Posts: 454
Poder: 21
REHome Va por buen camino
Enviar y recibir .txt y .jpg por puerto serie con C#

Hola:

Partiendo de este manual:
http://www.slideshare.net/Metaconta/...ype=powerpoint

En este ejemplo se puede enviar tramas de bytes por el puerto serie con Visual C# (Ahora estoy usando el Visual C# Espress 2010 beta 2).
Código:
byte[] El_Buffer = new byte[1];
El_Buffer[0] = 0x74; // ASCII letra "t".
serialPort1.Write(El_Buffer, 0, 0);


Hasta ahí entiendo. Ahora sólo me queda saber si hay alguna manera de enviar un archivo .txt o hasta un archivo de imagen .jpg a otro ordenador y que lo reciba.

Ejemplo:

1) PC1 envía un archivo de texto llamdo en este ejemplo "hola.txt" a PC2 por puerto serie.

2) Mientras PC2 le llega el archivo hola.txt , pregunta si lo desea recibir o simplemente lo alamcena directamente sin preguntar ya en una ubicación ya elegida. (Me da igual la opción).

3) Al menos que indique con un mensaje como que ha llegado algo en el PC2.

4) Puedes comentar alguna sugerencia...

Un cordial saludo.
__________________
http://electronica-pic.blogspot.com....n-arduino.html Manuales de electrónica general, PIC y Arduino.
Responder Con Cita
  #2  
Antiguo 15-11-2009
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 22
Crandel Va por buen camino
Para el envío de archivos puedes hacerlo a traves de la red sobre el protocolo TCP/IP, y mas específicamente con el protocolo FTP.

Ahora si lo que necesitas es realizarlo por el puerto serie. Lo que des hacer es leer el archivo como binario, sino recuerdo mal con las clases FileStream y BinaryReader . La idea es ir escribiendo en el puerto lo que vas leyendo del archivo mediante un ciclo.

Por el otro lado (PC2) abres el puerto y lo que escuchas vas escribiendo en un archivo utilizando la clase BinaryWriter.

Una ves que funcione te sugiero que lo expandas un poquito escribiendo un pequeño protocolo de comunicación entre ellos. Avisando el cominezo del archivo, el fin del archivo, haciendo un checksum, etc. Esto dara mas robustes al programa y evitara problemas en la transferencia.

.
__________________
[Crandel]
Responder Con Cita
  #3  
Antiguo 16-11-2009
REHome REHome is offline
Miembro
 
Registrado: jul 2003
Ubicación: España
Posts: 454
Poder: 21
REHome Va por buen camino
Gracias por los daros, voy a investigar.
__________________
http://electronica-pic.blogspot.com....n-arduino.html Manuales de electrónica general, PIC y Arduino.
Responder Con Cita
  #4  
Antiguo 16-11-2009
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 22
Crandel Va por buen camino
de nada, escribe de nuevo y te ayudamos donde te trabes
__________________
[Crandel]
Responder Con Cita
  #5  
Antiguo 05-12-2009
REHome REHome is offline
Miembro
 
Registrado: jul 2003
Ubicación: España
Posts: 454
Poder: 21
REHome Va por buen camino
Heeeeeeeeeeeello:

Hace un tiempo hice que puedo enviar una trama de bytes con un botón al puerto COM1 ya dentro en el Form1, una vez compilado no puedo seleccionar nngún byte que desee así que se me ocurrió hacer una cosa, poner un textBox por medio.

Al introducir un botón para poder enviar un byte, por ejemplo la letra t, en ASCII es 0x74 (hexadecimal). También quiero que se puede enviar más de un byte, por ejemplo, hola, pero mejor centrarse con uno para hacer pruebas. Su código fuente es:

Código:
byte[] mBuffer = new byte[1];
            mBuffer[0] = 0x74; //ASCII letra "t".
            serialPort1.Write(mBuffer, 0, mBuffer.Length);
Supuestamente si pongo como dije antes, la letra t, en realidad se debe enviar en 0x74 al puerto serie y el dispositivo debe leerto en 0x74, en este caso es un microcontrolador PIC 16F84A. (Ver vídeo ).

He intentado al menos enviar un byte desde un textBox así:

Código:
private void button_t_Click(object sender, EventArgs e)
        {
            byte[] mBuffer = new byte[1];
            mBuffer[0] = textBox_trama.Text.ToString(); // Error aquí.
            serialPort1.Write(mBuffer, 0, mBuffer.Length);
        }


Código:
private void button_t_Click(object sender, EventArgs e)
        {
            byte[] mBuffer = new byte[1];
            mBuffer[0] = textBox_trama.Text.ToCharArray(); // Error aquí.
            serialPort1.Write(mBuffer, 0, mBuffer.Length);
        }

Código:
private void button_t_Click(object sender, EventArgs e)
        {
            byte[] mBuffer = new byte[1];
            mBuffer[0] = textBox_trama.Text; // Error aquí.
            serialPort1.Write(mBuffer, 0, mBuffer.Length);
        }
Sospecho que es algo de conversión...

Descargar
código fuente
Contraseña: P.D.E.

Código:
 byte[] mBuffer = new byte[1];
            mBuffer[0] = byte.Parse(textBox_trama.Text); // Error aquí.
            serialPort1.Write(mBuffer, 0, mBuffer.Length);

Investigando un poco lo hice ejecutar sin ningún problema pero al enviar una letra me dice:

No se controló System.FormatException
Message="La cadena de entrada no tiene el formato correcto."


Da igual que en el textBox le ponga la letra t o en ASCII en 0x74, el resultado del error es el mismo.

De momento quiero hacerlo así para hacer pruebas.

Hasta otra.
__________________
http://electronica-pic.blogspot.com....n-arduino.html Manuales de electrónica general, PIC y Arduino.
Responder Con Cita
  #6  
Antiguo 06-12-2009
REHome REHome is offline
Miembro
 
Registrado: jul 2003
Ubicación: España
Posts: 454
Poder: 21
REHome Va por buen camino
Haciendo más prubeas y esta vez haciendo caso a lo que mes has dicho, sería así, pero no envía nada de nada. Algo no hago bien.

Código:
string strSource = null;
            byte[] bteEndode = null;
            FileStream myFileStream = new FileStream(@"C:\senpir.pdf", FileMode.OpenOrCreate, FileAccess.ReadWrite);
          
          
           strSource = "asdf";
           bteEndode = Encoding.ASCII.GetBytes(strSource);
          
          
           myFileStream.Write(bteEndode, 0, bteEndode.Length);
          
           myFileStream.Close();
__________________
http://electronica-pic.blogspot.com....n-arduino.html Manuales de electrónica general, PIC y Arduino.
Responder Con Cita
  #7  
Antiguo 06-12-2009
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 22
Crandel Va por buen camino
Hola REHome,

Tal como lo supones tenes un problema de conversión. Por un lado, la letra 'T' es el ASCII 0x84 (no 74).

Por otro lado cuando tienes una cadena en un componente como TextBox, este no guarda las cadenas como un vector de caracteres ASCII, sino como UNICODE. Ya de entrada ocupará 2 bytes cada letra, en ves de 1 byte del ASCII.

Ahora para el ejemplo de leer un archivo como bytes. Deberias escribir algo asi:
Código SQL [-]
using (FileStream inStream = File.OpenRead(_fileName))
{
  _data = new byte[inStream.Length];
  inStream.Read(_data, 0, inStream.Length);
  inStream.Close();
}

Ahora tienes en _data todos los bytes a enviar.
__________________
[Crandel]
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Recibir datos del puerto serie en bytes. REHome .NET 1 31-10-2008 17:50:10
Usb en puerto serie :p D-MO Humor 10 30-06-2006 06:16:45
Como recibir datos en un puerto serial JULIPO PHP 1 17-06-2006 20:54:36
Enviar comando Ctrl+Q a puerto serie Chus Varios 0 11-06-2004 12:42:42
Puerto serie esquerda21 Varios 2 12-05-2004 23:58:52


La franja horaria es GMT +2. Ahora son las 17:46:12.


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
Copyright 1996-2007 Club Delphi