Subversion Repositories Projects

Rev

Rev 2254 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2254 Rev 2257
Line 156... Line 156...
156
        string fileName = "NCLabelTexts.txt";
156
        string fileName = "NCLabelTexts.txt";
157
        int _iCtrlAct = 0;
157
        int _iCtrlAct = 0;
158
        int _iLifeCounter = 0;
158
        int _iLifeCounter = 0;
159
        int iOSDPage = 0;
159
        int iOSDPage = 0;
160
        int iOSDMax = 0;
160
        int iOSDMax = 0;
-
 
161
        int[] serChan = new int[12] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
-
 
162
        string[] serChanTitle = new string[12];
161
        /// <summary>
163
        /// <summary>
162
        /// interval for sending debugdata (multiplied by 10ms)
164
        /// interval for sending debugdata (multiplied by 10ms)
163
        /// </summary>
165
        /// </summary>
164
        byte debugInterval = 25; //(=> 250ms)
166
        byte debugInterval = 25; //(=> 250ms)
165
        /// <summary>
167
        /// <summary>
Line 182... Line 184...
182
        /// datatable for motordata (current,temp)
184
        /// datatable for motordata (current,temp)
183
        /// </summary>
185
        /// </summary>
184
        DataTable dtMotors1 = new DataTable();
186
        DataTable dtMotors1 = new DataTable();
185
        DataTable dtMotors2 = new DataTable();
187
        DataTable dtMotors2 = new DataTable();
Line -... Line 188...
-
 
188
 
-
 
189
        DataTable dtWaypoints = new DataTable();
186
 
190
 
187
        public MainForm()
191
        public MainForm()
188
        {
192
        {
-
 
193
            InitializeComponent();
-
 
194
            serChanTitle.Initialize();
189
            InitializeComponent();
195
 
-
 
196
            _readIni();
190
            _readIni();
197
 
191
            dtAnalog.Columns.Add("ID");
198
            dtAnalog.Columns.Add("ID");
192
            dtAnalog.Columns.Add("Value");
199
            dtAnalog.Columns.Add("Value");
-
 
200
            dataGridView1.DataSource = dtAnalog;
193
            dataGridView1.DataSource = dtAnalog;
201
 
194
            dtMotors1.Columns.Add("#");
202
            dtMotors1.Columns.Add("#");
195
            dtMotors1.Columns.Add("Current");
203
            dtMotors1.Columns.Add("Current");
196
            dtMotors1.Columns.Add("Temp");
204
            dtMotors1.Columns.Add("Temp");
197
            dtMotors2.Columns.Add("#");
205
            dtMotors2.Columns.Add("#");
Line 204... Line 212...
204
            dgvMotors1.Columns[1].Width = 74;
212
            dgvMotors1.Columns[1].Width = 74;
205
            dgvMotors1.Columns[2].Width = 74;
213
            dgvMotors1.Columns[2].Width = 74;
206
            dgvMotors2.Columns[0].Width = 24;
214
            dgvMotors2.Columns[0].Width = 24;
207
            dgvMotors2.Columns[1].Width = 74;
215
            dgvMotors2.Columns[1].Width = 74;
208
            dgvMotors2.Columns[2].Width = 74;
216
            dgvMotors2.Columns[2].Width = 74;
-
 
217
 
-
 
218
            dtWaypoints.Columns.Add("Index");
-
 
219
            dtWaypoints.Columns.Add("Type");
-
 
220
            dtWaypoints.Columns.Add("Name");
-
 
221
            dtWaypoints.Columns.Add("Latitude");
-
 
222
            dtWaypoints.Columns.Add("Longitude");
-
 
223
            dtWaypoints.Columns.Add("Altitude");
-
 
224
            dtWaypoints.Columns.Add("Heading");
-
 
225
            dtWaypoints.Columns.Add("Speed");
-
 
226
            dtWaypoints.Columns.Add("Altitude rate");
-
 
227
            dtWaypoints.Columns.Add("Tol.radius");
-
 
228
            dtWaypoints.Columns.Add("Hold time");
-
 
229
            dtWaypoints.Columns.Add("AutoTrigger");
-
 
230
            dtWaypoints.Columns.Add("Cam angle");
-
 
231
            dtWaypoints.Columns.Add("Event");
-
 
232
            dtWaypoints.Columns.Add("Eventchan. Val.");
-
 
233
            dtWaypoints.Columns.Add("Status");
-
 
234
            dgvWP.DataSource = dtWaypoints;
-
 
235
 
209
            simpleSerialPort.PortClosed += SimpleSerialPort_PortClosed;
236
            simpleSerialPort.PortClosed += SimpleSerialPort_PortClosed;
210
            simpleSerialPort.PortOpened += SimpleSerialPort_PortOpened;
237
            simpleSerialPort.PortOpened += SimpleSerialPort_PortOpened;
211
            simpleSerialPort.DataReceived += processMessage;
238
            simpleSerialPort.DataReceived += processMessage;
212
            chkbAutoBL.Checked = _blctrlDataAutorefresh;
239
            chkbAutoBL.Checked = _blctrlDataAutorefresh;
213
            chkbAutoDbg.Checked = _debugDataAutorefresh;
240
            chkbAutoDbg.Checked = _debugDataAutorefresh;
Line 215... Line 242...
215
            chkbAutoOSD.Checked = _OSDAutorefresh;
242
            chkbAutoOSD.Checked = _OSDAutorefresh;
216
            labelTimingDebug.Text = (debugInterval * 10).ToString();
243
            labelTimingDebug.Text = (debugInterval * 10).ToString();
217
            labelTimingBLCTRL.Text = (blctrlInterval * 10).ToString();
244
            labelTimingBLCTRL.Text = (blctrlInterval * 10).ToString();
218
            labelTimingNAV.Text = (navctrlInterval * 10).ToString();
245
            labelTimingNAV.Text = (navctrlInterval * 10).ToString();
219
            labelTimingOSD.Text = (OSDInterval * 10).ToString();
246
            labelTimingOSD.Text = (OSDInterval * 10).ToString();
220
            tabControl1.TabPages.Remove(tabPageTesting);
247
            TabControl1.TabPages.Remove(tabPageTesting);
221
        }
248
        }
