Наследование: IDisposable
Пример #1
0
 /* execute code */
 private async Task Jump(uint address)
 {
     /* create new programming interface object */
     using (var uc = new STBoot()) {
         /* open device */
         uc.Open(portName, baudRate);
         /* initialize communication */
         await uc.Initialize();
         /* go! */
         await uc.Jump(address);
         /* end communication */
         uc.Close();
     }
 }
Пример #2
0
        /* upload a binary image to uC */
        private async Task UploadFile(string portName, uint baudRate,
            byte[] bin, uint address, uint jumpAddress)
        {
            /* get page size */
            uint psize = uint.Parse(cbPSize.SelectedItem as string);

            /* create new programming interface object */
            using (var uc = new STBoot()) {
                /* open device */
                uc.Open(portName, baudRate);
                /* initialize communication */
                await uc.Initialize();
                /* update the status */
                UpdateStatus(false, string.Format("Connected: Ver: {0}, PID: 0x{1:X4}",
                    uc.Version, uc.ProductID));
                /* give some chance see the message */
                await Task.Delay(500);

                /* apply new message */
                UpdateStatus(false, "Erasing...");

                /* checked? */
                if (cbxErase.Checked) {
                    await uc.GlobalErase();
                } else {
                    /* erase operation */
                    for (uint i = 0; i < bin.Length; i += psize) {
                        /* erase page */
                        await uc.ErasePage((i + address - 0x08000000) / psize);
                        /* update progress bar */
                        UpdateProgress((int)i * 100 / bin.Length);
                    }
                }

                /* apply new message */
                UpdateStatus(false, "Programming...");
                /* progress reporter */
                var p = new Progress<STBootProgress>(UpdateProgress);
                /* write memory */
                await uc.WriteMemory(address, bin, 0, bin.Length, p,
                    CancellationToken.None);
                /* update the status */
                UpdateStatus(false, string.Format("Success: {0} bytes written",
                    bin.Length));

                /* go! */
                await uc.Jump(jumpAddress);

                /* end communication */
                uc.Close();
            }
        }