none
como enviar una eeprom con file open dialog+file stream+binary reader RRS feed

  • Pregunta

  • hola estoy intentado enviar una eeprom por medio de mi puerto

    si guardo todos los hex en la aplicacion y los envio por el puerto no tengo ningun problema

    pero ahorra nececito un usar un botton para que busque en mi pc cualqier archibo .hex o .bin

    y lo envie por mi puerto

    lo que estaba haciendo era abrir un filedialogo con filtro .bin y con filtro .hex

    pero creo que para poder enviar los hex nececito usar el metodo file stream y binary reader ,pero no encuentro un ejemplo alguien sabe como enviarlos

    miércoles, 20 de abril de 2011 0:06

Respuestas

  • Hola:

    ¿Qué tipo de EEPROM usas?

    ¿Es para microcontroladores, PIC, AVR, etc?

    ¿Qué formato es el archivo .hex, ASCII?

    Si, hay que usar el componente que dices.

    http://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=ES-ES&k=k%28SYSTEM.WINDOWS.FORMS.FOLDERBROWSERDIALOG%29;k%28DESIGNER_SYSTEM.WINDOWS.FORMS.DESIGN.FORMDOCUMENTDESIGNER%29;k%28NONVISUALSELECTION%29;k%28TargetFrameworkMoniker-%22.NETFRAMEWORK%2cVERSION%3dV4.0%22%29&rd=true

     

    // The following example displays an application that provides the ability to 
    // open rich text files (rtf) into the RichTextBox. The example demonstrates 
    // using the FolderBrowserDialog to set the default directory for opening files.
    // The OpenFileDialog class is used to open the file.
    using System;
    using System.Drawing;
    using System.Windows.Forms;
    using System.IO;
    
    public class FolderBrowserDialogExampleForm : System.Windows.Forms.Form
    {
      private FolderBrowserDialog folderBrowserDialog1;
      private OpenFileDialog openFileDialog1;
    
      private RichTextBox richTextBox1;
    
      private MainMenu mainMenu1;
      private MenuItem fileMenuItem, openMenuItem;
      private MenuItem folderMenuItem, closeMenuItem;
    
      private string openFileName, folderName;
    
      private bool fileOpened = false;
    
      // The main entry point for the application.
      [STAThreadAttribute]
      static void Main() 
      {
        Application.Run(new FolderBrowserDialogExampleForm());
      }
    
    
      // Constructor.
      public FolderBrowserDialogExampleForm()
      {
        this.mainMenu1 = new System.Windows.Forms.MainMenu();
        this.fileMenuItem = new System.Windows.Forms.MenuItem();
        this.openMenuItem = new System.Windows.Forms.MenuItem();
        this.folderMenuItem = new System.Windows.Forms.MenuItem();
        this.closeMenuItem = new System.Windows.Forms.MenuItem();
    
        this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
        this.folderBrowserDialog1 = new System.Windows.Forms.FolderBrowserDialog();
        this.richTextBox1 = new System.Windows.Forms.RichTextBox();
    
        this.mainMenu1.MenuItems.Add(this.fileMenuItem);
        this.fileMenuItem.MenuItems.AddRange(
                  new System.Windows.Forms.MenuItem[] {this.openMenuItem,
                                     this.closeMenuItem,
                                     this.folderMenuItem});
        this.fileMenuItem.Text = "File";
    
        this.openMenuItem.Text = "Open...";
        this.openMenuItem.Click += new System.EventHandler(this.openMenuItem_Click);
    
        this.folderMenuItem.Text = "Select Directory...";
        this.folderMenuItem.Click += new System.EventHandler(this.folderMenuItem_Click);
    
        this.closeMenuItem.Text = "Close";
        this.closeMenuItem.Click += new System.EventHandler(this.closeMenuItem_Click);
        this.closeMenuItem.Enabled = false;
    
        this.openFileDialog1.DefaultExt = "rtf";
        this.openFileDialog1.Filter = "rtf files (*.rtf)|*.rtf";
    
        // Set the help text description for the FolderBrowserDialog.
        this.folderBrowserDialog1.Description = 
          "Select the directory that you want to use as the default.";
    
        // Do not allow the user to create new files via the FolderBrowserDialog.
        this.folderBrowserDialog1.ShowNewFolderButton = false;
    
        // Default to the My Documents folder.
        this.folderBrowserDialog1.RootFolder = Environment.SpecialFolder.Personal;
    
        this.richTextBox1.AcceptsTab = true;
        this.richTextBox1.Location = new System.Drawing.Point(8, 8);
        this.richTextBox1.Size = new System.Drawing.Size(280, 344);
        this.richTextBox1.Anchor = AnchorStyles.Top | AnchorStyles.Left | 
                      AnchorStyles.Bottom | AnchorStyles.Right;
    
        this.ClientSize = new System.Drawing.Size(296, 360);
        this.Controls.Add(this.richTextBox1);
        this.Menu = this.mainMenu1;
        this.Text = "RTF Document Browser";
      }
    
      // Bring up a dialog to open a file.
      private void openMenuItem_Click(object sender, System.EventArgs e)
      {
        // If a file is not opened, then set the initial directory to the
        // FolderBrowserDialog.SelectedPath value.
        if (!fileOpened) {
          openFileDialog1.InitialDirectory = folderBrowserDialog1.SelectedPath;
          openFileDialog1.FileName = null;
        }
    
        // Display the openFile dialog.
        DialogResult result = openFileDialog1.ShowDialog();
    
        // OK button was pressed.
        if(result == DialogResult.OK) 
        {
          openFileName = openFileDialog1.FileName;
          try
          {
            // Output the requested file in richTextBox1.
            Stream s = openFileDialog1.OpenFile();
            richTextBox1.LoadFile(s, RichTextBoxStreamType.RichText);
            s.Close();  
    
            fileOpened = true;
    
          } 
          catch(Exception exp)
          {
            MessageBox.Show("An error occurred while attempting to load the file. The error is:" 
                    + System.Environment.NewLine + exp.ToString() + System.Environment.NewLine);
            fileOpened = false;
          }
          Invalidate();
    
          closeMenuItem.Enabled = fileOpened;
        }
    
        // Cancel button was pressed.
        else if(result == DialogResult.Cancel) 
        {
          return;
        }
      }
    
    
      // Close the current file.
      private void closeMenuItem_Click(object sender, System.EventArgs e)
      {
        richTextBox1.Text = "";
        fileOpened = false;
    
        closeMenuItem.Enabled = false;
      }
    
    
      // Bring up a dialog to chose a folder path in which to open or save a file.
      private void folderMenuItem_Click(object sender, System.EventArgs e)
      {
        // Show the FolderBrowserDialog.
        DialogResult result = folderBrowserDialog1.ShowDialog();
        if( result == DialogResult.OK )
        {
          folderName = folderBrowserDialog1.SelectedPath;
          if(!fileOpened)
          {
            // No file is opened, bring up openFileDialog in selected path.
            openFileDialog1.InitialDirectory = folderName;
            openFileDialog1.FileName = null;
            openMenuItem.PerformClick();
          } 
        }
      }
    }
    
    
    
    

    Saludo.


    http://electronica-pic.blogspot.com
    • Marcado como respuesta smithjhon lunes, 25 de abril de 2011 5:35
    jueves, 21 de abril de 2011 11:22
  • Sí, hay que leer el hex y almacenarlo en un buffer, luego enviarlo.

    Puede que te de ideas este manual.

    Saludo.


    http://electronica-pic.blogspot.com
    • Marcado como respuesta smithjhon lunes, 25 de abril de 2011 5:34
    viernes, 22 de abril de 2011 19:04
  • No se si leer binario es lo mismo que el hex, al menos para ASCII no lo es.

     

         if (openFileDialog1.ShowDialog() == DialogResult.OK)
          {
            textBox_ruta_buscar_archivo.Text = openFileDialog1.FileName.ToString();
          }
    


    http://electronica-pic.blogspot.com
    • Marcado como respuesta smithjhon lunes, 25 de abril de 2011 5:35
    viernes, 22 de abril de 2011 21:52
  •     FileStream fs = new FileStream(@"Archivo.bin", FileMode.Open, FileAccess.ReadWrite);
        BinaryReader br = new BinaryReader(fs);
        BinaryWriter bw = new BinaryWriter(fs);
    
    
         fs.Position = 0;
     
        
        //
        br.Close();
        bw.Close();
    

    http://electronica-pic.blogspot.com
    • Marcado como respuesta smithjhon lunes, 25 de abril de 2011 5:35
    viernes, 22 de abril de 2011 22:03
  • Enviar una trama de bytes es así:

     

    private void button_t_Click(object sender, EventArgs e)
    {
     byte[] mBuffer = new byte[5];
     mBuffer[0] = 0x74;
     mBuffer[1] = 0x75;
     mBuffer[2] = 0x89;
     mBuffer[3] = 0x20;
     mBuffer[4] = 0x6C;
     serialPort1.Write(mBuffer, 0, mBuffer.Length);
    }
    

     

    Enviar bytes en forma de cadena es así:

     

    private void button_b_Click(object sender, EventArgs e)
    {
     byte[] mBuffer = Encoding.ASCII.GetBytes("Hello World");
     serialPort1.Write(mBuffer, 0, mBuffer.Length);
    }
    

     

    Donde pone Hello World, no se si valdrá poner @"C:\archivo.hex".

    ¿Quieres con un botón abrir un cuadro para buscar en cualquier parte del PC para abrir un archivo.hex?

    Lo dije un post justo atrás, tal vez no lo hayas entendido. Haré un mini tutorial sencillo.

     

    En la propiedad "Filter" del "OpenFileDialog1" he puesto este filtro.

    Archivo hexadecimal|*.hex|Archivo binario|*.bin|Todos los archivos|*.*

    Deja el nombre ebn blanco del FileNombre o cámbielo.

    Código fuente de este pequeño ejemplo es:

     

    Public Class Form1
    
     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
     TextBox1.Text = OpenFileDialog1.FileName.ToString()
     End If
     End Sub
    End Class
    

    Ya tienes el archivo cargado hasta el nombre de la ubiación en el textBox y puedes visualizarlo.

     

    No has nombrado que tipo de puerto te refieres, me imagino que el RS232 o puerto COM o puerto serie.

    Introduces el componente "SerialPort1" y un Button2 como nombre interno, como nombre externo lo he llamado "Grabar". Abajo dejo el código completo. Lo he probado con simuladores del puerto serie y puedo enviar bytes y cuentas las cantidades enviadas.

     

    Imports System.IO.Ports ' No olvidar.
    
    Public Class Form1
    
     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
      If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
       TextBox1.Text = OpenFileDialog1.FileName.ToString()
      End If
     End Sub
    
     Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
      SerialPort1.Open() 'Abrir el puerto.
      SerialPort1.Write(TextBox1.Text) 'Grabar o enviar archivo .hex o .bin a la EEPROM.
      SerialPort1.Close() ' Cerrar el puerto.
     End Sub
    End Class
    
    

     

    Una pregunta.

    ¿Es lo que buscas?

    Un cordial saludo.

     

    PD: He estado buscando información por curiosidad y me han respondido esto aquí.
    http://www.winpic800.com//index.php?option=com_joomlaboard&Itemid=41&func=view&id=1151&catid=7

     


    http://electronica-pic.blogspot.com



    • Editado Metaconta domingo, 24 de abril de 2011 1:50
    • Marcado como respuesta smithjhon lunes, 25 de abril de 2011 5:35
    domingo, 24 de abril de 2011 1:09
  • ahorra tengo 3 preguntas 1 en este ejemplo

    1-la informacion que esta dentro de el archivo tambien esta cargada , por ejemplo en eL .hex hay 200 bytes verdad esos bytes estan cagados o solo es la ubicacion

     

    Buena pregunta, me da que lo que envía es el nombre de la ubiación. Te iba a decir que pongas un ProgreesBar1 para que quede más bonito y me pasa esto. Error mío.

     

    acabo de comprobar que sólo se envía los bytes que es la ubicación, el nombre claro. Dentro del archivo no envía nada de nada. Voy a investigar que tengo ejemplos hechos por ahí.

     

    2-como subes eas fotos a este foro? asi yo tomo fotos y me esplico mejor

    Las fotos puedes subirla en esta Web gratuita. www.subeimagenes.com
    Para cargarlas en el foro y que se muestre, pulsa HTML que está al lado de introducir códigos y escribes esto:
    <img src=" "/>

    Dentro de las dobles comillas escribe la dirección de la foto que has subido en la Web de antes. Por ejemplo:
    <img src="http://www.subeimagenes.com/img/hola-36293.png"/>

    3-ya solucione lo de abrir cualquier archivo y cargarlo en un textbox lo que esta dentro de el archibo

    ahorra nececito es envar el archivo que selecione pero recuerda en byte

    cuando envio el archivo  si este adentro ESTOS BYTES 03 0A 35 pues el puerto lo envia asi

    30 33 30 41 33 35 y yo nececito que el puerto lo envIe asi 03 0A 35

    ¿En byte o binario? Tendré que investigar y probar para saberlo.


    No se si el famoso FileStrean tiene algo que ver como has nombrado antes, solo es para ler y escribir archivos dentro de él. Lo qu eno se si el FileStream tiene algo que ver con esto, es enviar.

    http://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=ES-ES&k=k%28SYSTEM.IO.FILESTREAM%29;k%28TargetFrameworkMoniker-%22.NETFRAMEWORK%2cVERSION%3dV4.0%22%29;k%28DevLang-CSHARP%29&rd=true

    Saludo.

     

     

     

     

    Edito:

    He estado investigando y si tiene que ver. También otra clase.

    FileStream
    http://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=ES-ES&k=k%28SYSTEM.IO.FILESTREAM%29;k%28TargetFrameworkMoniker-%22.NETFRAMEWORK%2cVERSION%3dV4.0%22%29;k%28DevLang-CSHARP%29&rd=true

    StreamReader
    http://msdn.microsoft.com/es-es/library/system.io.streamreader%28v=VS.100%29.aspx

     

     

     

    Edito 2:

    BinaryReader
    http://msdn.microsoft.com/es-es/library/system.io.binaryreader.aspx

    Muchos archhivos son en binario, incluido los .exe, .jpg, etc, así que para el .hex también funciona.

    Una explicación que me dieron:


    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:

    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.

    Seguiré investigando...


    http://electronica-pic.blogspot.com





    • Marcado como respuesta smithjhon lunes, 25 de abril de 2011 5:36
    domingo, 24 de abril de 2011 2:15
  • Hola:

    Recuerdo que se puede cargar el archivo sea en .hex o en .bin en un richtTextBox usando el encodding que desees. Uso el Visual Express 2010 y no me carga la ventana para ver el archivo como el tuyo en hexadecimal.

    Aquí explica algo. Primero localizar, luego cargar los datos como dices.
    http://msdn.microsoft.com/es-es/library/aa983674%28v=vs.71%29.aspx

    Más datos para saber un poco más por si acaso.
    http://msdn.microsoft.com/es-es/library/system.windows.forms.richtextbox%28v=VS.100%29.aspx

    He hestado buscado y parece que te han contestado antes que yo.
    http://social.msdn.microsoft.com/Forums/es-ES/vcses/thread/f27d7766-6faa-4def-9a1a-6123fc71a52b#853b3272-15a2-4d36-a9b2-0a6c5c1ade43

    Imports System.Text
    Imports System.IO
    
    Public Class frmMain
    
      Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LoadFile.Click
        Dim ArrayHold() As Byte
        Dim Index As Integer = 0
        Dim Str As New StringBuilder
        Dim tStr As String = ""
        Dim tempStr As String = ""
        Dim IndexEnd As Integer = 0
        Dim InputString As String = ""
    
        OpenDia.Filter = "All Files|*.*"
        If OpenDia.ShowDialog = Windows.Forms.DialogResult.OK Then
          ' ArrayHold = My.Computer.FileSystem.ReadAllBytes(OpenDia.FileName)
          '==============================================================
          Dim myStreamReader As StreamReader = Nothing
    
          ' Ensure that the creation of the new StreamReader is wrapped in a 
          '  Try-Catch block, since an invalid filename could have been used.
          ' Create a StreamReader using a Shared (static) File class.
          myStreamReader = File.OpenText(OpenDia.FileName)
          ' Read the entire file in one pass, and add the contents to 
          '  txtFileText text box.
          InputString = myStreamReader.ReadToEnd()
          'Convert string to byte and copy to byte array
          ArrayHold = Encoding.Default.GetBytes(InputString)
    
          '=================================================================
          'ArrayHold = FileSystem.ReadAllBytes(OpenDia.FileName)
          Do
            IndexEnd = Index + 9
            For x As Integer = Index To IndexEnd
              If x > UBound(ArrayHold) Then
                Str.Append("  ")
                tempStr = tempStr & " "
              Else
                tStr = UCase(Convert.ToString(ArrayHold(x), 16))
                If tStr.Length < 2 Then tStr = "0" & tStr
                Str.Append(tStr & " ")
                If ArrayHold(x) < 32 Then
                  tempStr = tempStr & ". "
                Else
                  tempStr = tempStr & Chr(ArrayHold(x)) & " "
                End If
              End If
            Next
            Str.Append("  |  " & tempStr & vbCrLf)
            tempStr = ""
            Index = Index + 10
          Loop While IndexEnd < UBound(ArrayHold)
          DispalyHex.Text = Str.ToString
        End If
      End Sub
    
    
    End Class
    

    Saludo.


    http://electronica-pic.blogspot.com
    • Marcado como respuesta smithjhon lunes, 25 de abril de 2011 5:36
    domingo, 24 de abril de 2011 19:57
  • Si es esta foto:

    Lo que veo son hexadecimales a toda costa. ¿Qué programas son esos que muestras?

    ¿Ya sabes como enviar un archivo .bin o .hex? Primero nos centramos en esto, luego en visualizarlo en pantalla los bytes que cuentas.


    http://electronica-pic.blogspot.com
    • Marcado como respuesta smithjhon lunes, 25 de abril de 2011 5:36
    domingo, 24 de abril de 2011 21:26
  • El programa parece muy impresionante, quiero ver una captura con tu permiso.

     

    En cuanto al problema. Puedes usar algo como esto.

    Que lea los datos del archivo, lo almacene y lo envíe como quieres.

    Dim mBuffer As Byte() = New Byte(0) {}
    mBuffer(0) = &H41 ' Es la letra "A".
    serialPort1.Write(mBuffer, 0, mBuffer.Length)


    Así que debe leer el buffer del interior del archivo, luego coges el textBox y lo envías. Es algo relacionado como puse arriba por error.

    Imports System.IO.Ports ' No olvidar.

    Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
    TextBox1.Text = OpenFileDialog1.FileName.ToString()
    End If
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    SerialPort1.Open() 'Abrir el puerto.
    SerialPort1.Write(TextBox1.Text) 'Grabar o enviar archivo .hex o .bin a la EEPROM.
    SerialPort1.Close() ' Cerrar el puerto.
    End Sub
    End Class
    • Marcado como respuesta smithjhon lunes, 25 de abril de 2011 5:36
    domingo, 24 de abril de 2011 22:17
  • con el seralport1.write(textbox1.text) tiene la salida de la foto 1 osea todo sale en hexadecimal

    ¿Y lo quieres en binario?

    Me imagino que se podrá haciendo conversiones.

    Es la pregunta que quieres. Si es así me lo confirmas y investigo.


    Por curiosidad usas el Willem
    http://www.sivava.com/img-product/ICD/MPLAP-ICD2-Black-H120.jpg
    • Marcado como respuesta smithjhon lunes, 25 de abril de 2011 5:37
    domingo, 24 de abril de 2011 22:43
  • Si esta es la foto 2 que dices.

     

    Por lo que te entiendo:

    Tienes esta secuencia:
    7E 0F 00 80 00 00 03 F9 05 00 00 00 03 00 00 00 28 00 80 00 28 00 80 00 80 3C

    Quitamos esta parte de la secuencia:
    7E 0F 00 80 00 00 03 F9

    Quedaría así la secuancia:
    05 00 00 00 03 00 00 00 28 00 80 00 28 00 80 00 80 3C ¿La secuencia en realidad es más grande que tu ejemplo?

    Entonces en el textBox se almacena esta secuencia:
    05 00 00 00 03 00 00 00 28 00 80 00 28 00 80 00 80 3C

    Más abajo comentas esto:
    si te figas en la foto2 todo lo que sale es en bytes:7E 0F 00 80 00 00 03 F9 05 00 00 00 03 00 00 00 28 00 80 00 28 00 80 00 80 3C verdad y esto es igual a lo que esta en mi texbox1  solo que a mi textbox le falta la secuencia:7E 0F 00 80 00 00 03 F9 porque esta parte es una dirreccion en donde la eeprom empieza a grabarce

    Es decir, que quieres enviar sólo 05 00 00 00 03 00 00 00 28 00 80 00 28 00 80 00 80 3C o quieres enviar todo completo??????????' 7E 0F 00 80 00 00 03 F9 05 00 00 00 03 00 00 00 28 00 80 00 28 00 80 00 80 3C. Por aquí me estoy liando.

    Creo que se puede almacenar esos datos en memoria (cosa que voy investigar).

    Si tienes el archivo binario .bin, puedes quitar la secuencia 7E 0F 00 80 00 00 03 F9. ¿O no lo quieres así? Prefieres cargarlo en un textBox y hacer ahí las cosas sin modificar el archivo .bin.


    http://electronica-pic.blogspot.com
    • Marcado como respuesta smithjhon lunes, 25 de abril de 2011 5:37
    lunes, 25 de abril de 2011 0:07
  • si exacto quiero que salga como se ve en la foto2 osea en byte,


    este esl el codigo para buscar y abrir el archibo en el textbox

     

    Private Sub GetFile(ByVal path As String)

     

    Dim fs = New System.IO.FileStream(path, System.IO.FileMode.Open)

     

    Dim buffer As New StringBuilder

     

    Dim lenght1 As Long = fs.Length

     

    Dim position As Long
     

     

    Dim strj As String = ""
     

     

    While position < lenght1

    buffer =

    New StringBuilder

    buffer.Append(fs.ReadByte)

     

    position = position + 1

     

    If Len(Hex(buffer.ToString)) <= 1 Then

    strj = strj & (

    "0" + Hex(buffer.ToString))

     

    Else

    strj = strj & (Hex(buffer.ToString))

     

    End If

    buffer =

    Nothing

     

    End While

    TextBox1.Text = strj

    RS232.Write(strj)

     

    RS232.Close()

     

    End Sub

     

    Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click

    RS232 =

    My.Computer.Ports.OpenSerialPort(ComboBox1.Text)

    RS232.BaudRate = 115200

    RS232.Parity = IO.Ports.Parity.None

    RS232.DataBits = 8

    RS232.StopBits = IO.Ports.StopBits.One

    RS232.ReadTimeout = 160000

    RS232.WriteTimeout = 160000

    RS232.DtrEnable =

    True

    RS232.RtsEnable =

    True

     

    If RS232.IsOpen Then

    ListBox1.Items.Add(

    "Search firmware....")

     

    End If

     

     

    Dim abrirarchivo As New OpenFileDialog

    abrirarchivo.InitialDirectory =

    "C:\"

    abrirarchivo.FileName =

    "eeprom"

    abrirarchivo.Filter =

    "(*.bin)|*.bin|(*.hex)|*.hex"

     

    If abrirarchivo.ShowDialog() = DialogResult.OK Then

    GetFile(abrirarchivo.FileName)

     

    End If

     

     

    End Sub


    Una cosa que me olvidé de decirte.

    Pon arriba del todo esta instrucción:

    Imports System.IO.Ports

    Donde tienes puesto en la segunda línea de código:
    Dim fs = New System.IO.FileStream(path, System.IO.FileMode.Open)

    Ya puedes dejarlo más resumido y código más legible como muestra abajo.

    Dim fs = New FileStream(path, FileMode.Open)

    Suerte.


    http://electronica-pic.blogspot.com
    • Marcado como respuesta smithjhon lunes, 25 de abril de 2011 5:37
    lunes, 25 de abril de 2011 0:15
  • Haciendo pruebas, puedo modifiar el archivo y he sustituido los primeros bytes de un archivo.bin por la secuncia que dices. 7E 0F 00 80 00 00 03 F9. me funcionó, se que esto no es lo que buscas.

     

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    using System.IO; // No olvidar.
    using System.IO.MemoryMappedFiles;
    
    
    namespace Archivo_en_memoria
    {
     public partial class Form1 : Form
     {
      public Form1()
      {
       InitializeComponent();
      }
    
      // Para mantener un archivo en memoria.
      private Image Imagen;
    
      private void button1_Click(object sender, EventArgs e)
      {
       FileStream fs = new FileStream(@"Archivo.bin", FileMode.Open, FileAccess.ReadWrite);
       BinaryReader br = new BinaryReader(fs);
       BinaryWriter bw = new BinaryWriter(fs);
    
       fs.Position = 0; // Primera posición del archivo.
       bw.Write((byte)0x7E);
       bw.Write((byte)0x0F);
       bw.Write((byte)0x00);
       bw.Write((byte)0x80);
       bw.Write((byte)0x00);
       bw.Write((byte)0x00);
       bw.Write((byte)0x03);
       bw.Write((byte)0xF9);
       br.Close();
       bw.Close();
      }
     }
    }
    
    

     

    Lo que quieres hacer es:

    Envía por el puerto serie una trama de bytes como esta secuencia:
    7E 0F 00 80 00 00 03 F9

    Luego envías unos 20 MB de un archivo binario llamado Archivo.bin por ponerle un nombre, hacia al puerto serie justo después de la secuencia descrita arriba.

    Después del Archivo.bin quieres enviar más secuencias.

    ¿Esto funciona como un archivo único concatenado?

    7E 0F 00 80 00 00 03 F9 + Archivo.bin + 05 00 00 00 03 00 00 00 28 00 80 00 28 00 80 00 80 3C + otras secuencias...

    ¿Guardar la secuancia más archivos .bin en memoria todo concatenado?

    ¿Como si fuera un único archivo, para luego enviarlo al puerto serie?

    Es lo que te refieres.

    Fíajte las líneas del dibujo de abajo.

     

    Me imagino que lo quieres enviar como si fuera un único archivo a la EEPROM. Por cierto, menuda EEPROM tienes de 20 MB.


    http://electronica-pic.blogspot.com
    • Marcado como respuesta smithjhon lunes, 25 de abril de 2011 5:37
    lunes, 25 de abril de 2011 1:12
  • Si quieres un proceso más rápido...

    1. Localiza el archivo.bin.
    2. Lee todo su contenido en byte de principio a fin.
    3. Lo almacenas en memoria.
    4. Lo visualizas en un textBox en byte.
    5. Lo envías por puerto serie.

    ¿Quieres algo de esto?

    Abre un archivo binario, lee su contenido, lo introduce en una matriz de bytes y, a continuación, cierra el archivo.

    http://msdn.microsoft.com/es-es/library/system.io.file.readallbytes%28v=VS.100%29.aspx

    Con esto, dejas el archivo en una variable.

    byte[] file = File.ReadAllByte("path archivo");
    
    En VB .net es:
    Dim file__1 As Byte() = File.ReadAllByte("path archivo")
    


    http://electronica-pic.blogspot.com
    • Marcado como respuesta smithjhon lunes, 25 de abril de 2011 5:38
    lunes, 25 de abril de 2011 2:10
  • ¿Crees? (No estás seguro).

    Me parece que te falta el punto 3 que es el más importante que el 5.

    ¿Ya te funciona?

    Si quieres guardar el archivo físicamente lee abajo.

    File.WriteAllBytes (Método)

    http://msdn.microsoft.com/es-es/library/system.io.file.writeallbytes%28v=VS.100%29.aspx

    ¿Alguna novedad?


    http://electronica-pic.blogspot.com
    • Marcado como respuesta smithjhon lunes, 25 de abril de 2011 5:38
    lunes, 25 de abril de 2011 2:26
  • Hola:

    Si, trabajo con C#. Si acabo el programa a C#, lo paso a VB .net y VC++. Así aprendo un poco de todo. Se programar PIC en ASM un poco.

    Por cierto, me sale los datos binarios al textBox en multiline en C#.

     

    Cursor cur = this.Cursor;
          this.Cursor = Cursors.WaitCursor;
    
          //
          int b;
          FileStream fs = new FileStream(@"Archivo.bin", FileMode.Open, FileAccess.Read);
          StringBuilder sb = new StringBuilder();
    
          while ((b = fs.ReadByte()) != -1) sb.Append(string.Format("{0:X02} ", b));
          fs.Close();
    
          textBox1.Text = sb.ToString();
          textBox1.Font = new Font("Courier New", 10);
          textBox1.ScrollBars = ScrollBars.Vertical;
          textBox1.SelectionStart = 0;
    
          //
          this.Cursor = cur;
    

     

    ¿Es lo que quieres?

    ¿Ya te funciona?

     

     

    Si todo anda bien, en VB .net 2010 es así:

    Dim cur As Cursor = Me.Cursor
    Me.Cursor = Cursors.WaitCursor
    
    '
    Dim b As Integer
    Dim fs As New FileStream("Archivo.bin", FileMode.Open, FileAccess.Read)
    Dim sb As New StringBuilder()
    
    While (InlineAssignHelper(b, fs.ReadByte())) <> -1
    	sb.Append(String.Format("{0:X02} ", b))
    End While
    fs.Close()
    
    textBox1.Text = sb.ToString()
    textBox1.Font = New Font("Courier New", 10)
    textBox1.ScrollBars = ScrollBars.Vertical
    textBox1.SelectionStart = 0
    
    '
    Me.Cursor = cur
    

    Saludo.

     


    http://electronica-pic.blogspot.com
    • Marcado como respuesta smithjhon lunes, 25 de abril de 2011 5:38
    lunes, 25 de abril de 2011 3:41