-
 
249
 
222
        #region events
250
        #region events
223
        private void MainForm_Shown(object sender, EventArgs e)
251
        private void MainForm_Shown(object sender, EventArgs e)
224
        {
252
        {
225
            _loadLabelNames();
253
            _loadLabelNames();
-
 
254
            _initSerialCtrl();
226
            _init = false;
255
            _init = false;
227
            splitContainer1.SplitterDistance = 514;
256
            splitContainer1.SplitterDistance = 514;
228
        }
257
        }
229
        private void MainForm_FormClosed(object sender, FormClosedEventArgs e)
258
        private void MainForm_FormClosed(object sender, FormClosedEventArgs e)
230
        {
259
        {
Line 235... Line 264...
235
            btnConn.Invoke((Action)(() => btnConn.BackColor = Color.FromArgb(192, 255, 192)));
264
            btnConn.Invoke((Action)(() => btnConn.BackColor = Color.FromArgb(192, 255, 192)));
236
            btnConn.Invoke((Action)(() => btnConn.Text = "close" + Environment.NewLine + "serial port"));
265
            btnConn.Invoke((Action)(() => btnConn.Text = "close" + Environment.NewLine + "serial port"));
237
            _getVersion();
266
            _getVersion();
238
            Thread.Sleep(100);
267
            Thread.Sleep(100);
239
            _OSDMenue(0);
268
            _OSDMenue(0);
-
 
269
            Thread.Sleep(200);
-
 
270
            _sendSerialData();
240
           // _readCont(true);
271
           // _readCont(true);
241
        }
272
        }
242
        private void SimpleSerialPort_PortClosed()
273
        private void SimpleSerialPort_PortClosed()
243
        {
274
        {
244
            btnConn.Invoke((Action)(() => btnConn.BackColor = Color.FromArgb(224, 224, 224)));
275
            btnConn.Invoke((Action)(() => btnConn.BackColor = Color.FromArgb(224, 224, 224)));
Line 329... Line 360...
329
        }
360
        }
330
        private void rtfError_LinkClicked(object sender, LinkClickedEventArgs e)
361
        private void rtfError_LinkClicked(object sender, LinkClickedEventArgs e)
331
        {
362
        {
332
            System.Diagnostics.Process.Start(e.LinkText);
363
            System.Diagnostics.Process.Start(e.LinkText);
333
        }
364
        }
-
 
365
 
334
        #endregion events
366
        #endregion events
