Keresés

Új hozzászólás Aktív témák

  • don_peter

    senior tag

    válasz lord.lakli #7264 üzenetére

    A teljes fáj letöltést így csinálom:
    // Teljes memória letöltése (8MB)
    private void button13_Click(object sender, EventArgs e)
    {
    uint i = 0, Count = 1024 * 1024 * 8;
    //byte[] FlashRom = new byte[1024*1024*8];
    byte[] buffer = new byte[1];
    serialPort1.Write("f"); // Küldünk egy parancsot (rom letöltési parancs)
    string folderName = @"c:\DPTPFolder";
    //string pathString = System.IO.Path.Combine(folderName, "SubFolder"); // További könyvtár
    System.IO.Directory.CreateDirectory(folderName);
    string fileName = "dptpsmfdcartridge_" + DateTime.Now.ToString("yMd_Hm") + ".bin";
    string pathString = System.IO.Path.Combine(folderName, fileName);

    if (!System.IO.File.Exists(pathString))
    {
    using (System.IO.FileStream fs = System.IO.File.Create(pathString))
    {
    while (true)
    {
    i++;
    serialPort1.Read(buffer, 0, 1); // Várakozunk hardver adat küldésig
    fs.WriteByte(buffer[0]);
    if (i % 64 == 0)
    {
    serialPort1.Write("0");
    i = 0;
    Count = Count - 64;
    }
    if (Count <= 0)
    {
    break;
    }
    }
    }
    }
    else
    {
    textBox1.Text += "Hiba a fájl kiírásában...(lehet, hogy létezik a fájl)" + "\r\n";
    return;
    }
    textBox1.Text += "\r\n" + "Letöltés elkészült.\r\n";
    textBox1.Text += "File name: " + folderName + "/" + fileName + "\r\n";
    }

    A memória másolásokat meg pontosan úgy mint feljebb mutattam.
    /// Így is próbáltam
    var osszefuzott = new byte[DataLenght]; // DataLenght értéke a 4 file mérete
    rows.CopyTo(osszefuzott, 0);
    rows2.CopyTo(osszefuzott, rows.Length);
    rows3.CopyTo(osszefuzott, rows2.Length);
    rows4.CopyTo(osszefuzott, rows3.Length);
    // és így is:
    byte[] rv = new byte[a1.Length + a2.Length + a3.Length+ a4.Length];
    System.Buffer.BlockCopy(a1, 0, rv, 0, a1.Length);
    System.Buffer.BlockCopy(a2, 0, rv, a1.Length, a2.Length);
    System.Buffer.BlockCopy(a3, 0, rv, a1.Length + a2.Length, a3.Length);
    System.Buffer.BlockCopy(a4, 0, rv, a1.Length + a2.Length + a3.Length, a4.Length);

    A fájlok betöltése pedig a klasszikus módon történik: (pl.: a 4-es fájl)
    OpenFileDialog open4 = new OpenFileDialog();
    open4.Title = "Open file";
    open4.Filter = "Bin File (*.bin)|*.bin|MD File (*.md)|*.md|SMD File (*.smd)|*.smd|All Files (*.*)|*.*";
    open4.FilterIndex = 2;

    if (open4.ShowDialog() == DialogResult.OK)
    {
    rows4 = System.IO.File.ReadAllBytes(open4.FileName);
    }

    A teljes kódot nem linkelem, mert több ezer soros, biztosan meg lehetne írni a feléből, de nem vagyok nagy mágus, inkább hardverprogramozással foglalkozom, ez csak szükséges +.

    [ Szerkesztve ]

    ----== Neo Geo és Arcade Fórum : www.neo-geo.hu ==----

Új hozzászólás Aktív témák