Todas las respuestas

  • Hola:

    ¿Qué tipo de EEPROM usas?

    ¿Es para microcontroladores, PIC, AVR, etc?

    ¿Qué formato es el archivo .hex, ASCII?

    Si, hay que usar el componente que dices.

    http://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=ES-ES&k=k%28SYSTEM.WINDOWS.FORMS.FOLDERBROWSERDIALOG%29;k%28DESIGNER_SYSTEM.WINDOWS.FORMS.DESIGN.FORMDOCUMENTDESIGNER%29;k%28NONVISUALSELECTION%29;k%28TargetFrameworkMoniker-%22.NETFRAMEWORK%2cVERSION%3dV4.0%22%29&rd=true

     

    // The following example displays an application that provides the ability to 
    // open rich text files (rtf) into the RichTextBox. The example demonstrates 
    // using the FolderBrowserDialog to set the default directory for opening files.
    // The OpenFileDialog class is used to open the file.
    using System;
    using System.Drawing;
    using System.Windows.Forms;
    using System.IO;
    
    public class FolderBrowserDialogExampleForm : System.Windows.Forms.Form
    {
      private FolderBrowserDialog folderBrowserDialog1;
      private OpenFileDialog openFileDialog1;
    
      private RichTextBox richTextBox1;
    
      private MainMenu mainMenu1;
      private MenuItem fileMenuItem, openMenuItem;
      private MenuItem folderMenuItem, closeMenuItem;
    
      private string openFileName, folderName;
    
      private bool fileOpened = false;
    
      // The main entry point for the application.
      [STAThreadAttribute]
      static void Main() 
      {
        Application.Run(new FolderBrowserDialogExampleForm());
      }
    
    
      // Constructor.
      public FolderBrowserDialogExampleForm()
      {
        this.mainMenu1 = new System.Windows.Forms.MainMenu();
        this.fileMenuItem = new System.Windows.Forms.MenuItem();
        this.openMenuItem = new System.Windows.Forms.MenuItem();
        this.folderMenuItem = new System.Windows.Forms.MenuItem();
        this.closeMenuItem = new System.Windows.Forms.MenuItem();
    
        this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
        this.folderBrowserDialog1 = new System.Windows.Forms.FolderBrowserDialog();
        this.richTextBox1 = new System.Windows.Forms.RichTextBox();
    
        this.mainMenu1.MenuItems.Add(this.fileMenuItem);
        this.fileMenuItem.MenuItems.AddRange(
                  new System.Windows.Forms.MenuItem[] {this.openMenuItem,
                                     this.closeMenuItem,
                                     this.folderMenuItem});
        this.fileMenuItem.Text = "File";
    
        this.openMenuItem.Text = "Open...";
        this.openMenuItem.Click += new System.EventHandler(this.openMenuItem_Click);
    
        this.folderMenuItem.Text = "Select Directory...";
        this.folderMenuItem.Click += new System.EventHandler(this.folderMenuItem_Click);
    
        this.closeMenuItem.Text = "Close";
        this.closeMenuItem.Click += new System.EventHandler(this.closeMenuItem_Click);
        this.closeMenuItem.Enabled = false;
    
        this.openFileDialog1.DefaultExt = "rtf";
        this.openFileDialog1.Filter = "rtf files (*.rtf)|*.rtf";
    
        // Set the help text description for the FolderBrowserDialog.
        this.folderBrowserDialog1.Description = 
          "Select the directory that you want to use as the default.";
    
        // Do not allow the user to create new files via the FolderBrowserDialog.
        this.folderBrowserDialog1.ShowNewFolderButton = false;
    
        // Default to the My Documents folder.
        this.folderBrowserDialog1.RootFolder = Environment.SpecialFolder.Personal;
    
        this.richTextBox1.AcceptsTab = true;
        this.richTextBox1.Location = new System.Drawing.Point(8, 8);
        this.richTextBox1.Size = new System.Drawing.Size(280, 344);
        this.richTextBox1.Anchor = AnchorStyles.Top | AnchorStyles.Left | 
                      AnchorStyles.Bottom | AnchorStyles.Right;
    
        this.ClientSize = new System.Drawing.Size(296, 360);
        this.Controls.Add(this.richTextBox1);
        this.Menu = this.mainMenu1;
        this.Text = "RTF Document Browser";
      }
    
      // Bring up a dialog to open a file.
      private void openMenuItem_Click(object sender, System.EventArgs e)
      {
        // If a file is not opened, then set the initial directory to the
        // FolderBrowserDialog.SelectedPath value.
        if (!fileOpened) {
          openFileDialog1.InitialDirectory = folderBrowserDialog1.SelectedPath;
          openFileDialog1.FileName = null;
        }
    
        // Display the openFile dialog.
        DialogResult result = openFileDialog1.ShowDialog();
    
        // OK button was pressed.
        if(result == DialogResult.OK) 
        {
          openFileName = openFileDialog1.FileName;
          try
          {
            // Output the requested file in richTextBox1.
            Stream s = openFileDialog1.OpenFile();
            richTextBox1.LoadFile(s, RichTextBoxStreamType.RichText);
            s.Close();  
    
            fileOpened = true;
    
          } 
          catch(Exception exp)
          {
            MessageBox.Show("An error occurred while attempting to load the file. The error is:" 
                    + System.Environment.NewLine + exp.ToString() + System.Environment.NewLine);
            fileOpened = false;
          }
          Invalidate();
    
          closeMenuItem.Enabled = fileOpened;
        }
    
        // Cancel button was pressed.
        else if(result == DialogResult.Cancel) 
        {
          return;
        }
      }
    
    
      // Close the current file.
      private void closeMenuItem_Click(object sender, System.EventArgs e)
      {
        richTextBox1.Text = "";
        fileOpened = false;
    
        closeMenuItem.Enabled = false;
      }
    
    
      // Bring up a dialog to chose a folder path in which to open or save a file.
      private void folderMenuItem_Click(object sender, System.EventArgs e)
      {
        // Show the FolderBrowserDialog.
        DialogResult result = folderBrowserDialog1.ShowDialog();
        if( result == DialogResult.OK )
        {
          folderName = folderBrowserDialog1.SelectedPath;
          if(!fileOpened)
          {
            // No file is opened, bring up openFileDialog in selected path.
            openFileDialog1.InitialDirectory = folderName;
            openFileDialog1.FileName = null;
            openMenuItem.PerformClick();
          } 
        }
      }
    }
    
    
    
    

    Saludo.


    http://electronica-pic.blogspot.com
    • Marcado como respuesta smithjhon lunes, 25 de abril de 2011 5:35
    jueves, 21 de abril de 2011 11:22
  •  

    Si, hay que usar el componente que dices.

    es para un controlador samsung

    es .hex

    no hay que usar exactamente esos componentes ,

    la idea es almacenar todo en byte en algun buffer y despues enviarlo

    jueves, 21 de abril de 2011 13:19
  • Sí, hay que leer el hex y almacenarlo en un buffer, luego enviarlo.

    Puede que te de ideas este manual.

    Saludo.


    http://electronica-pic.blogspot.com
    • Marcado como respuesta smithjhon lunes, 25 de abril de 2011 5:34
    viernes, 22 de abril de 2011 19:04
  • RFOG,META,PEP saben como   seleccionar un archibo.bin o  y enviarlo en bytes pero no en stirng ni en hex solo en byte array y eso creo que solo lo puedo hacer si cargo el erchibo en un buffer y luego lo envio en byte

     

    estoy abriendo los archivos con openfile dialog asi:

     Dim abrirarchivo As New OpenFileDialog
    
       abrirarchivo.InitialDirectory = "C:\"
    
       abrirarchivo.FileName = "eeprom"
    
       abrirarchivo.Filter = "(*.bin)|*.bin|(*.hex)|*.hex"
    
       abrirarchivo.ShowDialog()
    
       Dim leerfilename As New System.IO.StreamReader(abrirarchivo.FileName)
    
    textbox1.text=leerfilename.readtoend
    
    leerfilename.close()

    pero se que me falta usar el file stream para poden ver los hex algo asi como esto

     Private fs As System.IO.FileStream
    
     Private myWriter As System.IO.BinaryReader
    
     Private myReader As System.IO.BinaryReader
    
     Private ScreenBuffer As String
    
     Private ScreenBuff As New StringBuilder()
    
    
    
    Private Sub displayFile()
    
      textboox1.Text = ScreenBuffer
    
     End Sub
    
    
    
    
    
     Private Sub GetFile()
    
      fs = New System.IO.FileStream("D:\eeprom\my eeprom.bin", System.IO.FileMode.Open)
    
      myReader = New System.IO.BinaryReader(fs)
    
    
    
      Dim buff As String
    
      Dim y As Byte
    
     
    
       buff = Hex(myReader.ReadByte)
    
      
    
     If buff.Length < 2 Then
    
        ScreenBuff.Append("0" & buff)
    
        
    
       Else
    
        ScreenBuff.Append(buff)
    
       
    
      End If
    
       
    
      
    
       y += 1
    
       If y = 16 Then
    
        y = 0
    
        ScreenBuff.Append(vbCrLf)
    
        ScreenBuffer = ScreenBuff.ToString
    
       End If
    
      
    
      fs.Flush()
    
      fs.Close()
    
      myReader.Close()
    
      
    
      displayFile()
    
     End Sub
    
     

    "D:\eeprom\my eeprom.bin" no se como remplazar esta dirrecion por la de mi openfiledial siempre me da error con todo lo que intento

    o hay alguna otra forma de abrir un archibo .bin y que muestre todos los bytes como bytes array y luego enviarlos al dispocitivo, o alguna forma de enviar todo en byte sin abrirlo en un textbox solo guardarlo en un buffer y enviarlos en byte


    viernes, 22 de abril de 2011 20:18
  • No se si leer binario es lo mismo que el hex, al menos para ASCII no lo es.

     

         if (openFileDialog1.ShowDialog() == DialogResult.OK)
          {
            textBox_ruta_buscar_archivo.Text = openFileDialog1.FileName.ToString();
          }
    


    http://electronica-pic.blogspot.com
    • Marcado como respuesta smithjhon lunes, 25 de abril de 2011 5:35
    viernes, 22 de abril de 2011 21:52
  •     FileStream fs = new FileStream(@"Archivo.bin", FileMode.Open, FileAccess.ReadWrite);
        BinaryReader br = new BinaryReader(fs);
        BinaryWriter bw = new BinaryWriter(fs);
    
    
         fs.Position = 0;
     
        
        //
        br.Close();
        bw.Close();
    

    http://electronica-pic.blogspot.com
    • Marcado como respuesta smithjhon lunes, 25 de abril de 2011 5:35
    viernes, 22 de abril de 2011 22:03
  • Se que en C# es 0x41 // La letra "A".

    Código completo.

     

    byte[] mBuffer = new byte[1];
        mBuffer[0] = 0x41; // Es la letra "A".
        serialPort1.Write(mBuffer, 0, mBuffer.Length);
    

     

    En visual Basic .NET es:

     

    Dim mBuffer As Byte() = New Byte(0) {}
    mBuffer(0) = &H41 ' Es la letra "A".
    serialPort1.Write(mBuffer, 0, mBuffer.Length)
    
    este ejemplo es tuyo de otro post:
    mirra metaconta yo mando todo en byte como en tu ejemplo de visual basic .net
    casi siempre mando caracteres desde &H01, hasta el caracter &HFF con lo cual yo estoy usando todos los 256 caracters que existen verdad
    lo que quiero hacer es abrir un archivo que puede estar encualquier parte de mi pc y enviarlo con este metodo como lo ago????
    sábado, 23 de abril de 2011 23:01
  • ya solucione una parte ya puedo ver exactamente en el textbox lo que quiero enviar abrir cualquier archivo y visualizarlo jejeje 1 paso LISTO  ahorra nececito enviarlo TALcual como sale en el textbox1 como le ago

    por que me sale solo en hex

    este es el codigo para abrir el archivo que quieras dentro de la pc y enviarlo por el puerto

    Private Sub GetFile(ByVal path As String)
    
    
    
    
    
    
    
    
    
    
    
     Dim fs = New System.IO.FileStream(path, System.IO.FileMode.Open)
    
    
    
     Dim buffer As New StringBuilder 
    
    
    
     Dim lenght1 As Long = fs.Length
    
    
    
     Dim position As Long
    
    
    
     Dim strj As String = ""
    
    
    
    
    
    
    
     While position < lenght1
    
    
    
      buffer = New StringBuilder
    
    
    
      buffer.Append(fs.ReadByte)
    
    
    
      position = position + 1
    
    
    
      If Len(Hex(buffer.ToString)) <= 1 Then
    
    
    
    
    
    
    
      strj = strj & ("0" + Hex(buffer.ToString))
    
    
    
    
    
    
    
      Else
    
    
    
      strj = strj & (Hex(buffer.ToString))
    
    
    
      End If
    
    
    
      buffer = Nothing
    
    
    
     End While
    
    
    
      TextBox1.Text = strj
    
    
    
     RS232.Write(TextBox1.Text)'ACA DEVE IR EL ENVIO DE LOS
    
    
    
     'DATOS PERO NO SALEN EN BYTES salen en otra forma por ejempol el "05 " sale 30 35
    y asi no me sirve
    
    
    
    
    
    
     End Sub
    
    
    
    
    
    
    
     Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
    
    
    
     Dim abrirarchivo As New OpenFileDialog
    
    
    
     abrirarchivo.InitialDirectory = "C:\"
    
    
    
     abrirarchivo.FileName = "eeprom"
    
    
    
     abrirarchivo.Filter = "(*.bin)|*.bin|(*.hex)|*.hex"
    
    
    
    
    
    
    
     If abrirarchivo.ShowDialog() = DialogResult.OK Then
    
    
    
      GetFile(abrirarchivo.FileName)
    
    
    
    
    
    
    
     End If
    
    
    
    
    
    
    
    
    
    
    
     End Sub
    
    
    
    
    
    
    
    


    domingo, 24 de abril de 2011 1:00
  • Enviar una trama de bytes es así:

     

    private void button_t_Click(object sender, EventArgs e)
    {
     byte[] mBuffer = new byte[5];
     mBuffer[0] = 0x74;
     mBuffer[1] = 0x75;
     mBuffer[2] = 0x89;
     mBuffer[3] = 0x20;
     mBuffer[4] = 0x6C;
     serialPort1.Write(mBuffer, 0, mBuffer.Length);
    }
    

     

    Enviar bytes en forma de cadena es así:

     

    private void button_b_Click(object sender, EventArgs e)
    {
     byte[] mBuffer = Encoding.ASCII.GetBytes("Hello World");
     serialPort1.Write(mBuffer, 0, mBuffer.Length);
    }
    

     

    Donde pone Hello World, no se si valdrá poner @"C:\archivo.hex".

    ¿Quieres con un botón abrir un cuadro para buscar en cualquier parte del PC para abrir un archivo.hex?

    Lo dije un post justo atrás, tal vez no lo hayas entendido. Haré un mini tutorial sencillo.

     

    En la propiedad "Filter" del "OpenFileDialog1" he puesto este filtro.

    Archivo hexadecimal|*.hex|Archivo binario|*.bin|Todos los archivos|*.*

    Deja el nombre ebn blanco del FileNombre o cámbielo.

    Código fuente de este pequeño ejemplo es:

     

    Public Class Form1
    
     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
     TextBox1.Text = OpenFileDialog1.FileName.ToString()
     End If
     End Sub
    End Class
    

    Ya tienes el archivo cargado hasta el nombre de la ubiación en el textBox y puedes visualizarlo.

     

    No has nombrado que tipo de puerto te refieres, me imagino que el RS232 o puerto COM o puerto serie.

    Introduces el componente "SerialPort1" y un Button2 como nombre interno, como nombre externo lo he llamado "Grabar". Abajo dejo el código completo. Lo he probado con simuladores del puerto serie y puedo enviar bytes y cuentas las cantidades enviadas.

     

    Imports System.IO.Ports ' No olvidar.
    
    Public Class Form1
    
     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
      If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
       TextBox1.Text = OpenFileDialog1.FileName.ToString()
      End If
     End Sub
    
     Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
      SerialPort1.Open() 'Abrir el puerto.
      SerialPort1.Write(TextBox1.Text) 'Grabar o enviar archivo .hex o .bin a la EEPROM.
      SerialPort1.Close() ' Cerrar el puerto.
     End Sub
    End Class
    
    

     

    Una pregunta.

    ¿Es lo que buscas?

    Un cordial saludo.

     

    PD: He estado buscando información por curiosidad y me han respondido esto aquí.
    http://www.winpic800.com//index.php?option=com_joomlaboard&Itemid=41&func=view&id=1151&catid=7

     


    http://electronica-pic.blogspot.com



    • Editado Metaconta domingo, 24 de abril de 2011 1:50
    • Marcado como respuesta smithjhon lunes, 25 de abril de 2011 5:35
    domingo, 24 de abril de 2011 1:09
  • ahorra tengo 3 preguntas 1 en este ejemplo

    1-la informacion que esta dentro de el archivo tambien esta cargada , por ejemplo en eL .hex hay 200 bytes verdad esos bytes estan cagados o solo es la ubicacion

    2-como subes eas fotos a este foro? asi yo tomo fotos y me esplico mejor

    3-ya solucione lo de abrir cualquier archivo y cargarlo en un textbox lo que esta dentro de el archibo

    ahorra nececito es envar el archivo que selecione pero recuerda en byte

    cuando envio el archivo  si este adentro ESTOS BYTES 03 0A 35 pues el puerto lo envia asi

    30 33 30 41 33 35 y yo nececito que el puerto lo envIe asi 03 0A 35

    domingo, 24 de abril de 2011 1:50
  • ahorra tengo 3 preguntas 1 en este ejemplo

    1-la informacion que esta dentro de el archivo tambien esta cargada , por ejemplo en eL .hex hay 200 bytes verdad esos bytes estan cagados o solo es la ubicacion

     

    Buena pregunta, me da que lo que envía es el nombre de la ubiación. Te iba a decir que pongas un ProgreesBar1 para que quede más bonito y me pasa esto. Error mío.

     

    acabo de comprobar que sólo se envía los bytes que es la ubicación, el nombre claro. Dentro del archivo no envía nada de nada. Voy a investigar que tengo ejemplos hechos por ahí.

     

    2-como subes eas fotos a este foro? asi yo tomo fotos y me esplico mejor

    Las fotos puedes subirla en esta Web gratuita. www.subeimagenes.com
    Para cargarlas en el foro y que se muestre, pulsa HTML que está al lado de introducir códigos y escribes esto:
    <img src=" "/>

    Dentro de las dobles comillas escribe la dirección de la foto que has subido en la Web de antes. Por ejemplo:
    <img src="http://www.subeimagenes.com/img/hola-36293.png"/>

    3-ya solucione lo de abrir cualquier archivo y cargarlo en un textbox lo que esta dentro de el archibo

    ahorra nececito es envar el archivo que selecione pero recuerda en byte

    cuando envio el archivo  si este adentro ESTOS BYTES 03 0A 35 pues el puerto lo envia asi

    30 33 30 41 33 35 y yo nececito que el puerto lo envIe asi 03 0A 35

    ¿En byte o binario? Tendré que investigar y probar para saberlo.


    No se si el famoso FileStrean tiene algo que ver como has nombrado antes, solo es para ler y escribir archivos dentro de él. Lo qu eno se si el FileStream tiene algo que ver con esto, es enviar.

    http://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=ES-ES&k=k%28SYSTEM.IO.FILESTREAM%29;k%28TargetFrameworkMoniker-%22.NETFRAMEWORK%2cVERSION%3dV4.0%22%29;k%28DevLang-CSHARP%29&rd=true

    Saludo.

     

     

     

     

    Edito:

    He estado investigando y si tiene que ver. También otra clase.

    FileStream
    http://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=ES-ES&k=k%28SYSTEM.IO.FILESTREAM%29;k%28TargetFrameworkMoniker-%22.NETFRAMEWORK%2cVERSION%3dV4.0%22%29;k%28DevLang-CSHARP%29&rd=true

    StreamReader
    http://msdn.microsoft.com/es-es/library/system.io.streamreader%28v=VS.100%29.aspx

     

     

     

    Edito 2:

    BinaryReader
    http://msdn.microsoft.com/es-es/library/system.io.binaryreader.aspx

    Muchos archhivos son en binario, incluido los .exe, .jpg, etc, así que para el .hex también funciona.

    Una explicación que me dieron:


    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:

    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.

    Seguiré investigando...


    http://electronica-pic.blogspot.com





    • Marcado como respuesta smithjhon lunes, 25 de abril de 2011 5:36
    domingo, 24 de abril de 2011 2:15
  •  

     

     

    lo que yo envio deveria salir como en el textbox1 pero sale como donde dice hex

    domingo, 24 de abril de 2011 16:24
  • metaconta deveria salir como en esta foto cuenta 8 caracteres primero y luego empieza el codigo real en donde dice 0500000003= que en mi textbox
    domingo, 24 de abril de 2011 16:49
  • esta es el file.bin que yo envio
    domingo, 24 de abril de 2011 16:55
  • Hola:

    Recuerdo que se puede cargar el archivo sea en .hex o en .bin en un richtTextBox usando el encodding que desees. Uso el Visual Express 2010 y no me carga la ventana para ver el archivo como el tuyo en hexadecimal.

    Aquí explica algo. Primero localizar, luego cargar los datos como dices.
    http://msdn.microsoft.com/es-es/library/aa983674%28v=vs.71%29.aspx

    Más datos para saber un poco más por si acaso.
    http://msdn.microsoft.com/es-es/library/system.windows.forms.richtextbox%28v=VS.100%29.aspx

    He hestado buscado y parece que te han contestado antes que yo.
    http://social.msdn.microsoft.com/Forums/es-ES/vcses/thread/f27d7766-6faa-4def-9a1a-6123fc71a52b#853b3272-15a2-4d36-a9b2-0a6c5c1ade43

    Imports System.Text
    Imports System.IO
    
    Public Class frmMain
    
      Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LoadFile.Click
        Dim ArrayHold() As Byte
        Dim Index As Integer = 0
        Dim Str As New StringBuilder
        Dim tStr As String = ""
        Dim tempStr As String = ""
        Dim IndexEnd As Integer = 0
        Dim InputString As String = ""
    
        OpenDia.Filter = "All Files|*.*"
        If OpenDia.ShowDialog = Windows.Forms.DialogResult.OK Then
          ' ArrayHold = My.Computer.FileSystem.ReadAllBytes(OpenDia.FileName)
          '==============================================================
          Dim myStreamReader As StreamReader = Nothing
    
          ' Ensure that the creation of the new StreamReader is wrapped in a 
          '  Try-Catch block, since an invalid filename could have been used.
          ' Create a StreamReader using a Shared (static) File class.
          myStreamReader = File.OpenText(OpenDia.FileName)
          ' Read the entire file in one pass, and add the contents to 
          '  txtFileText text box.
          InputString = myStreamReader.ReadToEnd()
          'Convert string to byte and copy to byte array
          ArrayHold = Encoding.Default.GetBytes(InputString)
    
          '=================================================================
          'ArrayHold = FileSystem.ReadAllBytes(OpenDia.FileName)
          Do
            IndexEnd = Index + 9
            For x As Integer = Index To IndexEnd
              If x > UBound(ArrayHold) Then
                Str.Append("  ")
                tempStr = tempStr & " "
              Else
                tStr = UCase(Convert.ToString(ArrayHold(x), 16))
                If tStr.Length < 2 Then tStr = "0" & tStr
                Str.Append(tStr & " ")
                If ArrayHold(x) < 32 Then
                  tempStr = tempStr & ". "
                Else
                  tempStr = tempStr & Chr(ArrayHold(x)) & " "
                End If
              End If
            Next
            Str.Append("  |  " & tempStr & vbCrLf)
            tempStr = ""
            Index = Index + 10
          Loop While IndexEnd < UBound(ArrayHold)
          DispalyHex.Text = Str.ToString
        End If
      End Sub
    
    
    End Class
    

    Saludo.


    http://electronica-pic.blogspot.com
    • Marcado como respuesta smithjhon lunes, 25 de abril de 2011 5:36
    domingo, 24 de abril de 2011 19:57
  • no eso que respondieron era para ver archivos en hex ,y yo lo que queria era ver archivos en bytes,era otro tema muy parecido. y ese codigo no sirve en este tema es diferente

     con el codigo que postie arriva fue con el que ya solucione el problema de seleccionar y abrir el archibo

    ahorra el problema es que cuando yo envio por mi puerto sale los bytes como en la foto1 y deverian salir como en la foto2 que debo hacer?????para que salgan como en la foto 2

     

     

     
     
    domingo, 24 de abril de 2011 20:24
  • Si es esta foto:

    Lo que veo son hexadecimales a toda costa. ¿Qué programas son esos que muestras?

    ¿Ya sabes como enviar un archivo .bin o .hex? Primero nos centramos en esto, luego en visualizarlo en pantalla los bytes que cuentas.


    http://electronica-pic.blogspot.com
    • Marcado como respuesta smithjhon lunes, 25 de abril de 2011 5:36
    domingo, 24 de abril de 2011 21:26
  • el programa  mio es el que esta con el botton do job es mi programa y lo que esta en el textbox1.text  es lo que estoy enviando ya podemos olvidarnos de la parte de visualizarlo,por que esa parte ya la hize ya esta lista como se ve en el textbox1 jejeje,

    ahorra nececito enviarlo pero no en hexadecimales, si no en byte que salga como esta escrito en el textbox1 o como esta en la foto 2

    domingo, 24 de abril de 2011 22:02
  • El programa parece muy impresionante, quiero ver una captura con tu permiso.

     

    En cuanto al problema. Puedes usar algo como esto.

    Que lea los datos del archivo, lo almacene y lo envíe como quieres.

    Dim mBuffer As Byte() = New Byte(0) {}
    mBuffer(0) = &H41 ' Es la letra "A".
    serialPort1.Write(mBuffer, 0, mBuffer.Length)


    Así que debe leer el buffer del interior del archivo, luego coges el textBox y lo envías. Es algo relacionado como puse arriba por error.

    Imports System.IO.Ports ' No olvidar.

    Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
    TextBox1.Text = OpenFileDialog1.FileName.ToString()
    End If
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    SerialPort1.Open() 'Abrir el puerto.
    SerialPort1.Write(TextBox1.Text) 'Grabar o enviar archivo .hex o .bin a la EEPROM.
    SerialPort1.Close() ' Cerrar el puerto.
    End Sub
    End Class
    • Marcado como respuesta smithjhon lunes, 25 de abril de 2011 5:36
    domingo, 24 de abril de 2011 22:17
  • con el seralport1.write(textbox1.text) tiene la salida de la foto 1 osea todo sale en hexadecimal


    queres ver una captura de datos, la captura es la que esta abajo de mi programa en donde se ven dos cuadros uno que dice hex y otro al lado derecho que dice ascii

    domingo, 24 de abril de 2011 22:26
  • con el seralport1.write(textbox1.text) tiene la salida de la foto 1 osea todo sale en hexadecimal

    ¿Y lo quieres en binario?

    Me imagino que se podrá haciendo conversiones.

    Es la pregunta que quieres. Si es así me lo confirmas y investigo.


    Por curiosidad usas el Willem
    http://www.sivava.com/img-product/ICD/MPLAP-ICD2-Black-H120.jpg
    • Marcado como respuesta smithjhon lunes, 25 de abril de 2011 5:37
    domingo, 24 de abril de 2011 22:43
  • si exacto quiero que salga como se ve en la foto2 osea en byte,


    este esl el codigo para buscar y abrir el archibo en el textbox

     

    Private Sub GetFile(ByVal path As String)

     

    Dim fs = New System.IO.FileStream(path, System.IO.FileMode.Open)

     

    Dim buffer As New StringBuilder

     

    Dim lenght1 As Long = fs.Length

     

    Dim position As Long
     

     

    Dim strj As String = ""
     

     

    While position < lenght1

    buffer =

    New StringBuilder

    buffer.Append(fs.ReadByte)

     

    position = position + 1

     

    If Len(Hex(buffer.ToString)) <= 1 Then

    strj = strj & (

    "0" + Hex(buffer.ToString))

     

    Else

    strj = strj & (Hex(buffer.ToString))

     

    End If

    buffer =

    Nothing

     

    End While

    TextBox1.Text = strj

    RS232.Write(strj)

     

    RS232.Close()

     

    End Sub

     

    Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click

    RS232 =

    My.Computer.Ports.OpenSerialPort(ComboBox1.Text)

    RS232.BaudRate = 115200

    RS232.Parity = IO.Ports.Parity.None

    RS232.DataBits = 8

    RS232.StopBits = IO.Ports.StopBits.One

    RS232.ReadTimeout = 160000

    RS232.WriteTimeout = 160000

    RS232.DtrEnable =

    True

    RS232.RtsEnable =

    True

     

    If RS232.IsOpen Then

    ListBox1.Items.Add(

    "Search firmware....")

     

    End If

     

     

    Dim abrirarchivo As New OpenFileDialog

    abrirarchivo.InitialDirectory =

    "C:\"

    abrirarchivo.FileName =

    "eeprom"

    abrirarchivo.Filter =

    "(*.bin)|*.bin|(*.hex)|*.hex"

     

    If abrirarchivo.ShowDialog() = DialogResult.OK Then

    GetFile(abrirarchivo.FileName)

     

    End If

     

     

    End Sub

    • Editado smithjhon domingo, 24 de abril de 2011 23:01
    domingo, 24 de abril de 2011 22:53
  • ¿Qué se vea o qué se envíe en byte?
    http://electronica-pic.blogspot.com
    domingo, 24 de abril de 2011 22:58
  • que se envie en byte ya puse todo el codigo arriba
    no uso el willem  pero estoy seguro que este willem envia todo en byte

    y que si tu quieres grabar una eepom con willen primero tienes que eniar los bootstars o bootloaders para poder escribir la eeprom o el pic por eso las personas normales no pueden crear programas para grabar pic y eeprom

    domingo, 24 de abril de 2011 23:04
  • ¿Dónde se muestra esos bytes?

    ¿En un textBox?

    perdone que sea majadero, quiero las cosas claras para investigar.


    http://electronica-pic.blogspot.com
    domingo, 24 de abril de 2011 23:23
  • mirra la foto2 dos donde dice hex esta esta secuencia:7E 0F 00 80 00 00 03 F9 05 00 00 00 03 00 00 00 28 00 80 00 28 00 80 00 80 3C verdad

    si le borramos :7E 0F 00 80 00 00 03 F9

    entonces queda igual que mi textbox:05 00 00 00 03 00 00 00 28 00 80 00 28 00 80 00 80 3C verdad

    eso se logra hacer con este metodo: Dim mBuffer As Byte() = New Byte(0) {}
    mBuffer(0) = &H41 ' Es la letra "A".
    serialPort1.Write(mBuffer, 0, mBuffer.Length) a este metodo yo lo llamo enbiar en byte

    si te figas en la foto2 todo lo que sale es en bytes:7E 0F 00 80 00 00 03 F9 05 00 00 00 03 00 00 00 28 00 80 00 28 00 80 00 80 3C verdad y esto es igual a lo que esta en mi texbox1  solo que a mi textbox le falta la secuencia:7E 0F 00 80 00 00 03 F9 porque esta parte es una dirreccion en donde la eeprom empieza a grabarce

     

    si yo escribo algo como el primer byte=7E

    Dim mBuffer As Byte() = New Byte(0) {}


    mBuffer(0) = &H7E

     serialPort1.Write(mBuffer, 0, mBuffer.Length)

    pues todo saldria perfecto como en la foto2 el primer byte enviado es el 7e y seria genial lo unico malo es que no se como hacerlo

    los bytes son los que se muestran en mi textbox1 y en la foto2 en la recuadro que dice hex
    domingo, 24 de abril de 2011 23:42
  • Si esta es la foto 2 que dices.

     

    Por lo que te entiendo:

    Tienes esta secuencia:
    7E 0F 00 80 00 00 03 F9 05 00 00 00 03 00 00 00 28 00 80 00 28 00 80 00 80 3C

    Quitamos esta parte de la secuencia:
    7E 0F 00 80 00 00 03 F9

    Quedaría así la secuancia:
    05 00 00 00 03 00 00 00 28 00 80 00 28 00 80 00 80 3C ¿La secuencia en realidad es más grande que tu ejemplo?

    Entonces en el textBox se almacena esta secuencia:
    05 00 00 00 03 00 00 00 28 00 80 00 28 00 80 00 80 3C

    Más abajo comentas esto:
    si te figas en la foto2 todo lo que sale es en bytes:7E 0F 00 80 00 00 03 F9 05 00 00 00 03 00 00 00 28 00 80 00 28 00 80 00 80 3C verdad y esto es igual a lo que esta en mi texbox1  solo que a mi textbox le falta la secuencia:7E 0F 00 80 00 00 03 F9 porque esta parte es una dirreccion en donde la eeprom empieza a grabarce

    Es decir, que quieres enviar sólo 05 00 00 00 03 00 00 00 28 00 80 00 28 00 80 00 80 3C o quieres enviar todo completo??????????' 7E 0F 00 80 00 00 03 F9 05 00 00 00 03 00 00 00 28 00 80 00 28 00 80 00 80 3C. Por aquí me estoy liando.

    Creo que se puede almacenar esos datos en memoria (cosa que voy investigar).

    Si tienes el archivo binario .bin, puedes quitar la secuencia 7E 0F 00 80 00 00 03 F9. ¿O no lo quieres así? Prefieres cargarlo en un textBox y hacer ahí las cosas sin modificar el archivo .bin.


    http://electronica-pic.blogspot.com
    • Marcado como respuesta smithjhon lunes, 25 de abril de 2011 5:37
    lunes, 25 de abril de 2011 0:07
  • si exacto quiero que salga como se ve en la foto2 osea en byte,


    este esl el codigo para buscar y abrir el archibo en el textbox

     

    Private Sub GetFile(ByVal path As String)

     

    Dim fs = New System.IO.FileStream(path, System.IO.FileMode.Open)

     

    Dim buffer As New StringBuilder

     

    Dim lenght1 As Long = fs.Length

     

    Dim position As Long
     

     

    Dim strj As String = ""
     

     

    While position < lenght1

    buffer =

    New StringBuilder

    buffer.Append(fs.ReadByte)

     

    position = position + 1

     

    If Len(Hex(buffer.ToString)) <= 1 Then

    strj = strj & (

    "0" + Hex(buffer.ToString))

     

    Else

    strj = strj & (Hex(buffer.ToString))

     

    End If

    buffer =

    Nothing

     

    End While

    TextBox1.Text = strj

    RS232.Write(strj)

     

    RS232.Close()

     

    End Sub

     

    Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click

    RS232 =

    My.Computer.Ports.OpenSerialPort(ComboBox1.Text)

    RS232.BaudRate = 115200

    RS232.Parity = IO.Ports.Parity.None

    RS232.DataBits = 8

    RS232.StopBits = IO.Ports.StopBits.One

    RS232.ReadTimeout = 160000

    RS232.WriteTimeout = 160000

    RS232.DtrEnable =

    True

    RS232.RtsEnable =

    True

     

    If RS232.IsOpen Then

    ListBox1.Items.Add(

    "Search firmware....")

     

    End If

     

     

    Dim abrirarchivo As New OpenFileDialog

    abrirarchivo.InitialDirectory =

    "C:\"

    abrirarchivo.FileName =

    "eeprom"

    abrirarchivo.Filter =

    "(*.bin)|*.bin|(*.hex)|*.hex"

     

    If abrirarchivo.ShowDialog() = DialogResult.OK Then

    GetFile(abrirarchivo.FileName)

     

    End If

     

     

    End Sub


    Una cosa que me olvidé de decirte.

    Pon arriba del todo esta instrucción:

    Imports System.IO.Ports

    Donde tienes puesto en la segunda línea de código:
    Dim fs = New System.IO.FileStream(path, System.IO.FileMode.Open)

    Ya puedes dejarlo más resumido y código más legible como muestra abajo.

    Dim fs = New FileStream(path, FileMode.Open)

    Suerte.


    http://electronica-pic.blogspot.com
    • Marcado como respuesta smithjhon lunes, 25 de abril de 2011 5:37
    lunes, 25 de abril de 2011 0:15
  •  ¿La secuencia en realidad es más grande que tu ejemplo?

    respuesta : si la secuencia es de 20 megabytes mucho

    Entonces en el textBox se almacena esta secuencia:

    respuesta : la verdad no es necesario guardar nada en el textbox solo lo hice para unicar el archivo y para visualizarlo

    Más abajo comentas esto:

    Es decir, que quieres enviar sólo 05 00 00 00 03 00 00 00 28 00 80 00 28 00 80 00 80 3C o quieres enviar todo completo??????????' 7E 0F 00 80 00 00 03 F9 05 00 00 00 03 00 00 00 28 00 80 00 28 00 80 00 80 3C. Por aquí me estoy liando. jejeje

    respuesta :tengo que enviar todo el archivo

     

    Creo que se puede almacenar esos datos en memoria (cosa que voy investigar).

    respuesta :si seria mejor enviarlos desde un buffer

    Si tienes el archivo binario .bin, puedes quitar la secuencia 7E 0F 00 80 00 00 03 F9. ¿O no lo quieres así?

    respuesta : en realidad tengo que agregar esto al archivo y despues al finalizar enviar el crc corespondiente mas otra trama final

     


    lunes, 25 de abril de 2011 0:28
  • Haciendo pruebas, puedo modifiar el archivo y he sustituido los primeros bytes de un archivo.bin por la secuncia que dices. 7E 0F 00 80 00 00 03 F9. me funcionó, se que esto no es lo que buscas.

     

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    using System.IO; // No olvidar.
    using System.IO.MemoryMappedFiles;
    
    
    namespace Archivo_en_memoria
    {
     public partial class Form1 : Form
     {
      public Form1()
      {
       InitializeComponent();
      }
    
      // Para mantener un archivo en memoria.
      private Image Imagen;
    
      private void button1_Click(object sender, EventArgs e)
      {
       FileStream fs = new FileStream(@"Archivo.bin", FileMode.Open, FileAccess.ReadWrite);
       BinaryReader br = new BinaryReader(fs);
       BinaryWriter bw = new BinaryWriter(fs);
    
       fs.Position = 0; // Primera posición del archivo.
       bw.Write((byte)0x7E);
       bw.Write((byte)0x0F);
       bw.Write((byte)0x00);
       bw.Write((byte)0x80);
       bw.Write((byte)0x00);
       bw.Write((byte)0x00);
       bw.Write((byte)0x03);
       bw.Write((byte)0xF9);
       br.Close();
       bw.Close();
      }
     }
    }
    
    

     

    Lo que quieres hacer es:

    Envía por el puerto serie una trama de bytes como esta secuencia:
    7E 0F 00 80 00 00 03 F9

    Luego envías unos 20 MB de un archivo binario llamado Archivo.bin por ponerle un nombre, hacia al puerto serie justo después de la secuencia descrita arriba.

    Después del Archivo.bin quieres enviar más secuencias.

    ¿Esto funciona como un archivo único concatenado?

    7E 0F 00 80 00 00 03 F9 + Archivo.bin + 05 00 00 00 03 00 00 00 28 00 80 00 28 00 80 00 80 3C + otras secuencias...

    ¿Guardar la secuancia más archivos .bin en memoria todo concatenado?

    ¿Como si fuera un único archivo, para luego enviarlo al puerto serie?

    Es lo que te refieres.

    Fíajte las líneas del dibujo de abajo.

     

    Me imagino que lo quieres enviar como si fuera un único archivo a la EEPROM. Por cierto, menuda EEPROM tienes de 20 MB.


    http://electronica-pic.blogspot.com
    • Marcado como respuesta smithjhon lunes, 25 de abril de 2011 5:37
    lunes, 25 de abril de 2011 1:12
  • jejeje si pero el archibo .bin es en realidad desde el 05 osea el 05 es parte del archivo binario y la ultima trama es el crc del archibo mas una pequeña trama de finalizazion y te cuento algo yo lo hize manual mente hace una semana jajajaj coji todos los bytes dentro del archibo .bin los guarde en la aplicacion y los envie por el puerto todo el envio se hizo en 1 minuto jajaja pero escribir todos los bytes dentro de la aplicacion me llebo 1 semana poreso quiero un proceso mas rapido
    lunes, 25 de abril de 2011 1:45
  • Si quieres un proceso más rápido...

    1. Localiza el archivo.bin.
    2. Lee todo su contenido en byte de principio a fin.
    3. Lo almacenas en memoria.
    4. Lo visualizas en un textBox en byte.
    5. Lo envías por puerto serie.

    ¿Quieres algo de esto?

    Abre un archivo binario, lee su contenido, lo introduce en una matriz de bytes y, a continuación, cierra el archivo.

    http://msdn.microsoft.com/es-es/library/system.io.file.readallbytes%28v=VS.100%29.aspx

    Con esto, dejas el archivo en una variable.

    byte[] file = File.ReadAllByte("path archivo");
    
    En VB .net es:
    Dim file__1 As Byte() = File.ReadAllByte("path archivo")
    


    http://electronica-pic.blogspot.com
    • Marcado como respuesta smithjhon lunes, 25 de abril de 2011 5:38
    lunes, 25 de abril de 2011 2:10
  • creo que tenemos listos los puntos 124  nos faltaria el mas importante el 5
    lunes, 25 de abril de 2011 2:19
  • ¿Crees? (No estás seguro).

    Me parece que te falta el punto 3 que es el más importante que el 5.

    ¿Ya te funciona?

    Si quieres guardar el archivo físicamente lee abajo.

    File.WriteAllBytes (Método)

    http://msdn.microsoft.com/es-es/library/system.io.file.writeallbytes%28v=VS.100%29.aspx

    ¿Alguna novedad?


    http://electronica-pic.blogspot.com
    • Marcado como respuesta smithjhon lunes, 25 de abril de 2011 5:38
    lunes, 25 de abril de 2011 2:26
  • nada sigo aca intentando , estaba pensando en usar alfo como

    for each  bytes in me textbox1.text o algo asi

    next

    convertir todos los bytes en textbox1 a un tipo de integre o algo asi para comertir los hex en bytes de nuevo


    creo que dejo que descanses deves estar cansado de estar todo el dia ayudando alas personas como yo jejeje una pregunta que micro quieres grabar tu y con que programa con el willen o algun otro software? y que le falta al software tuyo para grabar los pic o ya esta listo ?
    lunes, 25 de abril de 2011 2:54
  • Es un placer ayudarte.

    Siento ganas de hacer lo que haces. Estaba pensando en el for para recorrer todos los bytes de un archivo. El archivo almacenado en memoria es lo que debes enviar para el puerto serie.

    Si te sale, dime como.

    Saludo.


    http://electronica-pic.blogspot.com
    lunes, 25 de abril de 2011 3:10
  • cuando dices hacer lo que yo ago, es decir grabar eeprom y pic y escribir micros ,tu estas haciendo un programa igual verdad para grabar las eeprom verdad?  tu trabajas con c#
    lunes, 25 de abril de 2011 3:26
  • Hola:

    Si, trabajo con C#. Si acabo el programa a C#, lo paso a VB .net y VC++. Así aprendo un poco de todo. Se programar PIC en ASM un poco.

    Por cierto, me sale los datos binarios al textBox en multiline en C#.

     

    Cursor cur = this.Cursor;
          this.Cursor = Cursors.WaitCursor;
    
          //
          int b;
          FileStream fs = new FileStream(@"Archivo.bin", FileMode.Open, FileAccess.Read);
          StringBuilder sb = new StringBuilder();
    
          while ((b = fs.ReadByte()) != -1) sb.Append(string.Format("{0:X02} ", b));
          fs.Close();
    
          textBox1.Text = sb.ToString();
          textBox1.Font = new Font("Courier New", 10);
          textBox1.ScrollBars = ScrollBars.Vertical;
          textBox1.SelectionStart = 0;
    
          //
          this.Cursor = cur;
    

     

    ¿Es lo que quieres?

    ¿Ya te funciona?

     

     

    Si todo anda bien, en VB .net 2010 es así:

    Dim cur As Cursor = Me.Cursor
    Me.Cursor = Cursors.WaitCursor
    
    '
    Dim b As Integer
    Dim fs As New FileStream("Archivo.bin", FileMode.Open, FileAccess.Read)
    Dim sb As New StringBuilder()
    
    While (InlineAssignHelper(b, fs.ReadByte())) <> -1
    	sb.Append(String.Format("{0:X02} ", b))
    End While
    fs.Close()
    
    textBox1.Text = sb.ToString()
    textBox1.Font = New Font("Courier New", 10)
    textBox1.ScrollBars = ScrollBars.Vertical
    textBox1.SelectionStart = 0
    
    '
    Me.Cursor = cur
    

    Saludo.

     


    http://electronica-pic.blogspot.com
    • Marcado como respuesta smithjhon lunes, 25 de abril de 2011 5:38
    lunes, 25 de abril de 2011 3:41
  • jejeje si creo que es lo mismo abriste un archivo binario en un textbox verdad. que le falta a tu programa de grabar pic y eeprom para que funcione?
    lunes, 25 de abril de 2011 3:48
  • El programa que dices no lo he hecho, lo abandoné por falte de conocimientos. Hay que leer muchas cosas sobre el porceso del puerto serie para enviar el .bin o .hex.

    ¿Ya te funciona todo tu programa?

    Saludo.


    http://electronica-pic.blogspot.com
    lunes, 25 de abril de 2011 3:53
  • no todabia no funciona pero mas tarde te doy el codigo en c#
    nos halamos mas tarde como en 8 horas subo el codigo bye
    lunes, 25 de abril de 2011 4:14
  • Hasta cuadno vuelvas. jejeje.

    http://electronica-pic.blogspot.com
    lunes, 25 de abril de 2011 4:28
  • ya encontre la solucion del envio solo que sale 1 byte luego otro byte  no manda varios bytes de una vez

    jejejeje

    lunes, 25 de abril de 2011 4:46
  • Si lo envías por el puerto serie el archivo .bin o el que sea, se envía byte por byte. Es así.

    Cuando puedas, aunque sea em 8 horas, me dices como haz hecho lo de enviar un archivo C:\Archivo.bin por el puerto serie con más detalle. Lo quiero saber por si me pongo a grabar .hex o .bin a los PIC y EEPROM.

     

    Por cierto, marca en las casillas como respuestas correctas en algunos post que te ha sido de ayuda realmente.

     

    Saludo y muchas felicidades.


    http://electronica-pic.blogspot.com

    lunes, 25 de abril de 2011 4:49
  • ya se como hacer para enviar mas de 1 byte la mande 1000 bytes gracias por todo el tiempo dedicado metaconta

    te mando el codigo mas basico vale? por que hice una prueva y me salio de suerte jejeje

    me tocaria marcar todo tus post  jejeje pero no cerremos el tema ya que es un codigo es diferente al que yo usaba ahorra tengo que darle de nuevo el path  para escojer lo que yo quiero

     

    Dim fileContents As Byte()
    
    
        fileContents = My.Computer.FileSystem.ReadAllBytes("D:\armprg.bin")
    
        For i = 0 To fileContents.GetUpperBound(0)
         
        RS232.Write(fileContents, i, 1)
    
        Next

     

    lunes, 25 de abril de 2011 5:17
  • Buenas:

    No se cerrará el tema aunque las marques en verde.

    http://www.developerfusion.com/tools/convert/vb-to-csharp/

    En C# parece que es así:

     

    byte[] fileContents = null;
    fileContents = My.Computer.FileSystem.ReadAllBytes("D:\\myhackeeprom.bin");
    for (i = 0; i <= fileContents.GetUpperBound(0); i++) {
    	RS232.Write(fileContents, i, 1);
    }
    
    

    Lo tendré que analizar a fondo para poder hacer  lo que lograste hacer.

     


     


    'Tienes una matriz o array de byte que está nulo.
    Dim fileContents As Byte()

    'Parece que creas un objeto, creo que no porque en C# le falta el "new". Lee todos los bytes del archivo.bin
    fileContents = My.Computer.FileSystem.ReadAllBytes("D:\armprg.bin")

    'El for recorre el contenido del archivo...
    For i = 0 To fileContents.GetUpperBound(0)
    ' ...y cada byte lo envía al puerto serie. 
    RS232.Write(fileContents, i, 1)

    Next

     

    Ya me  lo explicarás cuando puedas. Si me sale bien, me animo hacer el programam para cargar PIC y EEPROM.

    Es el post más grande que he hecho.


    http://electronica-pic.blogspot.com


    lunes, 25 de abril de 2011 5:27

  • 'Tienes una matriz o array de byte que está nulo.
    Dim fileContents As Byte()

    'Parece que creas un objeto, creo que no porque en C# le falta el "new". Lee todos los bytes del archivo.bin
    fileContents = My.Computer.FileSystem.ReadAllBytes("D:\armprg.bin")

    'El for recorre el contenido del archivo...
    For i = 0 To fileContents.GetUpperBound(0)
    ' ...y cada byte lo envía al puerto serie. 
    RS232.Write(fileContents, i, 1)

    Next

    si parece que tu esplicacion es la correcta

    ya probe con otra eeprom que tenia guardada y funciona de maravilla solo hay que cambiar la uvicacion del archivo y funciona genial

    huy si en verdad es un post gigante jejeje

    si estoy seguro que puedes hacer un programa para grabarlas pero por lo que vi en tu blog sabes mucho

    lunes, 25 de abril de 2011 5:54
  • Buenas:

    Programación no se mucho. Estoy en un curso de Java hasta las narices del tema sobre Herencias y Polimorfismos.

    Cuando puedas y si  lo deseas, me evías por e-mail o lo explicas por aquí paso a paso que primero lo intentaré hacer todo.

    1. Tener un textBox y un Button en el Form principal.

    2. Si pulsas el botón, buscará el archivo.bin encualquier parte del PC, de paso, se muestra en el textBox la ubicación del archivo.
      Cargar en memoria el archivo.bin.

    3. Cargar en otros 2 textBox los datos del interior del archivo. Uno en hexadecimal y el otro en ASCII como tu foto2.

    4. El archivo.bin cargado en memoria, con otro botón, abre el SerialPort1 y envía el archivo por puerto serie a la EEPROM.

    5. (Opcional) Usar la barra ProgressBar (Ver vídeo) en el momento de la transferencia del archivo.bin hacia la EEPROM.

     

    Gracias a ti, me está animando cada vez más sobre grabar la EEPROM y PIC. Eso si, los programas lo haré en los tres lenguajes de Visual Studio.

    Esta persona tiene mucha experiencia sobre temas de envío de datos por puerto serie. Por ahora seguiré sus sugerencias.

    http://www.winpic800.com//index.php?option=com_joomlaboard&Itemid=41&func=view&id=1151&catid=7

    ¿Tienes tu hardware graba EEPROM hecho?

    ¿Qué tipos de EEPROM son?

    Saludo.


    http://electronica-pic.blogspot.com
    lunes, 25 de abril de 2011 6:21
  •  

    Hola de nuevo:

    VC#:

    1. Tener un textBox y un Button en el Form principal.

     

     

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    namespace EEPROM_Prueba
    {
     public partial class Form1 : Form
     {
     public Form1()
     {
     InitializeComponent();
     }
    
     private void button_buscar_archivo_Click(object sender, EventArgs e)
     {
     if (openFileDialog1.ShowDialog() == DialogResult.OK)
     {
     textBox_ubicacion_archivo.Text = openFileDialog1.FileName.ToString();
     }
     }
     }
    }
    
    
    Mejor lo hago poco a poco en Word, ya te lo pasaré a PDF la continuación. primero lo hago a C#, luego a VB .net.

     



    Edito:

    Me da la sensación que me funciona, ya puedo enviar datos binarios al puerto serie. Código compleo.

     

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    using System.IO; // No olvidar.
    using System.IO.Ports;
    
    namespace EEPROM_Prueba
    {
     public partial class Form1 : Form
     {
     public Form1()
     {
      InitializeComponent();
      // Abrir puerto mientra se ejecute la aplicación
      if (!serialPort1.IsOpen)
      {
      try
      {
       serialPort1.Open();
      }
      catch (System.Exception ex)
      {
       MessageBox.Show(ex.ToString());
      }
      }
     }
    
     private void button_buscar_archivo_Click(object sender, EventArgs e)
     {
      // Encuantro un archivo...
      if (openFileDialog1.ShowDialog() == DialogResult.OK)
      {
      textBox_ubicacion_archivo.Text = openFileDialog1.FileName.ToString();
      }
    
      // ...inmediatamente lo lee en byte en el textBox_hex.
      Cursor cur = this.Cursor;
      this.Cursor = Cursors.WaitCursor;
    
      //
      int b;
      FileStream fs = new FileStream(textBox_ubicacion_archivo.Text, FileMode.Open, FileAccess.Read);
      StringBuilder sb = new StringBuilder();
    
      while ((b = fs.ReadByte()) != -1) sb.Append(string.Format("{0:X02} ", b));
      fs.Close();
    
      textBox_hex.Text = sb.ToString();
      // textBox_hex.Font = new Font("Courier New", 10);
      // textBox_hex.ScrollBars = ScrollBars.Vertical;
      textBox_hex.SelectionStart = 0;
    
      //
      this.Cursor = cur;
    
     }
    
     private void button_Grabar_Click(object sender, EventArgs e)
     {
      byte[] file = null;
      file = File.ReadAllBytes(textBox_ubicacion_archivo.Text);
      for (int i = 0; i <= file.GetUpperBound(0); i++)
      {
      serialPort1.Write(file, i, 1);
      }
    
    
     }
     }
    }
    
    

     

    Cuando lo pula bien, lo paso a VB net y VC++.

    Ahora toca leer tu EEPROM con un botón "Leer EEPROM" por el puerto serie y que te lo muestre en pantalla.

    Así que tendrás que modificar una cosa.

    El puerto serie preparado para ser leído, cada bytes que lee lo guarda en memoria, luego lo pasa al textBox directamente. A parte de eso, tiene la posibilidad en "Guardar como..." guardar el archivo en .bin o en .hex como hace www.ic-prog.com o www.winpic800.com.

     

     

    He enviado de puerto a puerto serie unos 75 MB de un archivo.exe. Tarda mucho si es de 9600 baudios. Es bueno poner 3 cossa.

    1. El progressBar o barra de estado que te dice en persentaje cuanto te falta para escribir a la EEPROM.
    2. Un label1 para decir los bytes enviados.
    3. Un botón que puedas cancelar la operación en cualquier momento cuando estás enviando el archivo binario. Si es grande, la única manera de pararlo es matando el proceso.

    ...........


    Ahora si que me animaste a continuar lo de grabar PIC y EEPROM con el TE20x.
    lunes, 25 de abril de 2011 7:39
  • por lo que veo te fue super con los envios como ya terminaste el codigo en vb.net o 2010
    tus eeprom solo admiten 9600 baudios o esa es la configuracion que prefieres?ya grabaste alguna eeprom?  con tu software lo testeaste?


    • Editado smithjhon viernes, 29 de abril de 2011 0:54
    martes, 26 de abril de 2011 1:03
  • Hola:

    No he grabado EEPROM, tengo tipos de 24LCxx para grabarlo con le TE20x.

    1. ¿Sabes hacer como leer la EEPROM?
    2. ¿Sabes borrar la EEPROM con éxito?

    Saludo.

    PD: He logrado lo del progressBar, me falta que se vea los bytes cuando es transferido, y la cantidad en porcentaje enviado.


    http://electronica-pic.blogspot.com
    martes, 26 de abril de 2011 6:55
  • si claro dime cual exactamente

    martes, 26 de abril de 2011 13:05
  • Buenas:

    La familia 24LCxx, concretamente para probar tengo el 24LC16B.

    Quiero saber los baudios adecuados y demás datos del puerto serie.

    Puedes poner los códigos en VB .net, ya me encargaré de adaptarlo al C# que es el que más entiendo y uso.

    Me falta probar si realmente si se graba la EEPROM con el archivo .hex que tengo. Ahora para probarlo quiero aprener a leerlo y que se muestren los datos en el textBox, también quiero borrarlo la EEPROM.

    He encontrado cositas, pero no me ayudan aprogramarlo.
    http://www.comunidadelectronicos.com/proyectos/eeprom.htm

    Muchas gracias por todo tu tiempo.


    http://electronica-pic.blogspot.com

    martes, 26 de abril de 2011 21:36
  • intentastes esto:

    pare leer usar el byte 01

    para escribir el byte 00

    siempre tienes que usar el 0A

    el sector es de escrtura 000-hasta 7FF creo

    entonces para escribir intenta algo asi primero 0A+000000+00+elhex o el bin de la eeprom

    cuantos euros cuesta tu eeprom? si yo la compro te doy exacto lo que quieras pero es que no tengo una de esas aca para hacer pruevas me toca comprarla

    casi siempre borras con ff o con 00

    viernes, 29 de abril de 2011 0:51
  • Hola:

    Por lo que me cuentas, en cada EEPROM hay que meterle una función epecífica. Esta EEPROM cuesta depende donde lo compres. En España suele ser más caro de lo que te pone en páginas Web.

    http://es.farnell.com/microchip/24lc16b-i-p/ic-eeprom-serial-16k-24lc16-dip8/dp/9757953?in_merch=true&MER=i-9b10-00001460

    Excepto si lo compras en la propia Web.

    ¿Para hacer esto 0A+000000+00+el hex tienes que ponerlo en un for y dentro de ese for otro for?

    Ejemplo:

    using System;
    
     
    
    namespace BuclesAnidados
    
    {
    
      class BuclesAnidadosApp
    
      {
    
        static void Main()
    
        {
    
          for (int i=1; i<=3; i++)
    
          {
    
            Console.WriteLine("Factura número {0}", i);
    
            Console.WriteLine("Detalles de la factura");
    
     
    
            for (int j=1; j<=3; j++)
    
            {
    
              Console.WriteLine("  Línea de detalle {0}", j);
    
            }
    
     
    
            Console.WriteLine();
    
          }
    
     
    
          string a=Console.ReadLine();
    
        }
    
      }
    
    }
    

     

    ¿Cómo sabes esto de abajo?

    pare leer usar el byte 01

    para escribir el byte 00

     

    Graicas por la ayuda. Compraré más, hace tiempo que no compro y debe haber cambiado de precios. te espero cuando puedas respuestas, gracias de nuevo hasta ahora que me estás ayudando.

    Saludo.


    http://electronica-pic.blogspot.com
    viernes, 29 de abril de 2011 7:39
  • hoy voy a comprar unas de estas para hacer la pruevas, a mi me funciono ya envie la epprom. era como en la foto que salen arriba con el pc y el envio .  intentaste?
    viernes, 29 de abril de 2011 12:38
  • Hola:

    ¿Las EEPROM esas son caras?

    Estoy en ello, aún no he hecho el truco 0A+000000+00+el hex. Sigo investigando. ;) Lo que no se es como sabes que para leer usar el byte 01 y para escribier el byte 00. Sigo probando.

    Si te sale, puedes poner el código aquí, si lo prefieres por correo electrónico en VB o el lenguaje que se te se.

    Saludo.


    http://electronica-pic.blogspot.com
    viernes, 29 de abril de 2011 13:55
  • ya salio ? por que no pude comprar la eeprom no me alcanzo el tiempo, estas usando la de 8 pines?

    por curiosidad que quieres  grabar?

    o quieres es aprender para hacer un software  que grabe,borre,lea, las eeprom.....

     

     

    viernes, 29 de abril de 2011 22:54
  • Hola:

    No meha salido, sigo investigando, lo que a partir de fin de semana tengo que estudiar Java que tengo dos autoevaluaciones y exámen práctico. Ahí nunca daremos puertos series. JEejee.

    Quiero grabar el 24LC16b que es el que tengo actualmente en mis manos y espero que funcione físicamente. Más aún hacer un software sencillo que grabe, que lea y borre las EEPROM. No encuentro mucha información de este tipo y paraces que dominas bien el tema.

    Saludo.


    http://electronica-pic.blogspot.com
    viernes, 29 de abril de 2011 23:47
  • hola no te a salido por que la informacion que te di le faltan mas cosas esta viendo el pdf mas detenidamente y hay que agregar 8 o 16 bytes mas

    este eeprom es para controles remoto o para que la usas ?

    al final cual eeprom compro 24lc16b? de 8 pines verdad?

     

    sábado, 30 de abril de 2011 3:13
  • Hola:

    Las EEPROM que suelo usar son las que aparecen en esta PRIMERA lista de abajo:

    I²C™ Serial EEPROM Family
    http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2697

    Normalemnte usaba antes bajo I2C con microcontroladores PIC el 24LC256, ahora tengo el 24LC16B. Es lo mismo pero de diferente capacidad de almacenamiento.

    1. Las EEPROM suelo usar para almacenar textos largos para letreros.
    2. Guardar datos también de textos más cortos para LCD 16x2.
    3. Para grabar datos de esa mismo EEPROM para un Televisor, se usa mucho esas EEPROM, 24LC16B son equivalentes a 24C16.
    4. Grabar datos de cofiguración para PIC. Guada parámetros más grande que la propia EEPROM interna del PIC.
    5. Si te haz preguntado, al poner el cable sin los Driver instalado todavía, un motitor oor VGA, el PC sabe la marca y modelo. Se usa EEPROM y es un texto que se almacene en él. Ya sabes, tu monitor que estás usando dentro de la placa tiene una EERPOM. Puedes cambiar los textos. Si le quitas la EEPROM, si te reconoce el monitor pero dice desconocido.
    6. También con EEPROM más grande que ya aprenderé con el tiempo, leer o modificar ROM de juegos que tengo por ahí.
    7. Un largo etc.

    Si, las EEPROM de este tipo que dijo con el 8 pines.

     

    Saludo.


    http://electronica-pic.blogspot.com
    sábado, 30 de abril de 2011 4:18
  • ya hoy fuy por  la eeprom unas preguntas peronececito mas cosas

    1 que tengo que comprar ,resistencias,diodos,conectores,db9 o lpt o usb cual tenes voz ,

    2 esta eeprom tiene un oscilador interno?

    3 tu sabes como armar la targeja para enviar la informacion a la eeprom sabes que pines conectar?

     

    martes, 3 de mayo de 2011 2:07
  • ya hoy fuy por  la eeprom unas preguntas peronececito mas cosas

    1 que tengo que comprar ,resistencias,diodos,conectores,db9 o lpt o usb cual tenes voz ,

    Lista de componentes:

    CN1

    Conector hembra de 9 pines.
    C2 Condensador de 100uf/16v.
    C3 Condensador de 22uf/16v.
    D2 Diodo Zener 5v1.
    D3, D4, D5, D7 Diodo 1N4148 (también ).
    D6 Diodo Zener8v2.
    Q2,Q1 Transistor BC307.
    R1 Resistencia 10K.
    R2 Resistencia 1K5.
    R3 Resistencia 100K.
    U1 Zócalo de 18 pines.
    U2 Zócalo de 8 pines.

     

    2 esta eeprom tiene un oscilador interno?

    No. La serie que digo de 8 pines no tiene ningún tipo de oscilador interno como los PIC, que algunos tampoco lo incorporan en el interior. Estas EEPROM no usan osciladores ni internos ni externos.

    3 tu sabes como armar la targeja para enviar la informacion a la eeprom sabes que pines conectar?

    Aquí hay un enlace con más información detallada.

    http://geocities.ws/allcircuits/te20.html

    Aún así puedes comprarlo en casi cualquier local de electrónica el grabado TE20.



    http://electronica-pic.blogspot.com
    martes, 3 de mayo de 2011 6:56
  • />
    miércoles, 4 de mayo de 2011 15:36
  • como puedo remplazar la resistencia de 100k no la encontre y como armo todo para que terminemos hoy este proyecto


    miércoles, 4 de mayo de 2011 21:10
  • Hola:

    Estás preparado. Hoy me trancaste reparando 3 portátiles a nivel de hardware y software durante todo este día. No tengo tiempo hoy, por la noche a lo mejor.

    En cuanto a la resistencia de 100K, puedes conseguir 2 resistencias de 50K y lo colocas en serie para que se sume 50K + 50K = 100K. También puedes conseguir dos resistencias de 200K, lo pones en paralelo y obtienes 100K. Todo ello aplicando la Ley de Ohm. No te preocupes con la electrónica que esta parte si es fácil. Para que lo tengas claro, te haré un esquema de ello y no te pierdas.

     

     

    Saludo.


    http://electronica-pic.blogspot.com
    jueves, 5 de mayo de 2011 8:12
  • hola necesitaria saber cuales pines se usan creo que son el 2,3,4,8 en la eeprom y en db9 ,5,4,3 ,7,8

    los condensadores y diodos tienen unas flechas verdad en diodos la flecha es la parte negra? y en los condensadores la parte blanca? las resistencias van en cuacuer posicion sin+/- verdad?

    o si me dices que suelde elpin 2 con una resistencia x con un diodo x al pin x del db9 seria mas facil

     

    jueves, 5 de mayo de 2011 12:03
  • buenas:

    Diodo 1N4148

    http://www.eleinmec.com/figures/029_02.gif

    Diodo Zener

    http://www.ingeniaste.com/ingenias/telecom/imagen/Zener_diode_symbol_svg.png

     

    Saludo.


    http://electronica-pic.blogspot.com
    jueves, 5 de mayo de 2011 21:24
  • buenas y como va todo el esquema para soldarlo decime que pines de la eeprom con cuales pines del db9 y con cuales diodos, trans, etc


    deveriamos basarnos en este que se ve mas facil o no?

    http://www.comunidadelectronicos.com/proyectos/eeprom.htm


    jueves, 5 de mayo de 2011 22:08
  • Hola:

    No se que le pasó a mi ordenador que salió en Windows 7 este mensaje justo antes de escoger cuenta de usuario y no me dejaba iniciar la sesión. "No encuentra el archivo especificado", perdí código fuente de C#, lo haré de nuevo con la ayuda por aquí. Por eso tardé en entrar aquí.

    Si vas a montar el primer esquema te lo dice todo. ¿Cuál es el problema?

    El pin 1 de la EEPROM se conecta junto con el PIN 2, 3, 4 y el 7 hacia masa.

    Para que lo tengas claro.

    GND = Ground = masa 

    Saludo.

    PD: Tengo que volver hacer otra vez el programa desde cero.


    http://electronica-pic.blogspot.com
    lunes, 9 de mayo de 2011 7:46
  • seria mas facil si me dices los diodos ,resistencias , condensaodres, pines todo por aparte ,algo como esto

    el pin 4 del db9 con esta resistencia + este diodo+este diodo+este condensador, y va hacer contacto con el pin 1 de la eeprom

    el pin 5 del bd9 con este diodo etc ..... algo asi seria mas facil saludos

    viernes, 13 de mayo de 2011 12:52
  • Hola:

    Tienes varios diodos, D5, D6 y D7 que son más pequeños que los D1, D2 y D3 que esos zon Diosdos Zener. Fíjate abajo en la imagen, es un diodo naranja con una raya negra.

    La EEPROM 24LC16B.

     

    ¿Ves el punto bien redondo abajo al lado de un pin? Significa el pin 1. Lo que está al lado en media luna se llama muesca. Dentro de un rato te lo indico mejor con imágenes.


    http://electronica-pic.blogspot.com
    sábado, 14 de mayo de 2011 9:29
  • el c1,d1,d2,d3, van a gnd todos y ademas van conectados al pin 5 del db9 y al pin 1234 de la eeprom verdad?
    sábado, 14 de mayo de 2011 12:47
  • Hola:

    El C1 tiene polaridad y debes tenerlo en cuenta porque si lo pones al revés te va a explotar en la cara y no te gustará. Suena como un petardo, puede ser pelogroso para los ojos. Si te fijas, tiene una pata más corta que la otra, esa es el negativo, el GND.

     

    El D1, D2 y D3 van conectados a GND.

    El pin 1, 2, 3 y 4 de la EEPROM 24LC16B van también a GND.

    Al final GND se conecta al pin 5 del db9 tal como indicas arriba.

     

    ¿Más dudas?


    http://electronica-pic.blogspot.com
    sábado, 14 de mayo de 2011 13:15
  • si estoy soldando los coponentes en este momento
    sábado, 14 de mayo de 2011 13:44
  • los diodos d1d2d3 el lado + va en el gnd?
    sábado, 14 de mayo de 2011 14:01
  • Esos diodos son diodos zener.

    Fíjate en el dibujo, se conecta así.


    http://electronica-pic.blogspot.com
    sábado, 14 de mayo de 2011 14:09
  • el d3 va con el pin8 del db9   y el pin 5 de la eeprom?

    la r1 va con el db9 pin 4 y una union o puente con el d3 verdad?

    la resistencia lleva alguna polaridad?
    la r1 es la de color dorado,rojo,verde,cafe?

    o es la que tiene cafe,negro,naranga,dorado?


    sábado, 14 de mayo de 2011 14:44
  • el d3 va con el pin8 del db9   y el pin 5 de la eeprom?

    Así es.

    la r1 va con el db9 pin 4 y una union o puente con el d3 verdad?

    Sí.

    la resistencia lleva alguna polaridad?

    Las resistencias no tiene polaridad. Los condensadores electrolítico si, los diodos si tienen también.

    la r1 es la de color dorado,rojo,verde,cafe?

    En Marrón, Verde, Rojo, Dorado. Puedes leerlo por aquí.
    http://www.electronica.com.ve/herra/resistencia/resistencia.html

    o es la que tiene cafe,negro,naranga,dorado?

    Café no, Marrón.


    Ánimos.

    http://electronica-pic.blogspot.com
    sábado, 14 de mayo de 2011 15:17
  • ya esta listo d3,con r1

    ya esta listo d2 con r2

     

    d5,d6,d7 hacen contacto  todos ? y despues hacen contacto con d4 y r3?  que es el d4 ? diodo o condensador o que?

    c1 y d1 terminan haciendo contacto con d4?

    1-edicion ya esta casi todo el d4 si es un led no lo tengo y creo que no lo quiero instalar

    2-solo me falta instalar el c2 es el que dice 100uf o el que dice 22uf y quedamos listos

    3- la resistencia r3 de 100 es la que va con el led , si no instalo el led no nececito la resistencia verdad?

    sábado, 14 de mayo de 2011 15:54
  • ya esta listo d3,con r1

    ya esta listo d2 con r2

    OK.

    d5,d6,d7 hacen contacto  todos ?

    Sí.

    y despues hacen contacto con d4 y r3?  que es el d4 ? diodo o condensador o que?

    Hace contacto con R3. En el otro extremo de R3, está el D4. D4 es un diodo Led, el típico Led rojo o otro color que vez en cualquier aparato, por ejemplo, cuando el TV está apagado y muestra un piloto rojo por donde apuntas el mando a distancia.

    c1 y d1 terminan haciendo contacto con d4?

    Pues sí.

    1-edicion ya esta casi todo el d4 si es un led no lo tengo y creo que no lo quiero instalar

    2-solo me falta instalar el c2 es el que dice 100uf o el que dice 22uf y quedamos listos

    3- la resistencia r3 de 100 es la que va con el led , si no instalo el led no nececito la resistencia verdad?

    Mejor prueba todo, este circuito no lo he vist funcionar en tiempo real.



    http://electronica-pic.blogspot.com
    sábado, 14 de mayo de 2011 21:41
  • el c2 lleva alguna polaridad

    el c2 es el de 100uf o el de 22uf , me falta esta informacion para terminar y poder probarlo

    tienes que hacer una funcion para calcular el crc16 de la eeprom que vas a enviar esto se hace con un polinomio y con unas constantes el mas comun creo que es el crc16,crc16modbus,crcbt-chip,crc16x25,crc16moden,crc32

    y tienes que hacer una funcion para dividir el la eeprom en segmentos por ejemplo si la eeprom

    es de 200 kb la tenemos que dividir en 2 partes o 4 partes o 6 partes o 10 partes

    lunes, 16 de mayo de 2011 22:55
  • el c2 lleva alguna polaridad

    Según en el esquema, tiene polaridad. Hay condensadores que los tiene y otros no.

    el c2 es el de 100uf o el de 22uf , me falta esta informacion para terminar y poder probarlo

    En el esquema aparece del C2 0.1uF. Vigila eso.

    tienes que hacer una funcion para calcular el crc16 de la eeprom que vas a enviar esto se hace con un polinomio y con unas constantes el mas comun creo que es el crc16,crc16modbus,crcbt-chip,crc16x25,crc16moden,crc32

    y tienes que hacer una funcion para dividir el la eeprom en segmentos por ejemplo si la eeprom

    es de 200 kb la tenemos que dividir en 2 partes o 4 partes o 6 partes o 10 partes

    Suerte.

    http://electronica-pic.blogspot.com
    martes, 17 de mayo de 2011 22:17
  • Hola:

    ¿Cómo te fue con el proyecto?

    Un saludo.


    http://electronica-pic.blogspot.com

    domingo, 23 de septiembre de 2012 16:04
  • Si sgues vivo, dime como te fue el proyecto. ;)

    AQUÍ y ahora.

    Saludos.


    http://electronica-pic.blogspot.com

    jueves, 16 de marzo de 2017 10:29