Line 335... Line 367...
335
 
367
 
336
        /// <summary> Log data to the terminal window. </summary>
368
        /// <summary> Log data to the terminal window. </summary>
337
        /// <param name="msgtype"> The type of message to be written. </param>
369
        /// <param name="msgtype"> The type of message to be written. </param>
Line 404... Line 436...
404
                //Log(LogMsgType.Incoming, message.Length.ToString());
436
                //Log(LogMsgType.Incoming, message.Length.ToString());
405
                string s = new string(ASCIIEncoding.ASCII.GetChars(message, 0, message.Length));
437
                string s = new string(ASCIIEncoding.ASCII.GetChars(message, 0, message.Length));
406
                char cmdID;
438
                char cmdID;
407
                byte adr;
439
                byte adr;
408
                byte[] data;
440
                byte[] data;
-
 
441
                byte[] tmp = null;
409
                if (message[0] != '#')
442
                if (message[0] != '#')
-
 
443
                {
-
 
444
                    int iFound = -1;
-
 
445
                    for(int i=0;i<message.Length;i++)   //Sometimes the FC/NC sends strings without termination (like WP messages)
-
 
446
                    {                                   //so this is a workaround to not spam the log box
-
 
447
                        if (message[i] == 35)
-
 
448
                        {
-
 
449
                            iFound = i;
-
 
450
                            break;
-
 
451
                        }                          
-
 
452
                    }
-
 
453
                    if(iFound>0)
-
 
454
                    {
-
 
455
                        s = new string(ASCIIEncoding.ASCII.GetChars(message, 0,iFound));
-
 
456
                        tmp = new byte[message.Length - iFound];
-
 
457
                        Buffer.BlockCopy(message, iFound, tmp, 0, message.Length - iFound);
-
 
458
                    }
410
                    Log(LogMsgType.Normal, s.Trim('\0', '\n','\r'));
459
                    s = s.Trim('\0', '\n', '\r');
-
 
460
                    if(s.Length > 0)
-
 
461
                        Log(LogMsgType.Normal, s);
-
 
462
                    if (tmp != null)
-
 
463
                    {
-
 
464
                        s = new string(ASCIIEncoding.ASCII.GetChars(tmp, 0, tmp.Length));
-
 
465
                        processMessage(tmp);
-
 
466
                    }
-
 
467
                }
411
                //Debug.Print(s);
468
                //Debug.Print(s);
412
                else
469
                else
413
                {
470
                {
414
                    FlightControllerMessage.ParseMessage(message, out cmdID, out adr, out data);
471
                    FlightControllerMessage.ParseMessage(message, out cmdID, out adr, out data);
Line 439... Line 496...
439
                                break;
496
                                break;
440
                            default:
497
                            default:
441
                                lblCtrl.Invoke((Action)(() => lblCtrl.Text = "...."));
498
                                lblCtrl.Invoke((Action)(() => lblCtrl.Text = "...."));
442
                                break;
499
                                break;
443
                        }
500
                        }
444
                        _loadLabelNames();
501
                        _loadLabelNames();
445
                    }
502
                    }
446
                   // else
503
                    // else
447
                   //     Debug.Print("Address == 0?");
504
                    //     Debug.Print("Address == 0?");
Line 448... Line 505...
448
 
505
 
449
                    if (data != null && data.Length > 0)
506
                    if (data != null && data.Length > 0)
