diff --git a/Arduino/libraries/Arduino_FlashNBurn/Arduino_FlashNBurn.ino b/Arduino/libraries/Arduino_FlashNBurn/Arduino_FlashNBurn.ino new file mode 100644 index 0000000..a5d422a --- /dev/null +++ b/Arduino/libraries/Arduino_FlashNBurn/Arduino_FlashNBurn.ino @@ -0,0 +1,464 @@ +//#################################################################################################################################### +//#################################################################################################################################### +//#################################################################################################################################### +// +// EEPROM Programmer - code for an Arduino Mega 2560 - Written by BM Devs (Bouletmarc) +// +// This software presents a 9600-8N1 serial port. It is made to Read/Write Data from +// EEPROM directly with the Arduino! It Doesnt need any extrenal equipement except +// Wires and the Chip itself. Default Serial Timeout is set to 50ms to read the received +// bytes. This program is made to read 28pins Chips such as (27cXXX, 29cXXX, 27sf512). +// +// For more informations visit : https://www.github.com/bouletmarc/Arduino_FlashNBurn/ +// +// +// +// +// +//--------------------------------------------------------------------------------------------------------------------------------------------------------- +// COMMANDS : | OUTPUTS : | DESC : +//--------------------------------------------------------------------------------------------------------------------------------------------------------- +// R + 2 + "MSB" + "LSB" | "B1" + "B2" + "...B256" | Reads 256 bytes of data from the EEPROM at address "MSB" + "LSB" ... Only for No-SST Chip +// R + 5 + "MSB" + "LSB" | "B1" + "B2" + "...B256" | Reads 256 bytes of data from the EEPROM at address "MSB" + "LSB" ... Only for SST Chip +// W + 2 + "MSB" + "LSB" + "B1" + "B2" + "..." | "O" | Writes 256 bytes of data to the EEPROM at address "MSB" + "LSB", This output 'O' (0x79) for telling 'OK' ... Only for No-SST Chip +// W + 5 + "MSB" + "LSB" + "B1" + "B2" + "..." | "O" | Writes 256 bytes of data to the EEPROM at address "MSB" + "LSB", This output 'O' (0x79) for telling 'OK' ... Only for SST Chip +// E + 5 | "O" | Erase all the data on the SST Chip +// V + V | "V1" + "V2" + "V3" | Prints the version bytes (Ex: V1.2.5 = 0x01, 0x02, 0x05) +//--------------------------------------------------------------------------------------------------------------------------------------------------------- +// +// *** You can directly send the bytes that represent the char *** +// *** R = DEC 82 // HEX 0x52 *** +// *** V = DEC 86 // HEX 0x56 *** +// *** W = DEC 87 // HEX 0x57 *** +// +//--------------------------------------------------------------------------------------------------------------------------------------------------------- +// +// +// +// +// +// Exemple of Usage : +// [0x86 + 0x86] = Read The Version ---> (0x86 = V | 0x86 = V) +// [0x52 + 0x05 + 0x0F + 0x45] = Read 256 bytes from SST Chip at 0x0F45 ---> (0x52 = R | 0x05 = SST | 0x0F = "MSB" | 0x45 = "LSB") +// [0x57 + 0x02 + 0x53 + 0xD4 + 0x01 + 0x02 + "..."] = Write 256 bytes from No-SST Chip at 0x53D4 ---> (0x57 = W | 0x02 = No-SST | 0x0F = "MSB" | 0x45 = "LSB" | "++ 256 bytes ++") +// +// +// +// +// +// +// +//#################################################################################################################################### +//#################################################################################################################################### +//#################################################################################################################################### +//#################################################################################################################################### +//#################################################################################################################################### +//#################################################################################################################################### +//#################################################################################################################################### + + + + + + +int SerialTimeout = 5; + + +#include + +byte VerisonBytes[] = { + 1, 1, 5 +}; + +unsigned int chipType; +byte g_cmd[260]; +byte buffer256[256]; + +#define CHIPOTHERS 2 +#define CHIP27SF512 5 + +//#define PIN_A14 25 +#define PIN_A14 22 +#define PIN_A12 24 +#define PIN_A7 26 +#define PIN_A6 28 +#define PIN_A5 30 +#define PIN_A4 32 +#define PIN_A3 34 +#define PIN_A2 36 +#define PIN_A1 38 +#define PIN_A0 40 +#define PIN_D0 42 +#define PIN_D1 44 +#define PIN_D2 46 + +//#define PIN_nWE 22 +#define PIN_nWE 25 +#define PIN_A13 27 +#define PIN_A8 29 +#define PIN_A9 31 +#define PIN_A11 33 +#define PIN_nOE 35 +#define PIN_A10 37 +#define PIN_nCE 39 +#define PIN_D7 41 +#define PIN_D6 43 +#define PIN_D5 45 +#define PIN_D4 47 +#define PIN_D3 49 + +//#################################################################################################################################### +//#################################################################################################################################### +//#################################################################################################################################### + +void setup() +{ + chipType = 2; + + Serial.begin(9600); + Serial.setTimeout(SerialTimeout); + //Serial.begin(115200); + //Serial.begin(921600); + + // Define address lines (outputs) + pinMode(PIN_A0, OUTPUT); + pinMode(PIN_A1, OUTPUT); + pinMode(PIN_A2, OUTPUT); + pinMode(PIN_A3, OUTPUT); + pinMode(PIN_A4, OUTPUT); + pinMode(PIN_A5, OUTPUT); + pinMode(PIN_A6, OUTPUT); + pinMode(PIN_A7, OUTPUT); + pinMode(PIN_A8, OUTPUT); + pinMode(PIN_A9, OUTPUT); + pinMode(PIN_A10, OUTPUT); + pinMode(PIN_A11, OUTPUT); + pinMode(PIN_A12, OUTPUT); + pinMode(PIN_A13, OUTPUT); + pinMode(PIN_A14, OUTPUT); + + // Define control lines (outputs) + pinMode(PIN_nCE, OUTPUT); //digitalWrite(PIN_nCE, LOW); + pinMode(PIN_nOE, OUTPUT); //digitalWrite(PIN_nOE, LOW); + pinMode(PIN_nWE, OUTPUT); //digitalWrite(PIN_nWE, LOW); +} + +//#################################################################################################################################### +//#################################################################################################################################### +//#################################################################################################################################### + +void loop() +{ + while (true) + { + //Get Commands + ReadString(); + + //################################ + //################################ + //Send Version + if (g_cmd[0] == 'V' & g_cmd[1] == 'V') + { + Serial.write(VerisonBytes, sizeof(VerisonBytes)); + } + + //################################ + //################################ + //Read Chips + if (g_cmd[0] == 'R') + { + //Set Pinout + SetDataLinesAsInputs(); + set_ce(LOW); //enable chip select + set_oe(LOW); //enable output + set_we(HIGH); //disable write + delay(5); + + //Set Chip Type + chipType = g_cmd[1]; + + //Get/Reset Address + long addr = (g_cmd[2] * 256) + g_cmd[3]; + addr = ResetAddress(addr); + + //Read + ReadIntoBuffer(addr); + //Send + Serial.write(buffer256, sizeof(buffer256)); + + // Reset Pinout + set_ce(HIGH); //disable chip select + set_oe(HIGH); //disable output + } + + //################################ + //################################ + //Write + if (g_cmd[0] == 'W') + { + //Set Pinout + set_oe(HIGH); //disable output + set_we(HIGH); //disables write + SetDataLinesAsOutputs(); + delay(5); + + //Set Chip Type + chipType = g_cmd[1]; + + //Get/Reset Address + long addr = (g_cmd[2] * 256) + g_cmd[3]; + addr = ResetAddress(addr); + + //Add the 256bytes to write to the buffer256 + int LoopIndex = 0; + while (LoopIndex < 256) + { + buffer256[LoopIndex] = g_cmd[LoopIndex + 4]; + LoopIndex++; + } + + //Write + WriteBufferToEEPROM(addr); + //Send 'O' --> for 'OK' + byte EndByte = 79; + Serial.write(EndByte); + + //Reset Pinout + SetDataLinesAsInputs(); + } + + //################################ + //################################ + //Erase SST + if (g_cmd[0] == 'E' & g_cmd[1] == 5) + { + set_ce(HIGH); + set_oe(HIGH); + set_vpp(HIGH); + delay(1); + + //erase pulse + set_ce(LOW); + delay(150); + set_ce(HIGH); + delayMicroseconds(1); + set_vpp(LOW); + delayMicroseconds(1); + + //Send 'O' --> for 'OK' + byte EndByte = 79; + Serial.write(EndByte); + } + //################################ + //################################ + + } +} + +//#################################################################################################################################### +//#################################################################################################################################### +//#################################################################################################################################### + +void ReadString() +{ + int i = 0; + byte c; + + //Reset Array Commands + if (g_cmd[0] != 0) { + for (i = 0; i < sizeof(g_cmd); i++) + { + g_cmd[i] = 0; + } + } + + //Get Serial Commands if Found + if (Serial.available()) + { + Serial.readBytes(g_cmd, sizeof(g_cmd)); + } +} + +//############################################################################## +//############################################################################## +//############################################################################## + +void SetDataLinesAsInputs() +{ + pinMode(PIN_D0, INPUT); + pinMode(PIN_D1, INPUT); + pinMode(PIN_D2, INPUT); + pinMode(PIN_D3, INPUT); + pinMode(PIN_D4, INPUT); + pinMode(PIN_D5, INPUT); + pinMode(PIN_D6, INPUT); + pinMode(PIN_D7, INPUT); +} + +void SetDataLinesAsOutputs() +{ + pinMode(PIN_D0, OUTPUT); + pinMode(PIN_D1, OUTPUT); + pinMode(PIN_D2, OUTPUT); + pinMode(PIN_D3, OUTPUT); + pinMode(PIN_D4, OUTPUT); + pinMode(PIN_D5, OUTPUT); + pinMode(PIN_D6, OUTPUT); + pinMode(PIN_D7, OUTPUT); +} + +void SetAddress(long a) +{ + digitalWrite(PIN_A0, (a&1)?HIGH:LOW ); + digitalWrite(PIN_A1, (a&2)?HIGH:LOW ); + digitalWrite(PIN_A2, (a&4)?HIGH:LOW ); + digitalWrite(PIN_A3, (a&8)?HIGH:LOW ); + digitalWrite(PIN_A4, (a&16)?HIGH:LOW ); + digitalWrite(PIN_A5, (a&32)?HIGH:LOW ); + digitalWrite(PIN_A6, (a&64)?HIGH:LOW ); + digitalWrite(PIN_A7, (a&128)?HIGH:LOW ); + digitalWrite(PIN_A8, (a&256)?HIGH:LOW ); + digitalWrite(PIN_A9, (a&512)?HIGH:LOW ); + digitalWrite(PIN_A10, (a&1024)?HIGH:LOW ); + digitalWrite(PIN_A11, (a&2048)?HIGH:LOW ); + digitalWrite(PIN_A12, (a&4096)?HIGH:LOW ); + digitalWrite(PIN_A13, (a&8192)?HIGH:LOW ); + digitalWrite(PIN_A14, (a&16384)?HIGH:LOW); +} + +void SetData(byte b) +{ + digitalWrite(PIN_D0, (b&1)?HIGH:LOW ); + digitalWrite(PIN_D1, (b&2)?HIGH:LOW ); + digitalWrite(PIN_D2, (b&4)?HIGH:LOW ); + digitalWrite(PIN_D3, (b&8)?HIGH:LOW ); + digitalWrite(PIN_D4, (b&16)?HIGH:LOW ); + digitalWrite(PIN_D5, (b&32)?HIGH:LOW ); + digitalWrite(PIN_D6, (b&64)?HIGH:LOW ); + digitalWrite(PIN_D7, (b&128)?HIGH:LOW); +} + +byte ReadData() +{ + byte b = 0; + + if (digitalRead(PIN_D0) == HIGH) b |= 1; + if (digitalRead(PIN_D1) == HIGH) b |= 2; + if (digitalRead(PIN_D2) == HIGH) b |= 4; + if (digitalRead(PIN_D3) == HIGH) b |= 8; + if (digitalRead(PIN_D4) == HIGH) b |= 16; + if (digitalRead(PIN_D5) == HIGH) b |= 32; + if (digitalRead(PIN_D6) == HIGH) b |= 64; + if (digitalRead(PIN_D7) == HIGH) b |= 128; + + return(b); +} + +// converts one character of a HEX value into its absolute value (nibble) +/*byte HexToVal(byte b) +{ + if (b >= '0' && b <= '9') return(b - '0'); + if (b >= 'A' && b <= 'F') return((b - 'A') + 10); + if (b >= 'a' && b <= 'f') return((b - 'a') + 10); + return(0); +}*/ + +//############################################################################## +//############################################################################## +//############################################################################## +long ResetAddress(long addr) +{ + byte hi, low; + + //get high (MSB) - byte of 16 bit address ... the 27x512 has different address pin wiring + if (chipType == CHIP27SF512) { + hi = (addr >> 8) & 0x3F; + hi |= (addr >> 9) & 0x40; + + //the 27x512 doesn't use WE, instead it's bit A14 + digitalWrite(PIN_nWE, addr & 0x4000 ? HIGH : LOW); + } else { + hi = addr >> 8; + } + + //get low (LSB) - byte of 16 bit address + low = addr & 0xff; + + //Remake to Address + long ToReturn = (hi * 256) + low; + + return ToReturn; +} + +inline void set_we (byte state) +{ + //the 27x512 doesn't have a WE pin + switch (chipType) { + case CHIP27SF512: + break; + default: + digitalWrite(PIN_nWE, state); + } +} + +void set_vpp (byte state) +{ + switch (chipType) { + case CHIP27SF512: + digitalWrite(PIN_nOE, state); + break; + default: + break; + } +} + +inline void set_oe (byte state) +{ + digitalWrite(PIN_nOE, state); +} + +inline void set_ce (byte state) +{ + digitalWrite(PIN_nCE, state); +} + +//############################################################################ + +void WriteBufferToEEPROM(long addr) +{ + for (byte x = 0; x < 256; ++x) + { + SetAddress(addr + x); + SetData(buffer256[x]); + + switch (chipType) { + case CHIP27SF512: + delayMicroseconds(1); + set_ce(LOW); //strobe ce with programming pulse + delayMicroseconds(20); // for 27SF512 (or 100 micro) + set_ce(HIGH); + delayMicroseconds(1); + break; + default: + set_ce(LOW); //enable chip select + delayMicroseconds(1); + set_we(LOW); // enable write + delayMicroseconds(1); + //delay(10); + set_we(HIGH); // disable write + set_ce(HIGH); //disable chip select + break; + } + } +} + +void ReadIntoBuffer(long addr) +{ + for (int x = 0; x < 256; ++x) + { + SetAddress(addr + x); + delayMicroseconds(100); + buffer256[x] = ReadData(); + } +} + diff --git a/Tutorial/ArduinoFlashBurnDiagram.png b/Tutorial/ArduinoFlashBurnDiagram.png new file mode 100644 index 0000000..3abfd46 Binary files /dev/null and b/Tutorial/ArduinoFlashBurnDiagram.png differ diff --git a/Tutorial/Arduino_Windows_GUI.png b/Tutorial/Arduino_Windows_GUI.png new file mode 100644 index 0000000..d0084da Binary files /dev/null and b/Tutorial/Arduino_Windows_GUI.png differ diff --git a/Tutorial/DIY_PCB1.JPG b/Tutorial/DIY_PCB1.JPG new file mode 100644 index 0000000..5b7d2d9 Binary files /dev/null and b/Tutorial/DIY_PCB1.JPG differ diff --git a/Tutorial/DIY_PCB2.JPG b/Tutorial/DIY_PCB2.JPG new file mode 100644 index 0000000..86506dd Binary files /dev/null and b/Tutorial/DIY_PCB2.JPG differ diff --git a/Tutorial/DIY_PCB3.JPG b/Tutorial/DIY_PCB3.JPG new file mode 100644 index 0000000..e021fb6 Binary files /dev/null and b/Tutorial/DIY_PCB3.JPG differ diff --git a/Tutorial/DIY_PCB4.JPG b/Tutorial/DIY_PCB4.JPG new file mode 100644 index 0000000..03440ec Binary files /dev/null and b/Tutorial/DIY_PCB4.JPG differ diff --git a/Tutorial/DIY_PCB5.JPG b/Tutorial/DIY_PCB5.JPG new file mode 100644 index 0000000..a3896b6 Binary files /dev/null and b/Tutorial/DIY_PCB5.JPG differ diff --git a/Windows/BUILD/Arduino Flash&Burn.exe b/Windows/BUILD/Arduino Flash&Burn.exe new file mode 100644 index 0000000..593dc46 Binary files /dev/null and b/Windows/BUILD/Arduino Flash&Burn.exe differ diff --git a/Windows/SOURCE/ArduinoEPROM.sln b/Windows/SOURCE/ArduinoEPROM.sln new file mode 100644 index 0000000..452816a --- /dev/null +++ b/Windows/SOURCE/ArduinoEPROM.sln @@ -0,0 +1,22 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.25420.1 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ArduinoEPROM", "ArduinoEPROM\ArduinoEPROM.csproj", "{D1493044-875F-4EA3-932B-B5422824004C}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {D1493044-875F-4EA3-932B-B5422824004C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D1493044-875F-4EA3-932B-B5422824004C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D1493044-875F-4EA3-932B-B5422824004C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D1493044-875F-4EA3-932B-B5422824004C}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Windows/SOURCE/ArduinoEPROM/App.config b/Windows/SOURCE/ArduinoEPROM/App.config new file mode 100644 index 0000000..343984d --- /dev/null +++ b/Windows/SOURCE/ArduinoEPROM/App.config @@ -0,0 +1,6 @@ + + + + + + diff --git a/Windows/SOURCE/ArduinoEPROM/ArduinoEPROM.csproj b/Windows/SOURCE/ArduinoEPROM/ArduinoEPROM.csproj new file mode 100644 index 0000000..ce170d7 --- /dev/null +++ b/Windows/SOURCE/ArduinoEPROM/ArduinoEPROM.csproj @@ -0,0 +1,98 @@ + + + + + Debug + AnyCPU + {D1493044-875F-4EA3-932B-B5422824004C} + WinExe + Properties + ArduinoEPROM + Arduino Flash&Burn + v3.5 + 512 + true + + + + x86 + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + ArduinoFlashBurn.ico + + + + + + + + + + + + + + + + + Form + + + Form1.cs + + + + + Form1.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + True + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + + + + + \ No newline at end of file diff --git a/Windows/SOURCE/ArduinoEPROM/ArduinoFlashBurn.ico b/Windows/SOURCE/ArduinoEPROM/ArduinoFlashBurn.ico new file mode 100644 index 0000000..b8daecb Binary files /dev/null and b/Windows/SOURCE/ArduinoEPROM/ArduinoFlashBurn.ico differ diff --git a/Windows/SOURCE/ArduinoEPROM/Form1.Designer.cs b/Windows/SOURCE/ArduinoEPROM/Form1.Designer.cs new file mode 100644 index 0000000..beaa4b3 --- /dev/null +++ b/Windows/SOURCE/ArduinoEPROM/Form1.Designer.cs @@ -0,0 +1,466 @@ +namespace ArduinoEPROM +{ + partial class Form1 + { + /// + /// Variable nécessaire au concepteur. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Nettoyage des ressources utilisées. + /// + /// true si les ressources managées doivent être supprimées ; sinon, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Code généré par le Concepteur Windows Form + + /// + /// Méthode requise pour la prise en charge du concepteur - ne modifiez pas + /// le contenu de cette méthode avec l'éditeur de code. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1)); + this.listBox_Chips = new System.Windows.Forms.ListBox(); + this.label1 = new System.Windows.Forms.Label(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.textBox_ChipEnd = new System.Windows.Forms.TextBox(); + this.textBox_ChipStart = new System.Windows.Forms.TextBox(); + this.label3 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.textBox_BufferEnd = new System.Windows.Forms.TextBox(); + this.textBox_BufferStart = new System.Windows.Forms.TextBox(); + this.label4 = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.button_LoadBuffer = new System.Windows.Forms.Button(); + this.button_SaveBuffer = new System.Windows.Forms.Button(); + this.button_Write = new System.Windows.Forms.Button(); + this.button_Read = new System.Windows.Forms.Button(); + this.button_Erase = new System.Windows.Forms.Button(); + this.button_Blank = new System.Windows.Forms.Button(); + this.button_Verify = new System.Windows.Forms.Button(); + this.button_Edit = new System.Windows.Forms.Button(); + this.panel1 = new System.Windows.Forms.Panel(); + this.progressBar1 = new System.Windows.Forms.ProgressBar(); + this.label6 = new System.Windows.Forms.Label(); + this.textBox_Logs = new System.Windows.Forms.TextBox(); + this.button_Close = new System.Windows.Forms.Button(); + this.panel2 = new System.Windows.Forms.Panel(); + this.label7 = new System.Windows.Forms.Label(); + this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog(); + this.saveFileDialog1 = new System.Windows.Forms.SaveFileDialog(); + this.checkBox1 = new System.Windows.Forms.CheckBox(); + this.groupBox3 = new System.Windows.Forms.GroupBox(); + this.button1 = new System.Windows.Forms.Button(); + this.DownloadPage = new System.Windows.Forms.Label(); + this.groupBox1.SuspendLayout(); + this.groupBox2.SuspendLayout(); + this.groupBox3.SuspendLayout(); + this.SuspendLayout(); + // + // listBox_Chips + // + this.listBox_Chips.FormattingEnabled = true; + this.listBox_Chips.Items.AddRange(new object[] { + "27SF512 (SST)", + "27C256 (Read-Only)", + "29C256"}); + this.listBox_Chips.Location = new System.Drawing.Point(12, 25); + this.listBox_Chips.Name = "listBox_Chips"; + this.listBox_Chips.Size = new System.Drawing.Size(148, 56); + this.listBox_Chips.TabIndex = 0; + this.listBox_Chips.SelectedIndexChanged += new System.EventHandler(this.listBox_Chips_SelectedIndexChanged); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(41, 9); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(85, 13); + this.label1.TabIndex = 1; + this.label1.Text = "Supported Chips"; + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.textBox_ChipEnd); + this.groupBox1.Controls.Add(this.textBox_ChipStart); + this.groupBox1.Controls.Add(this.label3); + this.groupBox1.Controls.Add(this.label2); + this.groupBox1.Location = new System.Drawing.Point(166, 20); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(216, 61); + this.groupBox1.TabIndex = 2; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "Chip Addressing"; + // + // textBox_ChipEnd + // + this.textBox_ChipEnd.Location = new System.Drawing.Point(143, 36); + this.textBox_ChipEnd.Name = "textBox_ChipEnd"; + this.textBox_ChipEnd.ScrollBars = System.Windows.Forms.ScrollBars.Horizontal; + this.textBox_ChipEnd.Size = new System.Drawing.Size(66, 20); + this.textBox_ChipEnd.TabIndex = 3; + this.textBox_ChipEnd.Text = "0000"; + // + // textBox_ChipStart + // + this.textBox_ChipStart.Location = new System.Drawing.Point(143, 13); + this.textBox_ChipStart.Name = "textBox_ChipStart"; + this.textBox_ChipStart.Size = new System.Drawing.Size(66, 20); + this.textBox_ChipStart.TabIndex = 2; + this.textBox_ChipStart.Text = "0000"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(37, 39); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(100, 13); + this.label3.TabIndex = 1; + this.label3.Text = "End Address in Hex"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(34, 16); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(103, 13); + this.label2.TabIndex = 0; + this.label2.Text = "Start Address in Hex"; + // + // groupBox2 + // + this.groupBox2.Controls.Add(this.textBox_BufferEnd); + this.groupBox2.Controls.Add(this.textBox_BufferStart); + this.groupBox2.Controls.Add(this.label4); + this.groupBox2.Controls.Add(this.label5); + this.groupBox2.Location = new System.Drawing.Point(166, 87); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.Size = new System.Drawing.Size(216, 60); + this.groupBox2.TabIndex = 3; + this.groupBox2.TabStop = false; + this.groupBox2.Text = "Buffer Addressing"; + // + // textBox_BufferEnd + // + this.textBox_BufferEnd.Location = new System.Drawing.Point(143, 36); + this.textBox_BufferEnd.Name = "textBox_BufferEnd"; + this.textBox_BufferEnd.Size = new System.Drawing.Size(66, 20); + this.textBox_BufferEnd.TabIndex = 3; + this.textBox_BufferEnd.Text = "0000"; + // + // textBox_BufferStart + // + this.textBox_BufferStart.Location = new System.Drawing.Point(143, 13); + this.textBox_BufferStart.Name = "textBox_BufferStart"; + this.textBox_BufferStart.Size = new System.Drawing.Size(66, 20); + this.textBox_BufferStart.TabIndex = 2; + this.textBox_BufferStart.Text = "0000"; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(37, 39); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(100, 13); + this.label4.TabIndex = 1; + this.label4.Text = "End Address in Hex"; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(34, 16); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(103, 13); + this.label5.TabIndex = 0; + this.label5.Text = "Start Address in Hex"; + // + // button_LoadBuffer + // + this.button_LoadBuffer.Location = new System.Drawing.Point(12, 160); + this.button_LoadBuffer.Name = "button_LoadBuffer"; + this.button_LoadBuffer.Size = new System.Drawing.Size(180, 23); + this.button_LoadBuffer.TabIndex = 4; + this.button_LoadBuffer.Text = "Load File to Buffer..."; + this.button_LoadBuffer.UseVisualStyleBackColor = true; + this.button_LoadBuffer.Click += new System.EventHandler(this.button_LoadBuffer_Click); + // + // button_SaveBuffer + // + this.button_SaveBuffer.Location = new System.Drawing.Point(202, 160); + this.button_SaveBuffer.Name = "button_SaveBuffer"; + this.button_SaveBuffer.Size = new System.Drawing.Size(180, 23); + this.button_SaveBuffer.TabIndex = 5; + this.button_SaveBuffer.Text = "Save Buffer to File..."; + this.button_SaveBuffer.UseVisualStyleBackColor = true; + this.button_SaveBuffer.Click += new System.EventHandler(this.button_SaveBuffer_Click); + // + // button_Write + // + this.button_Write.Location = new System.Drawing.Point(12, 189); + this.button_Write.Name = "button_Write"; + this.button_Write.Size = new System.Drawing.Size(180, 23); + this.button_Write.TabIndex = 6; + this.button_Write.Text = "Write Chip"; + this.button_Write.UseVisualStyleBackColor = true; + this.button_Write.Click += new System.EventHandler(this.button_Write_Click); + // + // button_Read + // + this.button_Read.Location = new System.Drawing.Point(203, 189); + this.button_Read.Name = "button_Read"; + this.button_Read.Size = new System.Drawing.Size(179, 23); + this.button_Read.TabIndex = 7; + this.button_Read.Text = "Read Chip"; + this.button_Read.UseVisualStyleBackColor = true; + this.button_Read.Click += new System.EventHandler(this.button_Read_Click); + // + // button_Erase + // + this.button_Erase.Location = new System.Drawing.Point(202, 218); + this.button_Erase.Name = "button_Erase"; + this.button_Erase.Size = new System.Drawing.Size(180, 23); + this.button_Erase.TabIndex = 8; + this.button_Erase.Text = "Erase Chip"; + this.button_Erase.UseVisualStyleBackColor = true; + this.button_Erase.Click += new System.EventHandler(this.button_Erase_Click); + // + // button_Blank + // + this.button_Blank.Location = new System.Drawing.Point(12, 247); + this.button_Blank.Name = "button_Blank"; + this.button_Blank.Size = new System.Drawing.Size(180, 23); + this.button_Blank.TabIndex = 9; + this.button_Blank.Text = "Blank Check"; + this.button_Blank.UseVisualStyleBackColor = true; + this.button_Blank.Click += new System.EventHandler(this.button_Blank_Click); + // + // button_Verify + // + this.button_Verify.Location = new System.Drawing.Point(12, 218); + this.button_Verify.Name = "button_Verify"; + this.button_Verify.Size = new System.Drawing.Size(180, 23); + this.button_Verify.TabIndex = 10; + this.button_Verify.Text = "Verify Chip w/ Buffer"; + this.button_Verify.UseVisualStyleBackColor = true; + this.button_Verify.Click += new System.EventHandler(this.button_Verify_Click); + // + // button_Edit + // + this.button_Edit.Enabled = false; + this.button_Edit.Location = new System.Drawing.Point(202, 247); + this.button_Edit.Name = "button_Edit"; + this.button_Edit.Size = new System.Drawing.Size(180, 23); + this.button_Edit.TabIndex = 11; + this.button_Edit.Text = "Edit Buffer"; + this.button_Edit.UseVisualStyleBackColor = true; + // + // panel1 + // + this.panel1.BackColor = System.Drawing.Color.LightGray; + this.panel1.Location = new System.Drawing.Point(0, 153); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(400, 1); + this.panel1.TabIndex = 12; + // + // progressBar1 + // + this.progressBar1.Location = new System.Drawing.Point(75, 283); + this.progressBar1.Name = "progressBar1"; + this.progressBar1.Size = new System.Drawing.Size(307, 10); + this.progressBar1.TabIndex = 13; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(12, 281); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(57, 13); + this.label6.TabIndex = 14; + this.label6.Text = "Progress..."; + // + // textBox_Logs + // + this.textBox_Logs.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.textBox_Logs.Location = new System.Drawing.Point(12, 299); + this.textBox_Logs.Multiline = true; + this.textBox_Logs.Name = "textBox_Logs"; + this.textBox_Logs.ReadOnly = true; + this.textBox_Logs.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; + this.textBox_Logs.ShortcutsEnabled = false; + this.textBox_Logs.Size = new System.Drawing.Size(370, 265); + this.textBox_Logs.TabIndex = 15; + // + // button_Close + // + this.button_Close.Location = new System.Drawing.Point(203, 570); + this.button_Close.Name = "button_Close"; + this.button_Close.Size = new System.Drawing.Size(100, 23); + this.button_Close.TabIndex = 17; + this.button_Close.Text = "Close"; + this.button_Close.UseVisualStyleBackColor = true; + this.button_Close.Click += new System.EventHandler(this.button_Close_Click); + // + // panel2 + // + this.panel2.BackColor = System.Drawing.Color.LightGray; + this.panel2.Location = new System.Drawing.Point(0, 276); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(400, 1); + this.panel2.TabIndex = 18; + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Font = new System.Drawing.Font("Microsoft Sans Serif", 6.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label7.Location = new System.Drawing.Point(325, 581); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(65, 12); + this.label7.TabIndex = 19; + this.label7.Text = "By Bouletmarc"; + // + // openFileDialog1 + // + this.openFileDialog1.DefaultExt = "bin"; + this.openFileDialog1.Filter = "Bin Files|*.bin"; + // + // saveFileDialog1 + // + this.saveFileDialog1.DefaultExt = "bin"; + this.saveFileDialog1.Filter = "Bin File|*.bin"; + // + // checkBox1 + // + this.checkBox1.AutoSize = true; + this.checkBox1.Location = new System.Drawing.Point(21, 25); + this.checkBox1.Name = "checkBox1"; + this.checkBox1.RightToLeft = System.Windows.Forms.RightToLeft.Yes; + this.checkBox1.Size = new System.Drawing.Size(121, 17); + this.checkBox1.TabIndex = 20; + this.checkBox1.Text = "Advanced Loggings"; + this.checkBox1.UseVisualStyleBackColor = true; + // + // groupBox3 + // + this.groupBox3.Controls.Add(this.checkBox1); + this.groupBox3.Location = new System.Drawing.Point(12, 87); + this.groupBox3.Name = "groupBox3"; + this.groupBox3.Size = new System.Drawing.Size(148, 60); + this.groupBox3.TabIndex = 23; + this.groupBox3.TabStop = false; + this.groupBox3.Text = "Settings"; + // + // button1 + // + this.button1.Location = new System.Drawing.Point(92, 570); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(100, 23); + this.button1.TabIndex = 24; + this.button1.Text = "Cancel Operation"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // DownloadPage + // + this.DownloadPage.AutoSize = true; + this.DownloadPage.Cursor = System.Windows.Forms.Cursors.Hand; + this.DownloadPage.Font = new System.Drawing.Font("Microsoft Sans Serif", 6.75F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.DownloadPage.Location = new System.Drawing.Point(299, 5); + this.DownloadPage.Name = "DownloadPage"; + this.DownloadPage.Size = new System.Drawing.Size(83, 12); + this.DownloadPage.TabIndex = 25; + this.DownloadPage.Text = "Download Page"; + this.DownloadPage.Click += new System.EventHandler(this.DownloadPage_Click); + // + // Form1 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.SystemColors.MenuHighlight; + this.ClientSize = new System.Drawing.Size(394, 599); + this.Controls.Add(this.DownloadPage); + this.Controls.Add(this.button1); + this.Controls.Add(this.groupBox3); + this.Controls.Add(this.label7); + this.Controls.Add(this.panel2); + this.Controls.Add(this.button_Close); + this.Controls.Add(this.textBox_Logs); + this.Controls.Add(this.label6); + this.Controls.Add(this.progressBar1); + this.Controls.Add(this.panel1); + this.Controls.Add(this.button_Edit); + this.Controls.Add(this.button_Verify); + this.Controls.Add(this.button_Blank); + this.Controls.Add(this.button_Erase); + this.Controls.Add(this.button_Read); + this.Controls.Add(this.button_Write); + this.Controls.Add(this.button_SaveBuffer); + this.Controls.Add(this.button_LoadBuffer); + this.Controls.Add(this.groupBox2); + this.Controls.Add(this.groupBox1); + this.Controls.Add(this.label1); + this.Controls.Add(this.listBox_Chips); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "Form1"; + this.Text = "Arduino Flash&Burn Interface"; + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.groupBox2.ResumeLayout(false); + this.groupBox2.PerformLayout(); + this.groupBox3.ResumeLayout(false); + this.groupBox3.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.ListBox listBox_Chips; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.TextBox textBox_ChipEnd; + private System.Windows.Forms.TextBox textBox_ChipStart; + private System.Windows.Forms.GroupBox groupBox2; + private System.Windows.Forms.TextBox textBox_BufferEnd; + private System.Windows.Forms.TextBox textBox_BufferStart; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Button button_LoadBuffer; + private System.Windows.Forms.Button button_SaveBuffer; + private System.Windows.Forms.Button button_Write; + private System.Windows.Forms.Button button_Read; + private System.Windows.Forms.Button button_Erase; + private System.Windows.Forms.Button button_Blank; + private System.Windows.Forms.Button button_Verify; + private System.Windows.Forms.Button button_Edit; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.ProgressBar progressBar1; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.TextBox textBox_Logs; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.Button button_Close; + private System.Windows.Forms.OpenFileDialog openFileDialog1; + private System.Windows.Forms.SaveFileDialog saveFileDialog1; + private System.Windows.Forms.CheckBox checkBox1; + private System.Windows.Forms.GroupBox groupBox3; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.Label DownloadPage; + } +} + diff --git a/Windows/SOURCE/ArduinoEPROM/Form1.cs b/Windows/SOURCE/ArduinoEPROM/Form1.cs new file mode 100644 index 0000000..8019b26 --- /dev/null +++ b/Windows/SOURCE/ArduinoEPROM/Form1.cs @@ -0,0 +1,1005 @@ +using System; +using System.IO; +using System.IO.Ports; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Threading; +using System.Text; +using System.Windows.Forms; +using System.Timers; + +namespace ArduinoEPROM +{ + public partial class Form1 : Form + { + //Settings + public string Version = "V2.0.0"; + public int SerialWaitTimeout = 500; //max millis to wait if 'BytesToRead' is not reached + + //NOT Settings Values + public static SerialPort serial; //Create a new serial slot + public static List AvailablePorts = new List(); //Available COM Ports List + public bool SerialConnected = false; //is serial connected ? + public string SerialHardware = ""; //Serial hardware (arduino or other serial controller) + public string SerialVersion = ""; //Serial hardware version (arduino .ino code version) + public bool SerialTry = false; //Tried to connect and detect Serial Controller (Yes/No) + + public int ChipSize = 0; //Chip size (32768 = 32kb) + public string ChipModel = ""; //Chip model (ex: 29C256) + public byte[] Buffer; //Bytes Buffer + public bool ReadOnly = false; //Is CHip ReadOnly (Yes/No) + + //Loop (Updates) Settings + public int StartValue = 0; //Start index ... exemple starting at 32768 (0x8000 to 0xFFFF) + public int CurrentIndex = 0; //Current Index (Over the LoopIndex) ... exemple : 5345 on 32768 + public int LoopIndex = 0; //Number of Index to Loop ... exemple 32768 for 32kb + public bool Running = false; //Running any Function Loop (Yes/No) + public string Mode = ""; //Running Mode (Read, Write, Verify, Blank, Erase, etc) + + private System.Windows.Forms.Timer LoopTimer = new System.Windows.Forms.Timer(); + + public Form1() + { + InitializeComponent(); + + //Set Loaded + Log_This("Arduino Flash&Burn Interface Loaded " + Version); + + //Disable Button until Chip is Selected ! + button_SaveBuffer.Enabled = false; + button_LoadBuffer.Enabled = false; + button_Blank.Enabled = false; + button_Edit.Enabled = false; + button_Erase.Enabled = false; + button_Read.Enabled = false; + button_Verify.Enabled = false; + button_Write.Enabled = false; + button1.Enabled = false; + + //Start Update Loop + LoopTimer.Tick += DoThisAllTheTime; + LoopTimer.Start(); + } + + void DoThisAllTheTime(object sender, EventArgs e) + { + Thread.Sleep(1); + + //First Connect + if (!SerialTry) + { + SerialConnect(); + if (!SerialConnected) + { + //Set Anything Disabled + listBox_Chips.Enabled = false; + textBox_ChipStart.Enabled = false; + textBox_ChipEnd.Enabled = false; + textBox_BufferStart.Enabled = false; + textBox_BufferEnd.Enabled = false; + + //Set Logs + Log_This("Hardware : CAN'T DETECT DEVICE"); + Log_This("RESTART THE APPLICATION"); + } + else + { + Log_This("Hardware : " + SerialHardware + " V" + SerialVersion + " CONNECTED"); + Log_This("Select your Chip !"); + } + + SerialTry = true; + } + + //########################### + if (Running) + { + //Set Cancel Button + button1.Enabled = true; + + //Disable Control Button + button_SaveBuffer.Enabled = false; + button_LoadBuffer.Enabled = false; + button_Blank.Enabled = false; + button_Edit.Enabled = false; + button_Erase.Enabled = false; + button_Read.Enabled = false; + button_Verify.Enabled = false; + button_Write.Enabled = false; + + //Set Textbox Disabled + listBox_Chips.Enabled = false; + textBox_ChipStart.Enabled = false; + textBox_ChipEnd.Enabled = false; + textBox_BufferStart.Enabled = false; + textBox_BufferEnd.Enabled = false; + + + if (Mode == "Read") + { + if (CurrentIndex < LoopIndex) + { + //Set ProgressBar + progressBar1.Value = (CurrentIndex * 100) / LoopIndex; + + //Set MSB/LSB + string HexAddress = (CurrentIndex + StartValue).ToString("X4"); + byte MSB = byte.Parse((HexAddress[0].ToString() + HexAddress[1].ToString()), System.Globalization.NumberStyles.HexNumber); + byte LSB = byte.Parse((HexAddress[2].ToString() + HexAddress[3].ToString()), System.Globalization.NumberStyles.HexNumber); + //Console.WriteLine("0x" + MSB.ToString("X2") + LSB.ToString("X2") + " = " + ((MSB * 256) + LSB)); + + //Set Commands + byte[] Cmds = new byte[4]; + Cmds[0] = Convert.ToByte('R'); + Cmds[1] = 2; + Cmds[2] = MSB; + Cmds[3] = LSB; + + //Reset 0x02 to 0x05 for SST + if (ChipModel == "27SF512 (SST)") + Cmds[1] = 5; + + //Send Commands + Write(Cmds); + + //Receive Bytes + byte[] ReceivedBytes = new byte[256]; + ReceivedBytes = ReadBytes(256); + + //Add bytes to Buffer + for (int i2 = 0; i2 < 256; i2++) + Buffer[CurrentIndex + i2] = ReceivedBytes[i2]; + + //Adv Logs + if (checkBox1.Checked) + { + string LogsStr = "Received :" + Environment.NewLine; + int LineIndex = 1; + for (int i2 = 0; i2 < 256; i2++) + { + //Add Bytes + LogsStr += ReceivedBytes[i2].ToString("X2"); + + //Add Comma + if (i2 < 255) + LogsStr += ", "; + + //Newline each 16bytes + if (LineIndex != 16) + LineIndex++; + else + { + if (i2 < 255) + LogsStr += Environment.NewLine; + + LineIndex = 1; + } + } + + //Send Logs + Log_This(LogsStr); + } + + Log_This("Read successful at : " + "0x" + (StartValue + CurrentIndex).ToString("X4")); + + CurrentIndex += 256; + } + else + { + DisableRunning(); + } + } + + //################################### + + if (Mode == "Write") + { + if (CurrentIndex < LoopIndex) + { + //Set ProgressBar + progressBar1.Value = (CurrentIndex * 100) / LoopIndex; + + //Set MSB/LSB + string HexAddress = (CurrentIndex + StartValue).ToString("X4"); + byte MSB = byte.Parse((HexAddress[0].ToString() + HexAddress[1].ToString()), System.Globalization.NumberStyles.HexNumber); + byte LSB = byte.Parse((HexAddress[2].ToString() + HexAddress[3].ToString()), System.Globalization.NumberStyles.HexNumber); + + //Set Commands + byte[] Cmds = new byte[260]; + Cmds[0] = Convert.ToByte('W'); + Cmds[1] = 2; + Cmds[2] = MSB; + Cmds[3] = LSB; + + //Reset 0x02 to 0x05 for SST + if (ChipModel == "27SF512 (SST)") + Cmds[1] = 5; + + //Add 256bytes of the buffer to Commands + for (int i2 = 0; i2 < 256; i2++) + { + int BufferStartValue = int.Parse(textBox_BufferStart.Text, System.Globalization.NumberStyles.HexNumber); + Cmds[i2 + 4] = Buffer[CurrentIndex + BufferStartValue]; + } + + //Send Commands + Write(Cmds); + + //Receive 79 'O' + if (ReadByte() != 79) + { + Log_This("Chip NOT WRITED"); + Log_This("Stopped at : " + "0x" + (StartValue + CurrentIndex).ToString("X4")); + + DisableRunning(); + } + else + { + Log_This("Write successful at : " + "0x" + (StartValue + CurrentIndex).ToString("X4")); + } + + CurrentIndex += 256; + } + else + { + DisableRunning(); + } + } + + //################################### + + if (Mode == "Erase") + { + if (ChipModel == "27SF512 (SST)") + { + byte[] Cmds = new byte[2]; + Cmds[0] = Convert.ToByte('E'); + Cmds[1] = 5; + Write(Cmds); + if (ReadByte() != 79) + Log_This("Chip NOT ERASED"); + else + Log_This("Erase successful"); + + DisableRunning(); + } + else + { + if (CurrentIndex < LoopIndex) + { + //Set ProgressBar + progressBar1.Value = (CurrentIndex * 100) / LoopIndex; + + //Set MSB/LSB + string HexAddress = (CurrentIndex + StartValue).ToString("X4"); + byte MSB = byte.Parse((HexAddress[0].ToString() + HexAddress[1].ToString()), System.Globalization.NumberStyles.HexNumber); + byte LSB = byte.Parse((HexAddress[2].ToString() + HexAddress[3].ToString()), System.Globalization.NumberStyles.HexNumber); + + //Set Commands + byte[] Cmds = new byte[260]; + Cmds[0] = Convert.ToByte('W'); + Cmds[1] = 2; + Cmds[2] = MSB; + Cmds[3] = LSB; + + //Reset 0x02 to 0x05 for SST + if (ChipModel == "27SF512 (SST)") + Cmds[1] = 5; + + //Add 256bytes of Empty DATA to Commands + for (int i2 = 0; i2 < 256; i2++) + Cmds[i2 + 4] = 255; + + //Send Commands + Write(Cmds); + + //Receive 79 'O' + if (ReadByte() != 79) + { + Log_This("Chip NOT ERASED"); + Log_This("Stopped at : " + "0x" + (StartValue + CurrentIndex).ToString("X4")); + + DisableRunning(); + } + else + { + Log_This("Erase successful at : " + "0x" + (StartValue + CurrentIndex).ToString("X4")); + } + + CurrentIndex += 256; + } + else + { + DisableRunning(); + } + } + } + + //################################### + + if (Mode == "Blank") + { + if (CurrentIndex < LoopIndex) + { + //Set ProgressBar + progressBar1.Value = (CurrentIndex * 100) / LoopIndex; + + //Set MSB/LSB + string HexAddress = (CurrentIndex + StartValue).ToString("X4"); + byte MSB = byte.Parse((HexAddress[0].ToString() + HexAddress[1].ToString()), System.Globalization.NumberStyles.HexNumber); + byte LSB = byte.Parse((HexAddress[2].ToString() + HexAddress[3].ToString()), System.Globalization.NumberStyles.HexNumber); + + //Set Commands + byte[] Cmds = new byte[4]; + Cmds[0] = Convert.ToByte('R'); + Cmds[1] = 2; + Cmds[2] = MSB; + Cmds[3] = LSB; + + //Reset 0x02 to 0x05 for SST + if (ChipModel == "27SF512 (SST)") + Cmds[1] = 5; + + //Send Commands + Write(Cmds); + + //Receive Bytes + byte[] ReceivedBytes = new byte[256]; + ReceivedBytes = ReadBytes(256); + + //Check for Bytes + bool Success = true; + int ErrorIndex = 0; + for (int i2 = 0; i2 < 256; i2++) + { + if (ReceivedBytes[i2] != 0) + { + ErrorIndex = StartValue + CurrentIndex + i2; + Success = false; + } + } + + if (Success) + Log_This("Blank successful at : " + "0x" + (StartValue + CurrentIndex).ToString("X4")); + else + { + Log_This("Chip NOT BLANK"); + Log_This("Stopped at : " + "0x" + (ErrorIndex).ToString("X4")); + CurrentIndex = LoopIndex; + DisableRunning(); + } + + CurrentIndex += 256; + } + else + { + DisableRunning(); + } + } + + //################################### + + if (Mode == "Verify") + { + if (CurrentIndex < LoopIndex) + { + //Set ProgressBar + progressBar1.Value = (CurrentIndex * 100) / LoopIndex; + + //Set MSB/LSB + string HexAddress = (CurrentIndex + StartValue).ToString("X4"); + byte MSB = byte.Parse((HexAddress[0].ToString() + HexAddress[1].ToString()), System.Globalization.NumberStyles.HexNumber); + byte LSB = byte.Parse((HexAddress[2].ToString() + HexAddress[3].ToString()), System.Globalization.NumberStyles.HexNumber); + + //Set Commands + byte[] Cmds = new byte[4]; + Cmds[0] = Convert.ToByte('R'); + Cmds[1] = 2; + Cmds[2] = MSB; + Cmds[3] = LSB; + + //Reset 0x02 to 0x05 for SST + if (ChipModel == "27SF512 (SST)") + Cmds[1] = 5; + + //Send Commands + Write(Cmds); + + //Receive Bytes + byte[] ReceivedBytes = new byte[256]; + ReceivedBytes = ReadBytes(256); + + //Compare Bytes with Buffer + bool Success = true; + int ErrorIndex = 0; + for (int i2 = 0; i2 < 256; i2++) + { + if (Buffer[CurrentIndex + i2] != ReceivedBytes[i2]) + { + ErrorIndex = StartValue + CurrentIndex + i2; + Success = false; + } + } + + //Adv Logs + if (checkBox1.Checked) + { + string LogsStr = "Received :" + Environment.NewLine; + int LineIndex = 1; + for (int i2 = 0; i2 < 256; i2++) + { + //Add Bytes + LogsStr += ReceivedBytes[i2].ToString("X2"); + + //Add Comma + if (i2 < 255) + LogsStr += ", "; + + //Newline each 16bytes + if (LineIndex != 16) + LineIndex++; + else + { + if (i2 < 255) + LogsStr += Environment.NewLine; + + LineIndex = 1; + } + } + } + + if (Success) + Log_This("Verify successful at : " + "0x" + (StartValue + CurrentIndex).ToString("X4")); + else + { + Log_This("Chip NOT SAME AS BUFFER"); + Log_This("Stopped at : " + "0x" + (ErrorIndex).ToString("X4")); + CurrentIndex = LoopIndex; + DisableRunning(); + } + + CurrentIndex += 256; + } + else + { + DisableRunning(); + } + } + + } + else + { + button1.Enabled = false; + } + } + + private void SerialConnect() + { + serial = new SerialPort(); + + GetPortName(); + + int Index = 0; + if (AvailablePorts.Count > 0) + { + //Loop through all COM Ports until we find the proper one + while (!SerialConnected & Index < AvailablePorts.Count) + { + //Close before Setting Values + if (serial.IsOpen) + { + serial.Close(); + serial.Dispose(); + } + + //Set Settings + serial.PortName = AvailablePorts[Index]; + serial.BaudRate = 9600; + //serial.BaudRate = 115200; + serial.ReadTimeout = 300; + serial.WriteTimeout = 500; + + //Connect and Get Version + try + { + serial.Open(); + Log_This("Connected on " + serial.PortName); + GetVersion(); + + //If still not connected, then increase Index + if (!SerialConnected) + Index++; + } + catch (Exception) + { + Log_This("Device NOT RECONIZED on " + serial.PortName); + Index++; + } + } + } + } + + private void GetVersion() + { + //Set Commands + byte[] Commands = new byte[2]; + Commands[0] = Convert.ToByte('V'); + Commands[1] = Convert.ToByte('V'); + + //Send + Write(Commands); + + //Receive + byte[] VersionBytes = new byte[3]; + VersionBytes = ReadBytes(3); + + //Check for Available Devices + if (VersionBytes[0] != 0 & VersionBytes[0] != 255) + { + SerialHardware = "Arduino Mega 2560"; + SerialVersion = VersionBytes[0] + "." + VersionBytes[1] + "." + VersionBytes[2]; + + SerialConnected = true; + } + else + { + Log_This("Device NOT RECONIZED on " + serial.PortName); + serial.Close(); + } + } + + public void GetPortName() + { + AvailablePorts.Clear(); + + Log_This("Getting available ports list"); + foreach (string s in SerialPort.GetPortNames()) + { + AvailablePorts.Add(s); + Log_This(" " + s + " available"); + } + } + + /*public void Sleep(int TimeToWait) + { + //Log_This("Waiting " + (TimeToWait / 1000) + "s" + " before next Serial Task"); + //Thread.Sleep(TimeToWait); + + while (TimeToWait > 0) + { + Thread.Sleep(10); + TimeToWait -= 10; + } + }*/ + + private void DisableRunning() + { + if (Running) + { + progressBar1.Value = 0; + Running = false; + + //Enable Control Button + button_SaveBuffer.Enabled = true; + button_LoadBuffer.Enabled = true; + button_Blank.Enabled = true; + //button_Edit.Enabled = true; + button_Erase.Enabled = true; + button_Read.Enabled = true; + button_Verify.Enabled = true; + button_Write.Enabled = true; + + //Set Textbox Enable + listBox_Chips.Enabled = true; + textBox_ChipStart.Enabled = true; + textBox_ChipEnd.Enabled = true; + textBox_BufferStart.Enabled = true; + textBox_BufferEnd.Enabled = true; + + if (ReadOnly) + { + button_Write.Enabled = false; + button_Erase.Enabled = false; + } + } + } + + private void Write(byte[] Bytes) + { + try + { + serial.Write(Bytes, 0, Bytes.Length); + } + catch (TimeoutException) + { + Log_This("Write Timeout Exception"); + + DisableRunning(); + + try + { + serial.DiscardInBuffer(); + serial.DiscardOutBuffer(); + } + catch + { + Log_This("Emulator SP.Discard failed"); + } + } + } + + private byte ReadByte() + { + int Timeout = 0; + + try + { + //Timeout Loop if bytes is not availables + while (serial.BytesToRead < 1 & Timeout < 10000) + { + Thread.Sleep(1); + Timeout++; + } + + //Check Timeout is out of time + if (Timeout >= 10000) + { + DisableRunning(); + Log_This("Read Timeout Exception"); + return 0xFF; + } + else + { + return (byte)serial.ReadByte(); + } + } + catch (TimeoutException) + { + DisableRunning(); + Log_This("Read Timeout Exception"); + return 0xFF; + } + } + + private byte[] ReadBytes(int size) + { + byte[] Temp = new byte[0]; + + int Timeout = 0; + + try + { + //Timeout Loop if bytes is not availables + while (serial.BytesToRead < size & Timeout < 10000) + { + Thread.Sleep(1); + Timeout++; + } + + //Check Timeout is out of time + if (Timeout >= 10000) + { + DisableRunning(); + Log_This("Read Timeout Exception"); + } + else + { + Temp = new byte[size]; + serial.Read(Temp, 0, size); + } + } + catch (TimeoutException) + { + DisableRunning(); + Log_This("Read Timeout Exception"); + } + return Temp; + } + + //##################################################################################################################################### + //##################################################################################################################################### + //##################################################################################################################################### + + private void listBox_Chips_SelectedIndexChanged(object sender, EventArgs e) + { + ChipModel = listBox_Chips.SelectedItem.ToString(); + + ReadOnly = false; + + Log_This(ChipModel + " Chip Selected"); + + //Enable Button since Chip is Selected ! + button_SaveBuffer.Enabled = true; + button_LoadBuffer.Enabled = true; + button_Blank.Enabled = true; + //button_Edit.Enabled = true; + button_Erase.Enabled = true; + button_Read.Enabled = true; + button_Verify.Enabled = true; + button_Write.Enabled = true; + + //27C256 (Read-Only) or 29C256 + if (listBox_Chips.SelectedItem.ToString() == "27C256 (Read-Only)" | listBox_Chips.SelectedItem.ToString() == "29C256") + { + textBox_ChipStart.Text = "0000"; + textBox_ChipEnd.Text = "7FFF"; + ChipSize = 32768; + + //Set Read-Only + if (listBox_Chips.SelectedItem.ToString() == "27C256 (Read-Only)") + { + ReadOnly = true; + button_Write.Enabled = false; + button_Erase.Enabled = false; + } + } + + //27C512 or 29C512 or 27SF512 (SST) + if (listBox_Chips.SelectedItem.ToString() == "27C512" | listBox_Chips.SelectedItem.ToString() == "29C512" | listBox_Chips.SelectedItem.ToString() == "27SF512 (SST)") + { + textBox_ChipStart.Text = "0000"; + textBox_ChipEnd.Text = "FFFF"; + ChipSize = 32768 * 2; + } + + //Check with Buffer + if (GetBufferAddressingLoop() > ChipSize) + { + Log_This("ERROR : Buffer is bigger than Chip"); + } + } + + private void button_LoadBuffer_Click(object sender, EventArgs e) + { + DialogResult result = openFileDialog1.ShowDialog(); + if (result == DialogResult.OK) + { + Buffer = File.ReadAllBytes(openFileDialog1.FileName); + + //Set Buffer Addressing + textBox_BufferStart.Text = "0000"; + textBox_BufferEnd.Text = (Buffer.Length - 1).ToString("X4"); + + //Reset Chip Addressing wih Buffer Size + textBox_ChipStart.Text = (ChipSize - Buffer.Length).ToString("X4"); + + //Set Loaded + Log_This("File Loaded : " + Path.GetFileName(openFileDialog1.FileName)); + Log_This("File Size in bytes (Integer/Hex) : " + Buffer.Length + "/0x" + (Buffer.Length).ToString("X4")); + } + } + + private void Log_This(string Message) + { + textBox_Logs.AppendText(Message); + textBox_Logs.AppendText(Environment.NewLine); + } + + private void button_SaveBuffer_Click(object sender, EventArgs e) + { + //Open Dialog + DialogResult result = saveFileDialog1.ShowDialog(); + if (result == DialogResult.OK) + { + //Save + File.Create(saveFileDialog1.FileName).Dispose(); + File.WriteAllBytes(saveFileDialog1.FileName, Buffer); + + //Set Saved + Log_This("Saved : " + Path.GetFileName(saveFileDialog1.FileName)); + } + } + + private int GetChipAddressingLoop() + { + int StartValue = int.Parse(textBox_ChipStart.Text, System.Globalization.NumberStyles.HexNumber); + int EndValue = int.Parse(textBox_ChipEnd.Text, System.Globalization.NumberStyles.HexNumber); + + return EndValue - StartValue; + } + + private int GetBufferAddressingLoop() + { + int StartValue = int.Parse(textBox_BufferStart.Text, System.Globalization.NumberStyles.HexNumber); + int EndValue = int.Parse(textBox_BufferEnd.Text, System.Globalization.NumberStyles.HexNumber); + + return EndValue - StartValue; + } + + private void button_Close_Click(object sender, EventArgs e) + { + Running = false; + + if (serial.IsOpen) + serial.Close(); + + this.Close(); + Application.Exit(); + } + + private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e) + { + Running = false; + + if (serial.IsOpen) + serial.Close(); + } + + //############################################################################################################################################# + //############################################################################################################################################# + //############################################################################################################################################# + + private bool CheckCompatibility() + { + bool Compatible = true; + + if (ChipModel == "") + { + Log_This("ERROR : Supported Chip NOT SELECTED"); + Compatible = false; + } + if (GetBufferAddressingLoop() > ChipSize) + { + Log_This("ERROR : Buffer is bigger than Chip"); + Compatible = false; + } + if (GetChipAddressingLoop() == 0) + { + Log_This("ERROR : Chip addressing is Empty"); + Compatible = false; + } + + return Compatible; + } + + private void button_Write_Click(object sender, EventArgs e) + { + if (CheckCompatibility()) + { + LoopIndex = GetBufferAddressingLoop(); + StartValue = int.Parse(textBox_ChipStart.Text, System.Globalization.NumberStyles.HexNumber); + + bool Error = false; + + //Erase SST Before Writing + if (ChipModel == "27SF512 (SST)") + { + Log_This("Erasing Chip..."); + byte[] Cmds = new byte[2]; + Cmds[0] = Convert.ToByte('E'); + Cmds[1] = 5; + Write(Cmds); + if (ReadByte() != 79) + { + Log_This("Chip NOT ERASED"); + Error = true; + } + else + Log_This("Erase successful"); + } + + //If no errors, then write data + if (!Error) + { + Log_This("Writing Chip..."); + + //Run Loop + Running = true; + Mode = "Write"; + CurrentIndex = 0; + } + } + } + + private void button_Read_Click(object sender, EventArgs e) + { + if (CheckCompatibility()) + { + //Get Chip Addressing (how many bytes to read) + LoopIndex = GetChipAddressingLoop(); + StartValue = int.Parse(textBox_ChipStart.Text, System.Globalization.NumberStyles.HexNumber); + + //Reset Buffer + Buffer = new byte[LoopIndex + 1]; + + Log_This("Reading Chip..."); + + //Run Loop + Running = true; + Mode = "Read"; + CurrentIndex = 0; + } + } + + private void button_Erase_Click(object sender, EventArgs e) + { + if (CheckCompatibility()) + { + LoopIndex = GetChipAddressingLoop(); + StartValue = int.Parse(textBox_ChipStart.Text, System.Globalization.NumberStyles.HexNumber); + + Log_This("Erasing Chip..."); + + //Run Loop + Running = true; + Mode = "Erase"; + CurrentIndex = 0; + } + } + + private void button_Blank_Click(object sender, EventArgs e) + { + if (CheckCompatibility()) + { + //Get Chip Addressing (how many bytes to read) + LoopIndex = GetChipAddressingLoop(); + StartValue = int.Parse(textBox_ChipStart.Text, System.Globalization.NumberStyles.HexNumber); + + //Reset Buffer + Buffer = new byte[LoopIndex]; + + Log_This("Blank Check Chip..."); + + //Run Loop + Running = true; + Mode = "Blank"; + CurrentIndex = 0; + } + } + + private void button_Verify_Click(object sender, EventArgs e) + { + if (CheckCompatibility()) + { + //Get Chip Addressing (how many bytes to read) + LoopIndex = GetChipAddressingLoop(); + StartValue = int.Parse(textBox_ChipStart.Text, System.Globalization.NumberStyles.HexNumber); + + Log_This("Verify Chip..."); + + //Run Loop + Running = true; + Mode = "Verify"; + CurrentIndex = 0; + } + } + + private void button1_Click(object sender, EventArgs e) + { + Running = false; + progressBar1.Value = 0; + button1.Enabled = false; + + //Enable Control Button + button_SaveBuffer.Enabled = true; + button_LoadBuffer.Enabled = true; + button_Blank.Enabled = true; + //button_Edit.Enabled = true; + button_Erase.Enabled = true; + button_Read.Enabled = true; + button_Verify.Enabled = true; + button_Write.Enabled = true; + + //Set Textbox Enable + listBox_Chips.Enabled = true; + textBox_ChipStart.Enabled = true; + textBox_ChipEnd.Enabled = true; + textBox_BufferStart.Enabled = true; + textBox_BufferEnd.Enabled = true; + + if (ReadOnly) + { + button_Write.Enabled = false; + button_Erase.Enabled = false; + } + } + + private void DownloadPage_Click(object sender, EventArgs e) + { + System.Diagnostics.Process.Start("http://www.github.com/bouletmarc/"); + } + } +} diff --git a/Windows/SOURCE/ArduinoEPROM/Form1.resx b/Windows/SOURCE/ArduinoEPROM/Form1.resx new file mode 100644 index 0000000..bb68f9b --- /dev/null +++ b/Windows/SOURCE/ArduinoEPROM/Form1.resx @@ -0,0 +1,293 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + 157, 17 + + + + + AAABAAEAMDAAAAEAIACoJQAAFgAAACgAAAAwAAAAYAAAAAEAIAAAAAAAACQAABILAAASCwAAAAAAAAAA + AAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wAzAP//MwD//zMA//8zAP//MwD//zMA//8zAP//////AP///wD///8A////ADMA//8zAP//MwD//zMA + //8zAP//////AP///wAzAP//MwD//////wD///8A////ADMA//8zAP//////AP///wAzAP//MwD///// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wAzAP//MwD//////wD///8A////AP///wAzAP//MwD//////wD///8AMwD//zMA + //////8A////ADMA//8zAP//////AP///wAzAP//MwD//////wD///8A////ADMA//8zAP//////AP// + /wAzAP//MwD//////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wAzAP//MwD//////wD///8A////AP///wAzAP//MwD///// + /wD///8AMwD//zMA//////8A////ADMA//8zAP//////AP///wAzAP//MwD//////wD///8A////ADMA + //8zAP//////AP///wAzAP//MwD//////wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wAzAP//MwD//////wD///8A////AP// + /wAzAP//MwD//////wD///8AMwD//zMA//////8A////ADMA//8zAP//////AP///wAzAP//MwD///// + /wD///8A////ADMA//8zAP//////AP///wAzAP//MwD//////wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wAzAP//MwD///// + /wD///8A////AP///wAzAP//MwD//////wD///8AMwD//zMA//////8A////ADMA//8zAP//////AP// + /wAzAP//MwD//////wD///8A////ADMA//8zAP//////AP///wAzAP//MwD//////wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wAzAP//MwD//zMA//8zAP//MwD//zMA//8zAP//////AP///wD///8AMwD//zMA//////8A////ADMA + //8zAP//////AP///wAzAP//MwD//zMA//////8A////ADMA//8zAP//////AP///wAzAP//MwD///// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wAzAP//MwD//////wD///8A////AP///wAzAP//MwD//////wD///8AMwD//zMA + //////8A////ADMA//8zAP//////AP///wAzAP//MwD//zMA//8zAP//////ADMA//8zAP//MwD//zMA + //8zAP//////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wAzAP//MwD//////wD///8A////AP///wAzAP//MwD///// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wAzAP//MwD//////wD///8A////AP// + /wAzAP//MwD//////wD///8ApKCg/8DcwP+koKD/8Pv//////wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wAzAP//MwD//zMA + //8zAP//MwD//zMA//8zAP//TU1N/01NTf8AMzP/pKCg///////w+////+zM/6SgoP////8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8AVVVV/1VVVf9NTU3/ZjMz/2YzM/8AMzP/ZjMz/2YzM/8EBAT/pKCg////////////srKy/2Yz + M/+Ghob/wNzA/4aGhv////8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AFVVVf9VVVX/VVVV/2YzM/8AMzP/BAQE/wQEBP8EBAT/BAQE/wAzM/8EBAT/pKCg//// + ////////pKCg/wQEBP9VVVX/8Pv///D7///A3MD/pKCg/////wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wBVVVX/VVVV/01NTf9NTU3/ADMz/wQEBP8EBAT/BAQE/wQEBP8EBAT/BAQE/wQE + BP8EBAT/pKCg////////////pKCg/wAzM/9mMzP/8Pv////szP/w+///VVVV/1VVVf+koKD/pKCg//// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8AhoaG/1VVVf9VVVX/TU1N/2YzM/8jIgT/OTgD/5WQAf+alQD/m5UA/5uU + AP+ZlQD/m5QA/2NeAv8rKQT/pKB/////////////pKCg/wQEBP8AMzP/8Pv////szP//7Mz/ZjMz/yBH + Kf+zw3r/mpUA/5qVAP+alQD/m5YA/5qVAP+alQD/oJsAjqihADmnoQA2////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wBVVVX/VVVV/01NTf9mMzP/BAQE/zc1A/+blgD/mZQA/5uW + AP+blgD/m5YA/5uWAP+alQD/mpYA/5mVAP+XkwD/mJQA/+Hfqf//////hoaG/wQEBP9mMzP/8Pv///D7 + ////7Mz/NFQi/5uWAP+ZlAD/mpUA/5uWAP+blgD/m5YA/5uWAP+alQD/mpUA/5eSAP+SjQD/qqQAVv// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wBVVVX/ZjMz/wAzM/8KCgT/RUMD/5GM + Af+blQD/m5YA/5qVAP+clwD/mpUA/5uWAP+clgD/m5YA/5qWAP+alQD/nJcA/6ijEv/c2p7/hoaG/wQE + BP8AMzP///////D7///ZuJ7/kI4E/5qWAP+blgD/m5YA/5uWAP+alQD/m5YA/5yXAP+blgD/mpUA/5uW + AP+gmwD/pZ8A7aSgAGH///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AhoaG/7Ky + sv82VSL/lZAB/5mUAP+algD/mpUA/4B9Gv8YQiv/bkIr/xlDK/8cGwT/GxsE/2hlAv+blgD/mpUA/5qU + AP+loRD/bm05/wQEBP9mMzP/8Pv//93cqf+gmxD/mpYA/5uWAP+blQD/vbNE/5nErP9ubVb/HBsE/2Bf + SP/j69b/o6A8/5qVAP+YkwD/mpUA/6KcC/+Pjln/////AP///wD///8A////AP///wD///8A////AP// + /wD///8AVVVV/19eO/+ZlAD/mZQA/5uVAP+XkgT/ZjMz/wAzM/9mMzP/ZjMz/wAzM/8EBAT/BAQE/2Yz + M/+5tUr/n5kI/5qVAP+ZkwD/n5sA/ygnBP9mZmb/5+bB/5mUAP+alQD/m5YA/5ONAf/A3MD/8Pv////s + zP9VVVX/BAQE/2ZmZv//7Mz/wNzA/42LVf+TjgH/mZQA/5yXAP+fmwD/pKCA/4aGhv////8A////AP// + /wD///8A////AP///wAEBAT/BAQE/5uWAP+alQD/m5YA/3uBC/8AMzP/ZjMz/2YzM/8AMzP/ZjMz/2Yz + M/8AMzP/BAQE/wQEBP8AMzP/i4pk/5qVAP+blQD/mZQA/56aAP/s3Kb/mpUA/5qVAP+alAD/enYB/wQE + BP+ZzMz//+zM//D7//+Ghob/BAQE/1VVVf//zP//wNzA/4aGhv8EBAT/m5YA/5mVAP+algD/kpBP/2Yz + M/////8A////AP///wD///8A////AAQEBP8AMzP/ZjMz/5qVAP+alQD/mpUA/3BGKf9mMzP/ADMz/2Yz + M/9mMzP/ADMz/wAzM/9mMzP/ADMz/wQEBP8EBAT/BAQE/2FfAv+blAD/m5YA/5mUAP+opSf/m5YA/5qU + AP+alQD/IiEE/wQEBP//7Mz/8Pv///D7//9ycDX/UE0D/1VVVf//zP//wNzA/4aGhv8EBAT/gH0g/5uW + AP+algD/mpUA/2YzM/////8A////AP///wD///8A////AAQEBP9mMzP/d1Qi/5qVAP+blgD/mZQA/3BG + Kf8AMzP/ZjMz/wAzM/8AMzP/ADMz/2YzM/8AMzP/ZjMz/wAzM/9mMzP/ZjMz/w4NBP9cWQL/m5UA/5uW + AP+blgD/m5YA/5mUAP99eiP/Dg0E/01NTf////////////////+JhxD/qKIA/2ZmZv/w+///wNzA/4aG + hv8AMzP/XFs+/5qVAP+blgD/m5YA/wAzM/////8A////AP///wD///8A////AAQEBP9NTU3/kpAD/5uW + AP+blQD/fWAc/wM1Mv9mMzP/ADMz/2YzM/8AMzP/ZjMz/wAzM/8AMzP/ADMz/2YzM/8AMzP/ADMz/2Yz + M/8kSif/gYQJ/5qVAP+blQD/mpUA/4B+H/8KCgT/BAQE//D7////////3Nuo/6qmJv+YkgL/nJYA/5uX + FP/Hyn3//+zM/4aGhv8AMzP/Y2JE/5mUAP+algD/m5YA/2YzM/////8A////AP///wD///8A////AAQE + BP9mMzP/m5YA/5uWAP+ZlAD/QFse/2YzM/8AMzP/HUUq/42NBv+Uiwb/iosG/5SKBv+Tigb/iooG/zlY + If9mMzP/ADMz/wAzM/9oNzH/Y3IT/5qVAP+alQD/mpUA/2BdAv8FBQT/BAQE/6SgoP//////19WZ/5qW + AP+blwD/mJMA/56YAP/EwWX//////4aGhv8EBAT/XFs+/5mVAP+blgD/mpUA/wAzM/////8A////AP// + /wD///8A////AAQEBP8AMzP/inYQ/5uWAP+ZlAD/jXkR/w48L/9mMzP/ADMz/2YzM/8AMzP/ZjMz/wAz + M/8AMzP/ZjMz/wAzM/8AMzP/ZjMz/wAzM/97Wh//mZQA/5qVAP+alQD/mZQA/5KEC/8hIAT/BAQE/wQE + BP8EBAT/i4pi/4SAG/+RjAH/mJMA/725UP/X1Zb//////1VVVf8EBAT/XFs+/5qWAP+blgD/mpUA/2Yz + M/////8A////AP///wD///8A////AP///wAEBAT/BAQE/5qVAP+alQD/mpYA/3BGKf8AMzP/ZjMz/wAz + M/9mMzP/ADMz/wAzM/9mMzP/ADMz/2YzM/9mMzP/ADMz/2s9Lv9ueQ//mpUA/5uWAP+blgD/mpUA/5qV + AP9veg//ET4u/2YzM/8EBAT/BAQE/wQEBP98dwH/n5oA////////////8Pv//2YzM/8EBAT/iols/5uW + AP+blgD/m5YA/wAzM/////8A////AP///wD///8A////AP///wD///8A////AJqVAP+blgD/mZQA/3mA + C/8AMzP/ZjMz/wAzM/8AMzP/ADMz/2YzM/8AMzP/ADMz/wAzM/8AMzP/ZjMz/3mAC/+alQD/mpUA/5uW + AP90TSb/mpUA/5qVAP+blgD/k4UL/wAzM/9mMzP/ADMz/2YzM/8jIgT/LSsD/wQEBP+koKD/pKCg/wQE + BP9mMzP/rKs1/5qVAP+alQD/mpUA/wQEBP9mMzP/////AP///wD///8A////AP///wD///8A////AJqV + AD6algD/mpUA/5qVAP+SjQH/BAQE/2YzM/8AMzP/ZjMz/wAzM/9mMzP/ADMz/2YzM/8AMzP/kpAD/5qV + AP+blgD/mZQA/3JKJ/8AMzP/mpUA/5qVAP+alQD/mZQA/5WRA/9mMzP/ADMz/wAzM/9mMzP/ADMz/wQE + BP8EBAT/BAQE/wQEBP+ZlAf/m5YA/5mVAP+blgD/ckon/wQEBP8EBAT/////AP///wD///8A////AP// + /wD///8A////AJqVACuZlQDnmpUA/5qWAP+alAD/gYUJ/xsaBP8cHAT/Czow/2c1Mv8YQiz/bUIr/1hr + Fv+ZkwL/mpUA/5uVAP+ZlQD/lYwF/xlDK/8AMzP/bkMr/4uLBf+alQD/mpUA/5uVAP+BhQn/bkIr/xlD + K/8WQSz/ZjQz/w48L/9uQiv/HBsE/4F9Af+blgD/mpUA/5uWAP93dSz/BDUy/wQEBP8EBAT/////AP// + /wD///8A////AP///wD///8A////AP///wCalQBBmZQA2pqVAP+blgD/mpUA/5qVAP+fmgD/Z2QC/0lH + A/+XkgH/m5YA/5qVAP+blgD/mpUA/5mUAf+Chgn/J0sm/wAzM/9mMzP/ADMz/ydMJv+ShQj/mpUA/5uW + AP+alQD/nJYA/6GbAP+elQT/QV4f/49+Dv+blQD/m5UA/5uWAP+algD/mZMA/4eCAf8qKQP/BAQE/wQE + BP8EBAT/////AP///wD///8A////AP///wD///8A////AP///wD///8AmpUAQZmVAOKalQD/m5UA/5yW + AP+alQD/mZQA/5mUAP+alQD/m5YA/5yVAP+blgD/mZQA/0BcHv9ySif/ADMz/2YzM/8AMzP/ADMz/2Yz + M/8nSyb/fF0d/5qVAP+blgD/m5cA/5mUAP+ZlAD/mZQA/5qVAP+clgD/m5YA/5qWAP+blgD/fmAc/ydL + Jv8AMzP/BAQE/wQEBP8EBAT/////AP///wD///8A////AP///wD///8A////AP///wD///8A////AJqW + ACualQA2mpQA/5uVAP+alQD/m5YA/5uWAP+alQD/mpUA/5qUAP89OwP/JCME/wQEBP8AMzP/ZjMz/wAz + M/9mMzP/ADMz/wAzM/9mMzP/ATMz/3FHKf94fwz/m5YA/5qVAP+blgD/m5YA/5qVAP+blQD/mpQA/5qW + AP8gRyn/ZjQz/wU2Mv9vRSr/a2gC/wQEBP9mMzP/////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8AmpUAqJqVANv///8A////AP///wD///8A////AGYz + M/8EBAT/BAQE/wQEBP8AMzP/ZjMz/wAzM/8AMzP/ZjMz/wAzM/8AMzP/ZjMz/wAzM/9uQyv/jY0E/4Bl + Gf8AMzP/ADMz/2YzM/8AMzP/ADMz/wQEBP8EBAT/ADMz/////wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AAAzM/8EBAT/BAQE/wAzM/9mMzP/ADMz/wAzM/9mMzP/ADMz/wAz + M/8AMzP/ZjMz/wAzM/8AMzP/ZjMz/wAzM/8EBAT/BAQE/2YzM/////8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AZjMz/wQEBP8EBAT/BAQE/2Yz + M/8AMzP/ZjMz/wAzM/9mMzP/ADMz/2YzM/8EBAT/BAQE/wQEBP////8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8AADMz/wQEBP8EBAT/ADMz/2YzM/8AMzP/BAQE/wQEBP8EBAT/////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AMwD//zMA + //////8A////AP///wD///8A////AP///wAzAP//MwD//////wD///8A////ADMA//8zAP//MwD//zMA + //8zAP//////AP///wD///8AMwD//zMA//8zAP//MwD//wQEBP8EBAT/ADMz/zMA//8zAP//////AP// + /wAzAP//MwD//////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8AMwD//zMA//////8A////AP///wD///8A////AP///wAzAP//MwD//////wD///8AMwD//zMA + //////8A////ADMA//8zAP//////AP///wAzAP//MwD//////wD///8AMwD//zMA//////8A////ADMA + //8zAP//////AP///wAzAP//MwD//////wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8AMwD//zMA//////8A////AP///wD///8A////AP///wAzAP//MwD///// + /wD///8AMwD//zMA//////8A////ADMA//8zAP//////AP///wD///8A////AP///wD///8AMwD//zMA + //////8A////ADMA//8zAP//////AP///wAzAP//MwD//////wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8AMwD//zMA//////8A////AP///wD///8A////AP// + /wAzAP//MwD//////wD///8A////ADMA//8zAP//////ADMA//8zAP//////AP///wD///8AMwD//zMA + //8zAP//MwD//////wD///8A////ADMA//8zAP//////AP///wAzAP//MwD//////wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AMwD//zMA//////8A////AP// + /wD///8A////AP///wAzAP//MwD//////wD///8A////AP///wAzAP//MwD//zMA//8zAP//////AP// + /wAzAP//MwD//////wD///8A////AP///wD///8A////ADMA//8zAP//////AP///wAzAP//MwD///// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AMwD//zMA + //8zAP//MwD//zMA//8zAP//////AP///wAzAP//MwD//////wD///8AMwD//zMA//////8A////ADMA + //8zAP//////AP///wAzAP//MwD//////wD///8AMwD//zMA//////8A////ADMA//8zAP//////AP// + /wAzAP//MwD//////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8AMwD//zMA//////8A////AP///wD///8A////AP///wAzAP//MwD//////wD///8A////ADMA + //8zAP//MwD//zMA//////8A////AP///wD///8AMwD//zMA//8zAP//MwD//////wD///8A////ADMA + //8zAP//MwD//zMA//8zAP//////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8AMwD//zMA//////8A////AP///wD///8A////AP///wAzAP//MwD///// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////ADMA//8zAP//////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8AMwD//zMA//////8A////AP///wD///8A////AP// + /wAzAP//MwD//////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////ADMA//8zAP//////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AMwD//zMA//8zAP//MwD//zMA + //8zAP//MwD//////wAzAP//MwD//////wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////ADMA//8zAP//////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///////8AAP///////wAA/4DwZzP/ + AAD/nmZnM/8AAP+eZmcz/wAA/55mZzP/AAD/nmZnM/8AAP+A5mMz/wAA/55mYQf/AAD/nn////8AAP+e + Yf///wAA/4AA////AAD/wAAf//8AAP8AAAf//wAA/AAAAP//AADwAAAAAP8AAOAAAAAAfwAA4AAAAAA/ + AADwAAAAAB8AAPAAAAAABwAA4AAAAAAHAADAAAAAAAcAAMAAAAAABwAAwAAAAAAHAADAAAAAAAcAAMAA + AAAABwAA4AAAAAAHAAD4AAAAAAMAAPgAAAAAAwAA+AAAAAADAAD8AAAAAAMAAP4AAAAAAwAA/wAAAAAD + AAD/+fAAAA8AAP///gAAPwAA////gAH/AAD////wB/8AAP5+cHAGfwAA/n5mZmZ/AAD+fmZ+Zn8AAP5+ + cnDmfwAA/n54Z+Z/AAD+BmZmZn8AAP5+cPDg/wAA/n5//+f/AAD+fn//5/8AAP4Cf//n/wAA//////// + AAA= + + + \ No newline at end of file diff --git a/Windows/SOURCE/ArduinoEPROM/Program.cs b/Windows/SOURCE/ArduinoEPROM/Program.cs new file mode 100644 index 0000000..694abfc --- /dev/null +++ b/Windows/SOURCE/ArduinoEPROM/Program.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Windows.Forms; + +namespace ArduinoEPROM +{ + static class Program + { + /// + /// Point d'entrée principal de l'application. + /// + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new Form1()); + } + } +} diff --git a/Windows/SOURCE/ArduinoEPROM/Properties/AssemblyInfo.cs b/Windows/SOURCE/ArduinoEPROM/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..c68593a --- /dev/null +++ b/Windows/SOURCE/ArduinoEPROM/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Les informations générales relatives à un assembly dépendent de +// l'ensemble d'attributs suivant. Changez les valeurs de ces attributs pour modifier les informations +// associées à un assembly. +[assembly: AssemblyTitle("Arduino EPROM")] +[assembly: AssemblyDescription("Arduino EPROM Reader / Writer")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("BM Devs")] +[assembly: AssemblyProduct("Arduino EPROM")] +[assembly: AssemblyCopyright("Copyright © 2017")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// L'affectation de la valeur false à ComVisible rend les types invisibles dans cet assembly +// aux composants COM. Si vous devez accéder à un type dans cet assembly à partir de +// COM, affectez la valeur true à l'attribut ComVisible sur ce type. +[assembly: ComVisible(false)] + +// Le GUID suivant est pour l'ID de la typelib si ce projet est exposé à COM +[assembly: Guid("d1493044-875f-4ea3-932b-b5422824004c")] + +// Les informations de version pour un assembly se composent des quatre valeurs suivantes : +// +// Version principale +// Version secondaire +// Numéro de build +// Révision +// +// Vous pouvez spécifier toutes les valeurs ou indiquer les numéros de build et de révision par défaut +// en utilisant '*', comme indiqué ci-dessous : +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Windows/SOURCE/ArduinoEPROM/Properties/Resources.Designer.cs b/Windows/SOURCE/ArduinoEPROM/Properties/Resources.Designer.cs new file mode 100644 index 0000000..5df5941 --- /dev/null +++ b/Windows/SOURCE/ArduinoEPROM/Properties/Resources.Designer.cs @@ -0,0 +1,63 @@ +//------------------------------------------------------------------------------ +// +// Ce code a été généré par un outil. +// Version du runtime :4.0.30319.42000 +// +// Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si +// le code est régénéré. +// +//------------------------------------------------------------------------------ + +namespace ArduinoEPROM.Properties { + using System; + + + /// + /// Une classe de ressource fortement typée destinée, entre autres, à la consultation des chaînes localisées. + /// + // Cette classe a été générée automatiquement par la classe StronglyTypedResourceBuilder + // à l'aide d'un outil, tel que ResGen ou Visual Studio. + // Pour ajouter ou supprimer un membre, modifiez votre fichier .ResX, puis réexécutez ResGen + // avec l'option /str ou régénérez votre projet VS. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Retourne l'instance ResourceManager mise en cache utilisée par cette classe. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ArduinoEPROM.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Remplace la propriété CurrentUICulture du thread actuel pour toutes + /// les recherches de ressources à l'aide de cette classe de ressource fortement typée. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + } +} diff --git a/Windows/SOURCE/ArduinoEPROM/Properties/Resources.resx b/Windows/SOURCE/ArduinoEPROM/Properties/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/Windows/SOURCE/ArduinoEPROM/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Windows/SOURCE/ArduinoEPROM/Properties/Settings.Designer.cs b/Windows/SOURCE/ArduinoEPROM/Properties/Settings.Designer.cs new file mode 100644 index 0000000..024b13b --- /dev/null +++ b/Windows/SOURCE/ArduinoEPROM/Properties/Settings.Designer.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// Ce code a été généré par un outil. +// Version du runtime :4.0.30319.42000 +// +// Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si +// le code est régénéré. +// +//------------------------------------------------------------------------------ + +namespace ArduinoEPROM.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + } +} diff --git a/Windows/SOURCE/ArduinoEPROM/Properties/Settings.settings b/Windows/SOURCE/ArduinoEPROM/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/Windows/SOURCE/ArduinoEPROM/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/Windows/SOURCE/ArduinoEPROM/obj/Debug/Arduino Flash&Burn.exe b/Windows/SOURCE/ArduinoEPROM/obj/Debug/Arduino Flash&Burn.exe new file mode 100644 index 0000000..593dc46 Binary files /dev/null and b/Windows/SOURCE/ArduinoEPROM/obj/Debug/Arduino Flash&Burn.exe differ diff --git a/Windows/SOURCE/ArduinoEPROM/obj/Debug/Arduino Flash&Burn.pdb b/Windows/SOURCE/ArduinoEPROM/obj/Debug/Arduino Flash&Burn.pdb new file mode 100644 index 0000000..12500dc Binary files /dev/null and b/Windows/SOURCE/ArduinoEPROM/obj/Debug/Arduino Flash&Burn.pdb differ diff --git a/Windows/SOURCE/ArduinoEPROM/obj/Debug/ArduinoEPROM.Form1.resources b/Windows/SOURCE/ArduinoEPROM/obj/Debug/ArduinoEPROM.Form1.resources new file mode 100644 index 0000000..c4468fa Binary files /dev/null and b/Windows/SOURCE/ArduinoEPROM/obj/Debug/ArduinoEPROM.Form1.resources differ diff --git a/Windows/SOURCE/ArduinoEPROM/obj/Debug/ArduinoEPROM.Properties.Resources.resources b/Windows/SOURCE/ArduinoEPROM/obj/Debug/ArduinoEPROM.Properties.Resources.resources new file mode 100644 index 0000000..06c24d0 Binary files /dev/null and b/Windows/SOURCE/ArduinoEPROM/obj/Debug/ArduinoEPROM.Properties.Resources.resources differ diff --git a/Windows/SOURCE/ArduinoEPROM/obj/Debug/ArduinoEPROM.csproj.FileListAbsolute.txt b/Windows/SOURCE/ArduinoEPROM/obj/Debug/ArduinoEPROM.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..a0ae8ef --- /dev/null +++ b/Windows/SOURCE/ArduinoEPROM/obj/Debug/ArduinoEPROM.csproj.FileListAbsolute.txt @@ -0,0 +1,9 @@ +c:\users\coco\documents\visual studio 2015\Projects\ArduinoEPROM\ArduinoEPROM\obj\Debug\ArduinoEPROM.csprojResolveAssemblyReference.cache +c:\users\coco\documents\visual studio 2015\Projects\ArduinoEPROM\ArduinoEPROM\obj\Debug\ArduinoEPROM.Form1.resources +c:\users\coco\documents\visual studio 2015\Projects\ArduinoEPROM\ArduinoEPROM\obj\Debug\ArduinoEPROM.Properties.Resources.resources +c:\users\coco\documents\visual studio 2015\Projects\ArduinoEPROM\ArduinoEPROM\obj\Debug\ArduinoEPROM.csproj.GenerateResource.Cache +c:\users\coco\documents\visual studio 2015\Projects\ArduinoEPROM\ArduinoEPROM\bin\Debug\Arduino Flash&Burn.exe.config +c:\users\coco\documents\visual studio 2015\Projects\ArduinoEPROM\ArduinoEPROM\bin\Debug\Arduino Flash&Burn.exe +c:\users\coco\documents\visual studio 2015\Projects\ArduinoEPROM\ArduinoEPROM\bin\Debug\Arduino Flash&Burn.pdb +c:\users\coco\documents\visual studio 2015\Projects\ArduinoEPROM\ArduinoEPROM\obj\Debug\Arduino Flash&Burn.exe +c:\users\coco\documents\visual studio 2015\Projects\ArduinoEPROM\ArduinoEPROM\obj\Debug\Arduino Flash&Burn.pdb diff --git a/Windows/SOURCE/ArduinoEPROM/obj/Debug/ArduinoEPROM.csproj.GenerateResource.Cache b/Windows/SOURCE/ArduinoEPROM/obj/Debug/ArduinoEPROM.csproj.GenerateResource.Cache new file mode 100644 index 0000000..3c9be92 Binary files /dev/null and b/Windows/SOURCE/ArduinoEPROM/obj/Debug/ArduinoEPROM.csproj.GenerateResource.Cache differ diff --git a/Windows/SOURCE/ArduinoEPROM/obj/Debug/ArduinoEPROM.csprojResolveAssemblyReference.cache b/Windows/SOURCE/ArduinoEPROM/obj/Debug/ArduinoEPROM.csprojResolveAssemblyReference.cache new file mode 100644 index 0000000..b0b3a97 Binary files /dev/null and b/Windows/SOURCE/ArduinoEPROM/obj/Debug/ArduinoEPROM.csprojResolveAssemblyReference.cache differ diff --git a/Windows/SOURCE/ArduinoEPROM/obj/Debug/DesignTimeResolveAssemblyReferences.cache b/Windows/SOURCE/ArduinoEPROM/obj/Debug/DesignTimeResolveAssemblyReferences.cache new file mode 100644 index 0000000..a5d1b9d Binary files /dev/null and b/Windows/SOURCE/ArduinoEPROM/obj/Debug/DesignTimeResolveAssemblyReferences.cache differ diff --git a/Windows/SOURCE/ArduinoEPROM/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/Windows/SOURCE/ArduinoEPROM/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache new file mode 100644 index 0000000..8fe5871 Binary files /dev/null and b/Windows/SOURCE/ArduinoEPROM/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ diff --git a/Windows/SOURCE/ArduinoEPROM/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll b/Windows/SOURCE/ArduinoEPROM/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll new file mode 100644 index 0000000..dd023be Binary files /dev/null and b/Windows/SOURCE/ArduinoEPROM/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll differ diff --git a/Windows/SOURCE/ArduinoEPROM/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/Windows/SOURCE/ArduinoEPROM/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs new file mode 100644 index 0000000..e69de29 diff --git a/Windows/SOURCE/ArduinoEPROM/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/Windows/SOURCE/ArduinoEPROM/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs new file mode 100644 index 0000000..e69de29 diff --git a/Windows/SOURCE/ArduinoEPROM/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/Windows/SOURCE/ArduinoEPROM/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs new file mode 100644 index 0000000..e69de29