private void UploadData(object sender, RoutedEventArgs e)
        {
            List <UploadData> rdList = new List <UploadData>();
            UploadData        raw    = new UploadData();

            if (string.IsNullOrEmpty(timestamp.Text))
            {
                timestamp.Text = DateTime.UtcNow.ToString();
            }
            raw.Timestamp = DateTime.Parse(timestamp.Text);
            raw.HID       = hwID.Text;
            if (string.IsNullOrEmpty(uploadData.Text))
            {
                raw.Data = string.Empty;
                var devConfig = (from z in gatewayConfig.devices where z.HID == hwID.Text select z).FirstOrDefault();
                if (devConfig == null)
                {
                    AddMessage(string.Format("DeviceConfig not found for {0}", hwID.Text));
                    return;
                }
                for (int i = 0; i < devConfig.Registers.Count(); i++)
                {
                    RegInfo ri = devConfig.Registers[i];
                    string  val;
                    switch (ri.DataType)
                    {
                    case RawDataType.Int:
                        val = string.Format("{0}", ri.RegNum);
                        break;

                    default:
                        val = string.Format("{0:0.00}", ri.RegNum / 100.0);
                        break;
                    }
                    raw.Data += (i == 0) ? val : ("," + val);
                }
                uploadData.Text = raw.Data;
            }
            else
            {
                raw.Data = uploadData.Text;
            }
            rdList.Add(raw);
            UploadResult result = api.UploadRawData(login.SessionID, rdList);

            if ((AEResultCodes)result.Code == AEResultCodes.OK)
            {
                AddMessage(string.Format("*** Uploaded {0} rows", result.UploadCount));
            }
            else
            {
                AddMessage(string.Format("*** UploadData returned {0}", result.ResultCodeString()));
            }

            Registry.CurrentUser.SetValue(RegGateway, gatewayID.Text);
            Registry.CurrentUser.SetValue(RegUploadData, uploadData.Text);
        }
        private void UploadByteData(object sender, RoutedEventArgs e)
        {
            try {
                DateTime Timestamp = DateTime.Parse(timestamp.Text);
                int      dataLen   = 100;
                string[] chops     = uploadData.Text.Split(',');
                byte[]   data;
                if (chops.Length == 1 && chops[0].ToLower() == "delta")
                {
                    //**** TEST for Delta
                    data = new byte[300];
                    byte[] dataInit =
                    {
                        0,                 0,         0,         0,       255,       255,       255,       255, // Special header for Delta Weblog protocol
                        1,                 0,         0,         0,                                             // Device address == 1 (must match the physical device address)
                        1,                 0,                                                                   // Register address == 1 (non-zero)
                        1,                                                                                      // numregs = 1 (non-zero)
                        // Data:
                        (byte)'A', (byte)'B', (byte)'C', (byte)'D', (byte)'0', (byte)'0', (byte)'0', (byte)'0', (byte)'0', (byte)'0', (byte)'0',
                        1,                 2,         3,         4,         5,         6,         7,         8,         9,        10,        11,12, 13, 14, 15, 16, 17, 18, 19, 20
                    };
                    dataInit.CopyTo(data, 0);
                    //**** TEST
                }
                else
                {
                    int.TryParse(chops[0], out dataLen);
                    data = new byte[dataLen];
                    if (chops.Length > 1)
                    {
                        int adr;
                        if (int.TryParse(chops[1], out adr))
                        {
                            byte[] bytes = BitConverter.GetBytes(adr);
                            bytes.CopyTo(data, 0);
                        }
                    }
                }
                UploadResult result = api.UploadByteData(login.SessionID, hwID.Text, Timestamp, isLog.IsChecked == true, notResponding.IsChecked == true, data);
                if ((AEResultCodes)result.Code == AEResultCodes.OK)
                {
                    AddMessage(string.Format("*** Uploaded {0} rows", result.UploadCount));
                }
                else
                {
                    AddMessage(string.Format("*** UploadData returned {0}", result.ResultCodeString()));
                }

                Registry.CurrentUser.SetValue(RegGateway, gatewayID.Text);
                Registry.CurrentUser.SetValue(RegUploadData, uploadData.Text);
            } catch (Exception ex) {
                AddMessage(ex.ToString());
            }
        }