450
                    {
507
                    {
451
                        s = new string(ASCIIEncoding.ASCII.GetChars(data, 1, data.Length - 1));
508
                        s = new string(ASCIIEncoding.ASCII.GetChars(data, 1, data.Length - 1));
Line 456... Line 513...
456
                            case 'A': //Label names
513
                            case 'A': //Label names
457
                                _processLabelNames(s);
514
                                _processLabelNames(s);
458
                                break;
515
                                break;
Line 459... Line 516...
459
 
516
 
460
                            case 'D': //Debug data
517
                            case 'D': //Debug data
461
                                _processDebugVals(adr,data);
518
                                _processDebugVals(adr, data);
Line 462... Line 519...
462
                                break;
519
                                break;
463
 
520
 
464
                            case 'V': //Version
521
                            case 'V': //Version
Line 483... Line 540...
483
 
540
 
484
                            case 'H': //OSD Menue (with autoupdate - called by Key)
541
                            case 'H': //OSD Menue (with autoupdate - called by Key)
485
                                _processOSDAuto(data);
542
                                _processOSDAuto(data);
Line -... Line 543...
-
 
543
                                break;
-
 
544
 
-
 
545
                            case 'X': //Waypoint data
-
 
546
                                _processWPData(data);
486
                                break;
547
                                break;
487
 
548
 
488
                            //default:
549
                            //default:
489
                            //    Log(LogMsgType.Incoming, "cmd: " + cmdID.ToString());
550
                            //    Log(LogMsgType.Incoming, "cmd: " + cmdID.ToString());
490
                            //    Log(LogMsgType.Incoming, BitConverter.ToString(data));
551
                            //    Log(LogMsgType.Incoming, BitConverter.ToString(data));
Line 792... Line 853...
792
            else
853
            else
793
                if(_bErrorLog) _clearErrorLog("NC Error");
854
                if(_bErrorLog) _clearErrorLog("NC Error");
Line 794... Line 855...
794
 
855
 
795
        }
856
        }
-
 
857
        /// <summary>
-
 
858
        /// Navi-Ctrl WP data struct 'X'
-
 
859
        /// called by index
-
 
860
        /// </summary>
-
 
861
        /// <param name="data">the received byte array to process</param>
-
 
862
        void _processWPData(byte[] data)
-
 
863
        {
-
 
864
            if (data.Length >= 28)
-
 
865
            {
-
 
866
                int count = data[0];
-
 
867
                int index = data[1];
-
 
868
                cbWPIndex.Invoke((Action)(() => cbWPIndex.Items.Clear()));
-
 
869
                for (int i = 0; i < count; i++)
-
 
870
                    cbWPIndex.Invoke((Action)(() => cbWPIndex.Items.Add(i + 1)));
-
 
871
                cbWPIndex.Invoke((Action)(() => cbWPIndex.SelectedItem = index));
-
 
872
                DataRow dr = dtWaypoints.NewRow();
-
 
873
                dr = Waypoints.toDataRow(data, dr);
-
 
874
                dtWaypoints.Rows.Add(dr);
-
 
875
                dgvWP.Invoke((Action)(() => dgvWP.Update()));
-
 
876
            }
-
 
877
            else
-
 
878
                Debug.Print(new string(ASCIIEncoding.ASCII.GetChars(data, 0, data.Length)));
-
 
879
        }
796
        /// <summary>
880
        /// <summary>
797
        /// OSD Menue 'L'
881
        /// OSD Menue 'L'
798
        /// single page called by pagenumber
882
        /// single page called by pagenumber
799
        /// no autoupdate
883
        /// no autoupdate
800
        /// </summary>
884
        /// </summary>
Line 1201... Line 1285...
1201
            navctrlInterval = (byte)Convert.ToInt16(sVal);
1285
            navctrlInterval = (byte)Convert.ToInt16(sVal);
1202
            sVal = ini.IniReadValue("default", "IntervalBLCtrlData");
1286
            sVal = ini.IniReadValue("default", "IntervalBLCtrlData");
1203
            blctrlInterval = (byte)Convert.ToInt16(sVal);
1287
            blctrlInterval = (byte)Convert.ToInt16(sVal);
1204
            sVal = ini.IniReadValue("default", "IntervalOSDData");
1288
            sVal = ini.IniReadValue("default", "IntervalOSDData");
1205
            OSDInterval = (byte)Convert.ToInt16(sVal);
1289
            OSDInterval = (byte)Convert.ToInt16(sVal);
-
 
1290
            for(int i = 0; i < 12; i++)
-
 
1291
            {
-
 
1292
                sVal = ini.IniReadValue("serial", "ch" + i.ToString() + "Val");
-
 
1293
                if(sVal != "")
-
 
1294
                    serChan[i] = Convert.ToInt16(sVal);
-
 
1295
                sVal = ini.IniReadValue("serial", "ch" + i.ToString() + "Title");
-
 
1296
                if(sVal != "")
-
 
1297
                    serChanTitle[i] = sVal;
-
 
1298
            }
1206
        }
1299
        }
1207
        void _writeIni()
1300
        void _writeIni()
1208
        {
1301
        {
Line 1209... Line 1302...
1209
 
1302
 
Line 1217... Line 1310...
1217
 
1310
 
1218
            ini.IniWriteValue("default", "IntervalDebugData", debugInterval.ToString());
1311
            ini.IniWriteValue("default", "IntervalDebugData", debugInterval.ToString());
1219
            ini.IniWriteValue("default", "IntervalNavCtrlData", navctrlInterval.ToString());
1312
            ini.IniWriteValue("default", "IntervalNavCtrlData", navctrlInterval.ToString());
1220
            ini.IniWriteValue("default", "IntervalBLCtrlData", blctrlInterval.ToString());
1313
            ini.IniWriteValue("default", "IntervalBLCtrlData", blctrlInterval.ToString());
-
 
1314
            ini.IniWriteValue("default", "IntervalOSDData", OSDInterval.ToString());
-
 
1315
 
-
 
1316
            for (int i = 0; i < 12; i++)
-
 
1317
            {
-
 
1318
                ini.IniWriteValue("serial", "ch" + i.ToString() + "Val", serChan[i].ToString());
-
 
1319
                ini.IniWriteValue("serial", "ch" + i.ToString() + "Title", serChanTitle[i]);
-
 
1320
            }
1221
            ini.IniWriteValue("default", "IntervalOSDData", OSDInterval.ToString());
1321
 
Line 1222... Line 1322...
1222
        }
1322
        }
1223
 
1323
 
1224
        /// <summary>
1324
        /// <summary>
Line 1278... Line 1378...
1278
            int sec = ts.Seconds;
1378
            int sec = ts.Seconds;
1279
            int milli = ts.Milliseconds;
1379
            int milli = ts.Milliseconds;
Line 1280... Line 1380...
1280
 
1380
 
1281
            return deg.ToString("0° ") + min.ToString("0") + "' " + sec.ToString("0") + "," + milli.ToString() + "\"";
1381
            return deg.ToString("0° ") + min.ToString("0") + "' " + sec.ToString("0") + "," + milli.ToString() + "\"";
1282
        }
-
 
-
 
1382
        }
-
 
1383
        /// <summary>
-
 
1384
        /// Clear the line in the  errorlog window 
-
 
1385
        /// containing the error string when error has ceased
-
 
1386
        /// </summary>
1283
 
1387
        /// <param name="s">substring of errrormessage</param>
1284
        void _clearErrorLog(string s)
1388
        void _clearErrorLog(string s)
1285
        {
1389
        {
1286
            rtfError.Invoke((Action)(() =>
1390
            rtfError.Invoke((Action)(() =>
1287
            {
1391
            {
Line 1315... Line 1419...
1315
                    }
1419
                    }
1316
                }
1420
                }
1317
            }));
1421
            }));
Line 1318... Line 1422...
1318
 
1422
 
-
 
1423
        }
-
 
1424
        /// <summary>
-
 
1425
        /// request the Waypoint at index
-
 
1426
        /// </summary>
-
 
1427
        /// <param name="index"></param>
-
 
1428
        void _getpWP(int index)
-
 
1429
        {
-
 
1430
            if (simpleSerialPort.Port.IsOpen)
-
 
1431
            {
-
 
1432
                Stream serialStream = simpleSerialPort.Port.BaseStream;
-
 
1433
                byte[] bytes = FlightControllerMessage.CreateMessage('x', 2, new byte[1] { (byte)index });
-
 
1434
                serialStream.Write(bytes, 0, bytes.Length);
-
 
1435
            }
-
 
1436
            else
-
 
1437
                Log(LogMsgType.Error, "NOT CONNECTED!");
-
 
1438
 
-
 
1439
        }
-
 
1440
        /// <summary>
-
 
1441
        /// Sending the serial channel values
-
 
1442
        /// </summary>
-
 
1443
        void _sendSerialData()
-
 
1444
        {
-
 
1445
            byte[] serData = new byte[12];
-
 
1446
            for(int i = 0; i < 12; i++)
-
 
1447
            {
-
 
1448
                serData[i] = unchecked((byte)(serChan[i] - 127));
-
 
1449
            }
-
 
1450
            _sendControllerMessage('y', 1, serData);
-
 
1451
        }
-
 
1452
 
-
 
1453
        void _initSerialCtrl()
-
 
1454
        {
-
 
1455
            trckbarSerial1.Value = serChan[0];
-
 
1456
            textBoxSerial1.Text = serChanTitle[0];
-
 
1457
            lblTbSerial1.Text = serChan[0].ToString();
-
 
1458
            trckbarSerial2.Value = serChan[1];
-
 
1459
            textBoxSerial2.Text = serChanTitle[1];
-
 
1460
            lblTbSerial2.Text = serChan[1].ToString();
1319
        }
1461
        }
Line 1320... Line 1462...
1320
        #endregion functions
1462
        #endregion functions
1321
 
1463
 
1322
        #region buttons
1464
        #region buttons
Line 1436... Line 1578...
1436
        /// call the OSDMenue with Key 0x4
1578
        /// call the OSDMenue with Key 0x4
1437
        private void btnOSDEnter_Click(object sender, EventArgs e)
1579
        private void btnOSDEnter_Click(object sender, EventArgs e)
1438
        {
1580
        {
1439
            _OSDMenueAutoRefresh(4);
1581
            _OSDMenueAutoRefresh(4);
1440
        }
1582
        }
-
 
1583
        private void btnGetWP_Click(object sender, EventArgs e)
-
 
1584
        {
-
 
1585
            if(cbWPIndex.Items.Count >0)
-
 
1586
            _getpWP((int)cbWPIndex.SelectedItem);
-
 
1587
            else
-
 
1588
                _getpWP(1);
-
 
1589
        }
1441
        #endregion buttons
1590
        #endregion buttons
Line -... Line 1591...
-
 
1591
 
-
 
1592
        private void tbSerial1_Scroll(object sender, EventArgs e)
-
 
1593
        {
-
 
1594
            lblTbSerial1.Text = trckbarSerial1.Value.ToString();
-
 
1595
            serChan[0] = trckbarSerial1.Value;
-
 
1596
            if (!_init) _sendSerialData();
-
 
1597
        }
-
 
1598
        private void textBoxSerial1_TextChanged(object sender, EventArgs e)
-
 
1599
        {
-
 
1600
            serChanTitle[0] = textBoxSerial1.Text;
-
 
1601
        }
-
 
1602
        private void btnSer1_0_Click(object sender, EventArgs e)
-
 
1603
        {
-
 
1604
            trckbarSerial1.Value = 0;
-
 
1605
        }
-
 
1606
 
-
 
1607
        private void btnSer1_127_Click(object sender, EventArgs e)
-
 
1608
        {
-
 
1609
            trckbarSerial1.Value = 127;
-
 
1610
        }
-
 
1611
 
-
 
1612
        private void btnSer1_254_Click(object sender, EventArgs e)
-
 
1613
        {
-
 
1614
            trckbarSerial1.Value = 254;
-
 
1615
        }
-
 
1616
 
-
 
1617
        private void trckbarSerial1_ValueChanged(object sender, EventArgs e)
-
 
1618
        {
-
 
1619
            lblTbSerial1.Text = trckbarSerial1.Value.ToString();
-
 
1620
            serChan[0] = trckbarSerial1.Value;
-
 
1621
            if (!_init) _sendSerialData();
-
 
1622
        }
-
 
1623
 
-
 
1624
        private void textBoxSerial2_TextChanged(object sender, EventArgs e)
-
 
1625
        {
-
 
1626
            serChanTitle[2] = textBoxSerial2.Text;
-
 
1627
        }
-
 
1628
 
-
 
1629
        private void trckbarSerial2_ValueChanged(object sender, EventArgs e)
-
 
1630
        {
-
 
1631
            lblTbSerial2.Text = trckbarSerial2.Value.ToString();
-
 
1632
            serChan[1] = trckbarSerial2.Value;
-
 
1633
            if (!_init) _sendSerialData();
-
 
1634
 
-
 
1635
        }
-
 
1636
 
-
 
1637
        private void btnSer2_0_Click(object sender, EventArgs e)
-
 
1638
        {
-
 
1639
            trckbarSerial2.Value = 0;
-
 
1640
        }
-
 
1641
 
-
 
1642
        private void btnSer2_127_Click(object sender, EventArgs e)
-
 
1643
        {
-
 
1644
            trckbarSerial2.Value = 127;
-
 
1645
        }
-
 
1646
 
-
 
1647
        private void btnSer2_254_Click(object sender, EventArgs e)
-
 
1648
        {
-
 
1649
            trckbarSerial2.Value = 254;
1442
 
1650
        }
1443
    }
1651
    }
1444
    public class IniFile
1652
    public class IniFile
1445
    {
1653
    {