Advertisement
Guest User

Untitled

a guest
Aug 14th, 2018
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 29.94 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.IO.Ports;
  10. using System.Windows.Forms;
  11. using System.Threading;
  12. using System.Text.RegularExpressions;
  13. using FTD2XX_NET;
  14.  
  15. namespace ministream_control
  16. {
  17.     public partial class Form1 : Form
  18.     {
  19.         internal delegate void SerialDataReceivedEventHandlerDelegate(object sender, SerialDataReceivedEventArgs e);
  20.         delegate void SetTextCallback(string text);
  21.         System.Threading.Timer t;
  22.         string InputData = String.Empty;
  23.         string reply = String.Empty;
  24.  
  25.         private EventWaitHandle DataReceived = new EventWaitHandle(false, EventResetMode.AutoReset);    // Handle for data received events
  26.         BackgroundWorker DataHandler = new BackgroundWorker();  // Second thread for processing data received
  27.  
  28.         UInt32 ftdiDeviceCount = 0;
  29.         FTDI.FT_STATUS ftStatus = FTDI.FT_STATUS.FT_OK;
  30.        
  31.         // Create new instance of the FTDI device class
  32.         FTDI myFtdiDevice = new FTDI();
  33.  
  34.         int powerShutdown = 0;
  35.         int activeroute = 0;
  36.         int activeUSB = 0;
  37.         int calType = 0;
  38.         bool com_closed = false;
  39.         bool ftdi_inited = false;
  40.  
  41.         public Form1()
  42.         {
  43.             InitializeComponent();
  44.             this.FormBorderStyle = FormBorderStyle.FixedDialog;
  45.             //serialPort1.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(port_DataReceived_1);
  46.             t = new System.Threading.Timer(new TimerCallback(callback));
  47.         }
  48.  
  49.         private void Form1_Load(object sender, EventArgs e)
  50.         {
  51.             label2.MaximumSize = new Size(120, 0);
  52.             label2.AutoSize = true;
  53.  
  54.             //Get_FTDI_connected();
  55.             //   timer2.Interval = 500;
  56.             //  timer2.Enabled = true;
  57.  
  58.            
  59.             t.Change(0, 500);
  60.         }
  61.         void DataHandler_DoWork(object sender, DoWorkEventArgs e)
  62.         {
  63.             FTDI.FT_STATUS ftStatus = FTDI.FT_STATUS.FT_OK;
  64.             string readData;
  65.             UInt32 numBytes = 0;
  66.  
  67.             // Loop forever
  68.             for (; ; )
  69.             {
  70.                 // Wait for a FT_EVENT_RXCHAR event
  71.                 if (DataReceived.WaitOne(100))
  72.                 {
  73.                     // Find out how many bytes have been received
  74.                     if ((ftStatus = myFtdiDevice.GetRxBytesAvailable(ref numBytes)) != FTDI.FT_STATUS.FT_OK)
  75.                     {
  76.                         continue;
  77.                     }
  78.  
  79.                     // Read the bytes out
  80.                     if ((ftStatus = myFtdiDevice.Read(out readData, numBytes, ref numBytes)) != FTDI.FT_STATUS.FT_OK)
  81.                     {
  82.                         continue;
  83.                     }
  84.                    //handle  readData);
  85.                 }
  86.  
  87.                 if (DataHandler.CancellationPending)
  88.                     break;
  89.             }
  90.         }
  91.  
  92.  
  93.         private async void Init_FTDI()
  94.         {
  95.             byte[] dataToWrite = new byte[1];
  96.             dataToWrite[0] = 0x00;
  97.             UInt32 numBytesWritten = 0;
  98.  
  99.             ftStatus = myFtdiDevice.OpenBySerialNumber("B"); //port B
  100.             ftStatus = myFtdiDevice.SetBitMode(0xff, 0x1); //set async bitbang, all outputs
  101.             ftStatus = myFtdiDevice.SetBaudRate(9600);
  102.             dataToWrite[0] = 0x01; //set D0 to H (MCU reset)
  103.             ftStatus = myFtdiDevice.Write(dataToWrite, 1, ref numBytesWritten); //set all pins on port B to 0
  104.  
  105.             myFtdiDevice.Close(); //Close port B
  106.  
  107.             ftStatus = myFtdiDevice.OpenBySerialNumber("D"); //port D
  108.             ftStatus = myFtdiDevice.SetBitMode(0x37, 0x1); //set async bitbang
  109.             ftStatus = myFtdiDevice.SetBaudRate(9600);
  110.             dataToWrite[0] = 0x15;
  111.             ftStatus = myFtdiDevice.Write(dataToWrite, 1, ref numBytesWritten); //set all pins on port D to 0
  112.  
  113.             myFtdiDevice.Close(); //close port D
  114.  
  115.             ftStatus = myFtdiDevice.OpenBySerialNumber("C"); //port C - actual UART
  116.             ftStatus = myFtdiDevice.SetBaudRate(115200);
  117.             ftStatus = myFtdiDevice.SetDataCharacteristics(
  118.                 FTDI.FT_DATA_BITS.FT_BITS_8,
  119.                 FTDI.FT_STOP_BITS.FT_STOP_BITS_1,
  120.                 FTDI.FT_PARITY.FT_PARITY_NONE);
  121.             ftStatus = myFtdiDevice.SetTimeouts(0, 0);
  122.           /*  // Start the received data thread
  123.             if (!DataHandler.IsBusy)
  124.                 DataHandler.RunWorkerAsync();
  125.  
  126.             // Subscribe to FT_EVENT_RXCHAR events
  127.             ftStatus = myFtdiDevice.SetEventNotification(FTDI.FT_EVENTS.FT_EVENT_RXCHAR, DataReceived);
  128.             //ftStatus = myFtdiDevice.Write(dataToWrite, 1, ref numBytesWritten); */
  129.  
  130.             if (ftStatus != FTDI.FT_STATUS.FT_OK)
  131.             {
  132.                 this.Invoke((Action)(() => { label2.Text = "Initializing board Error!"; }));
  133.                 this.Invoke((Action)(() => { label2.ForeColor = System.Drawing.Color.Red; }));
  134.             }
  135.             else
  136.             {
  137.                 this.Invoke((Action)(() => { label2.Text = "LakeWest Emulator Initialized"; }));
  138.                 this.Invoke((Action)(() => { label2.ForeColor = System.Drawing.Color.Green; }));
  139.             }
  140.  
  141.             ftdi_inited = true;
  142.             t.Change(0, 500);
  143.         }
  144.  
  145.         //separate backround timer thread
  146.         private void callback(object state)
  147.         {
  148.             ftStatus = myFtdiDevice.GetNumberOfDevices(ref ftdiDeviceCount);
  149.  
  150.             if (ftStatus == FTDI.FT_STATUS.FT_OK && ftdiDeviceCount == 4)
  151.             {
  152.                 if (!ftdi_inited)
  153.                 {
  154.                     t.Change(0, 0xffff);
  155.                     this.Invoke((Action)(() => { label2.Text = "Initializing..."; }));
  156.                     this.Invoke((Action)(() => { label2.ForeColor = System.Drawing.Color.Green; }));
  157.                    
  158.                     //Update();
  159.                     //Thread.Sleep(2000);
  160.                     Init_FTDI();
  161.                 }
  162.             }
  163.             else
  164.             {
  165.                 this.Invoke((Action)(() => { label2.Text = "No LakeWest board found!"; }));
  166.                 this.Invoke((Action)(() => { label2.ForeColor = System.Drawing.Color.Red; }));
  167.                 ftdi_inited = false;
  168.             }
  169.         }
  170.  
  171.     /*    private async void Get_FTDI_connected() //ping FTDI driver
  172.         {
  173.             ftStatus = myFtdiDevice.GetNumberOfDevices(ref ftdiDeviceCount);
  174.  
  175.             if (ftStatus == FTDI.FT_STATUS.FT_OK && ftdiDeviceCount == 4)
  176.             {
  177.                 if(!ftdi_inited)
  178.                 {
  179.                     label2.Text = "Initializing...";
  180.                     label2.ForeColor = System.Drawing.Color.Green;
  181.                     Update();
  182.                     Thread.Sleep(2000);
  183.                     Init_FTDI();
  184.                 }          
  185.             }
  186.             else
  187.             {
  188.                 label2.Text = "No LakeWest board found!";
  189.                 label2.ForeColor = System.Drawing.Color.Red;
  190.                 ftdi_inited = false;
  191.             }
  192.         }
  193.         */
  194.  
  195.         private async void refresh_USB_ADC()
  196.         {
  197.             for (int i = 0; i < 5; i++)
  198.             {
  199.                 activeUSB = i;
  200.                 com_write("[getADC]{port:" + i.ToString() + "}\n");
  201.                 await Task.Delay(250);
  202.             }          
  203.         }
  204.  
  205.  
  206.         private async void button1_Click(object sender, EventArgs e)
  207.         {
  208.  
  209.             for (int i = 0; i < 3; i++)
  210.             {
  211.                 activeUSB = i;
  212.                 calType = 0;
  213.                 com_write("[setADCcal]{port:" + i.ToString() + ",type:0}\n");
  214.                 await Task.Delay(200);
  215.                 com_write("[getADCcal]{port:" + i.ToString() + ",type:0}\n");
  216.                 await Task.Delay(200);
  217.             }
  218.  
  219.          /*   for (int i = 0; i < 3; i++)
  220.             {
  221.                 activeUSB = i;
  222.  
  223.                 calType = 0;
  224.                 com_write("[getADCcal]{port:" + i.ToString() + ",type:0}\n");
  225.                 await Task.Delay(300);
  226.                 calType = 1;
  227.                 com_write("[getADCcal]{port:" + i.ToString() + ",type:1}\n");
  228.                 await Task.Delay(300);
  229.             } */
  230.  
  231.         }
  232.  
  233.         private void port_DataReceived_1(object sender, SerialDataReceivedEventArgs e)
  234.         {
  235.             dataReceived_callback();
  236.            
  237.         }
  238.  
  239.         private void dataReceived_callback()
  240.         {
  241.             InputData = serialPort1.ReadLine();
  242.             if (InputData != String.Empty)
  243.             {
  244.                
  245.                 this.BeginInvoke(new SetTextCallback(SetText), new object[] { InputData });
  246.                
  247.             }
  248.         }
  249.  
  250.         private void SetText(string text)
  251.         {          
  252.             this.console.Text += text + "\n";
  253.             decode_protocol(text);
  254.         }
  255.  
  256.         private void com_write(string text)
  257.         {
  258.             string serial;
  259.             UInt32 numBytesWritten = 0;
  260.  
  261.             myFtdiDevice.GetSerialNumber(out serial);
  262.  
  263.             if (serial != "C")
  264.             {
  265.                 handle_closed_com();
  266.             }
  267.             else
  268.             {
  269.                 this.console.Text += text;
  270.                 myFtdiDevice.Write(text, text.Length, ref numBytesWritten);            
  271.             }
  272.         }
  273.  
  274.         private void handle_closed_com()
  275.         {
  276.             if (!com_closed)
  277.             {
  278.                 MessageBox.Show("MiniStreamer not connected!");
  279.                 com_closed = true;
  280.             }
  281.         }
  282.  
  283.         private void decode_protocol(string input)
  284.         {
  285.             var regex = new Regex(@"\[(.*)\]\{(.*?)(:([-0-9]*))?(\,(.*?):([-0-9]*))?(\,(.*?):([-0-9]*))?(\,(.*?):([-0-9]*))?\}");
  286.  
  287.             var matches = regex.Matches(input);
  288.             int param = 0;
  289.  
  290.             int voltage = 0; //3
  291.             int power = 0; //9
  292.             int current = 0; //6
  293.             int portUSB = 0;
  294.             int board_revision = 0;
  295.             int firmware_version = 0;
  296.             int board_type = 0;
  297.             float voltage_float = 0;
  298.  
  299.  
  300.             switch (matches[0].Groups[1].Value)
  301.             {
  302.                 case "pushBoardVersion":
  303.                     if (!int.TryParse(matches[0].Groups[4].Value, out board_revision)) { }
  304.                     if (!int.TryParse(matches[0].Groups[7].Value, out firmware_version)) { }
  305.                     if (!int.TryParse(matches[0].Groups[10].Value, out board_type)) { }
  306.                     float fw_version = (float)firmware_version / 100;
  307.                     float brd_version = (float)board_revision / 10;
  308.                     label27.Text = "v" + fw_version.ToString();
  309.                     label26.Text = "A" + brd_version.ToString();
  310.                     switch(board_type)
  311.                     {
  312.                         case 0: label25.Text = "LW Mini"; break;
  313.                         case 1: label25.Text = "ProJect"; break;
  314.                         case 2: label25.Text = " Stack "; break;
  315.                     }
  316.  
  317.                    
  318.                     break;
  319.                 case "pushUSB":
  320.                     if (!int.TryParse(matches[0].Groups[4].Value, out param)) { }
  321.  
  322.                     if (param == 1)
  323.                     {
  324.                         radioButton1.Checked = false;
  325.                         radioButton2.Checked = true;
  326.                     }
  327.                     else
  328.                     {
  329.                         radioButton1.Checked = true;
  330.                         radioButton2.Checked = false;
  331.                     }
  332.  
  333.                     if (!int.TryParse(matches[0].Groups[7].Value, out param)) { }
  334.  
  335.                     powerShutdown = param;
  336.                     if (param == 1)
  337.                     {
  338.                         radioButton4.Checked = false;
  339.                         radioButton3.Checked = true;
  340.                     }
  341.                     else
  342.                     {
  343.                         radioButton4.Checked = true;
  344.                         radioButton3.Checked = false;
  345.                     }
  346.  
  347.                     break;
  348.                 case "pushADC":
  349.  
  350.                     if (!int.TryParse(matches[0].Groups[4].Value, out portUSB)) { }
  351.                     if (!int.TryParse(matches[0].Groups[7].Value, out voltage)) { }
  352.                     if (!int.TryParse(matches[0].Groups[10].Value, out current)) { }
  353.                     voltage_float = (float) voltage;
  354.                     voltage_float /= 100;
  355.                     switch (portUSB)
  356.                     {
  357.                         case 0:
  358.                             label_v0.Text = voltage_float.ToString() + "V";
  359.                             label_c0.Text = current.ToString() + "mA";
  360.                             break;
  361.                         case 1:
  362.                             label_v1.Text = voltage_float.ToString() + "V";
  363.                             label_c1.Text = current.ToString() + "mA";
  364.                             break;
  365.                         case 2:
  366.                             label_v2.Text = voltage_float.ToString() + "V";
  367.                             label_c2.Text = current.ToString() + "mA";
  368.                             break;
  369.                         case 3:
  370.                             label1.Text = voltage_float.ToString() + "V";
  371.                             label11.Text = current.ToString() + "mA";
  372.                             break;
  373.                         case 4:
  374.                             label12.Text = voltage_float.ToString() + "V";
  375.                             break;
  376.                     }                  
  377.                     break;
  378.                 case "pushADCcal":
  379.                     if(matches[0].Groups[2].Value == "confirmCalibrationStart")
  380.                     {
  381.                         com_write("[replyADCcal]{y}\n");
  382.                     }
  383.                     else
  384.                     {
  385.                         if (int.TryParse(matches[0].Groups[4].Value, out param))
  386.                         {
  387.                             if (calType == 0)
  388.                             {
  389.                                 switch (activeUSB)
  390.                                 {
  391.                                     case 0: label_calO0.Text = param.ToString(); break;
  392.                                     case 1: label_calO1.Text = param.ToString(); break;
  393.                                     case 2: label_calO2.Text = param.ToString(); break;
  394.                                 }
  395.                             }
  396.                             else
  397.                             {
  398.                                 param *= 2;
  399.                                 switch (activeUSB)
  400.                                 {
  401.                                     case 0: label_calI0.Text = param.ToString() + "mR"; break;
  402.                                     case 1: label_calI1.Text = param.ToString() + "mR"; break;
  403.                                     case 2: label_calI2.Text = param.ToString() + "mR"; break;
  404.                                 }
  405.                             }
  406.                         }                      
  407.                     }
  408.                     break;
  409.                 case "pushADCfactory":
  410.                     if (matches[0].Groups[2].Value == "confirmCalibrationDefaults")
  411.                     {
  412.                         com_write("[replyADCfactory]{y}\n");
  413.                     }
  414.                     break;
  415.                 case "pushADCdefaults":
  416.                     if (!int.TryParse(matches[0].Groups[4].Value, out voltage)) { }
  417.                     if (!int.TryParse(matches[0].Groups[7].Value, out current)) { }
  418.                     current *= 2;
  419.                     switch (activeUSB)
  420.                     {
  421.                         case 0:
  422.                             label_cal_fO0.Text = voltage.ToString();
  423.                             label_cal_fI0.Text = current.ToString() + "mR";
  424.                             break;
  425.                         case 1:
  426.                             label_cal_fO1.Text = voltage.ToString();
  427.                             label_cal_fI1.Text = current.ToString() + "mR";
  428.                             break;
  429.                         case 2:
  430.                             label_cal_fO2.Text = voltage.ToString();
  431.                             label_cal_fI2.Text = current.ToString() + "mR";
  432.                             break;
  433.                     }
  434.                     break;
  435.             }
  436.         }
  437.  
  438.         private void timer1_Tick(object sender, EventArgs e) //1s timer
  439.         {
  440.             refresh_USB_ADC();
  441.  
  442.         }
  443.  
  444.         private void timer2_Tick(object sender, EventArgs e) //500ms timer
  445.         {
  446.             //Get_FTDI_connected();
  447.         }
  448.  
  449.         private void label1_Click(object sender, EventArgs e)
  450.         {
  451.  
  452.         }
  453.  
  454.         private void label7_Click(object sender, EventArgs e)
  455.         {
  456.  
  457.         }
  458.  
  459.         private void label22_Click(object sender, EventArgs e)
  460.         {
  461.  
  462.         }
  463.  
  464.         private void button9_Click(object sender, EventArgs e) //refresh usb values
  465.         {
  466.             refresh_USB_ADC();
  467.         }
  468.  
  469.         private void button10_Click(object sender, EventArgs e) //force bootloader
  470.         {
  471.             com_write("[setBoot]{boot:1}\n");
  472.         }
  473.  
  474.         private void button11_Click(object sender, EventArgs e) //power off the unit
  475.         {
  476.             com_write("[setTurnOff]{cmd:1}\n");
  477.         }
  478.  
  479.         private void radioButton1_CheckedChanged(object sender, EventArgs e) //CM3
  480.         {
  481.            
  482.             if(radioButton1.Checked)
  483.             {
  484.                 com_write("[setUSB]{activeRoute:0,powerShutdown:" + powerShutdown.ToString() + "}\n");
  485.                 activeroute = 0;
  486.             }
  487.             else
  488.             {
  489.                 com_write("[setUSB]{activeRoute:1,powerShutdown:" + powerShutdown.ToString() + "}\n");
  490.                 activeroute = 1;
  491.             }
  492.         }
  493.  
  494.         private void button12_Click(object sender, EventArgs e)
  495.         {
  496.             console.Clear();
  497.         }
  498.  
  499.         private void radioButton4_CheckedChanged(object sender, EventArgs e) //POWER ON
  500.         {
  501.             if (radioButton4.Checked)
  502.             {
  503.                 powerShutdown = 0;
  504.             }
  505.             else
  506.             {
  507.                 powerShutdown = 1;
  508.             }
  509.             com_write("[setUSB]{activeRoute:" + activeroute.ToString() + ",powerShutdown:" + powerShutdown.ToString() + "}\n");
  510.         }
  511.  
  512.         private void radioButton3_CheckedChanged(object sender, EventArgs e) //POWER OFF
  513.         {
  514.             if (radioButton4.Checked)
  515.             {
  516.                 powerShutdown = 0;
  517.             }
  518.             else
  519.             {
  520.                 powerShutdown = 1;
  521.             }
  522.             com_write("[setUSB]{activeRoute:" + activeroute.ToString() + ",powerShutdown:" + powerShutdown.ToString() + "}\n");
  523.         }
  524.  
  525.         private void radioButton2_CheckedChanged(object sender, EventArgs e) //DAC
  526.         {
  527.             if (radioButton1.Checked)
  528.             {
  529.                 com_write("[setUSB]{activeRoute:0,powerShutdown:" + powerShutdown.ToString() + "}\n");
  530.                 activeroute = 0;
  531.             }
  532.             else
  533.             {
  534.                 com_write("[setUSB]{activeRoute:1,powerShutdown:" + powerShutdown.ToString() + "}\n");
  535.                 activeroute = 1;
  536.             }
  537.         }
  538.  
  539.         private async void button4_Click(object sender, EventArgs e) //calibrate USB DAC
  540.         {
  541.             com_write("[setADCcal]{port:0,type:1}\n");
  542.             await Task.Delay(300);
  543.             com_write("[getADCcal]{port:0,type:1}\n");
  544.             calType = 1;
  545.             activeUSB = 0;
  546.         }
  547.  
  548.         private async void button5_Click(object sender, EventArgs e)
  549.         {
  550.             com_write("[setADCcal]{port:1,type:1}\n");
  551.             await Task.Delay(300);
  552.             com_write("[getADCcal]{port:1,type:1}\n");
  553.             calType = 1;
  554.             activeUSB = 1;
  555.         }
  556.  
  557.         private async void button6_Click(object sender, EventArgs e)
  558.         {
  559.             com_write("[setADCcal]{port:2,type:1}\n");
  560.             await Task.Delay(300);
  561.             com_write("[getADCcal]{port:2,type:1}\n");
  562.             calType = 1;
  563.             activeUSB = 2;
  564.         }
  565.  
  566.         private async void button7_Click(object sender, EventArgs e)
  567.         {
  568.             DialogResult dialogResult = MessageBox.Show("Are you sure you want to set new calibration factory defaults?", "Factory Defaults", MessageBoxButtons.YesNo);
  569.            
  570.             if (dialogResult == DialogResult.Yes)
  571.             {
  572.                 com_write("[setADCfactory]{lake768}\n");
  573.                 await Task.Delay(500);
  574.  
  575.                 for (int i = 0; i < 3; i++)
  576.                 {
  577.                     activeUSB = i;                  
  578.                     com_write("[getADCdefaults]{port:" + i.ToString() + "}\n");
  579.                     await Task.Delay(300);
  580.                 }
  581.                 for (int i = 0; i < 3; i++)
  582.                 {
  583.                     activeUSB = i;
  584.                     com_write("[getADCdefaults]{port:" + i.ToString() + "}\n");
  585.                     await Task.Delay(300);
  586.                 }
  587.             }
  588.         }
  589.  
  590.         private async void button8_Click(object sender, EventArgs e)
  591.         {
  592.             for (int i = 0; i < 3; i++)
  593.             {
  594.                 activeUSB = i;
  595.                
  596.                 com_write("[setADCdefaults]{port:" + i.ToString() + "}\n");
  597.                 await Task.Delay(300);
  598.  
  599.             }
  600.             for (int i = 0; i < 3; i++)
  601.             {
  602.                 activeUSB = i;
  603.                 calType = 0;
  604.                 com_write("[getADCcal]{port:" + activeUSB.ToString() + ",type:0}\n");
  605.                 await Task.Delay(300);
  606.                 calType = 1;
  607.                 com_write("[getADCcal]{port:" + activeUSB.ToString() + ",type:1}\n");
  608.                 await Task.Delay(300);
  609.             }
  610.             for (int i = 0; i < 3; i++)
  611.             {
  612.                 activeUSB = i;
  613.                 calType = 0;
  614.                 com_write("[getADCcal]{port:" + activeUSB.ToString() + ",type:0}\n");
  615.                 await Task.Delay(300);
  616.                 calType = 1;
  617.                 com_write("[getADCcal]{port:" + activeUSB.ToString() + ",type:1}\n");
  618.                 await Task.Delay(300);
  619.             }
  620.         }
  621.  
  622.         private void checkBox1_CheckedChanged(object sender, EventArgs e)
  623.         {
  624.             if(checkBox1.Checked)
  625.             {
  626.                 timer1.Interval = 1500;
  627.                 timer1.Enabled = true;
  628.             }
  629.             else
  630.             {
  631.                 timer1.Enabled = false;
  632.             }
  633.         }
  634.  
  635.         private void label_calI0_Click(object sender, EventArgs e)
  636.         {
  637.  
  638.         }
  639.  
  640.         private async void button14_Click(object sender, EventArgs e)
  641.         {
  642.             for (int i = 0; i < 3; i++)
  643.             {
  644.                 activeUSB = i;              
  645.                 calType = 0;
  646.                 com_write("[getADCcal]{port:" + activeUSB.ToString() + ",type:0}\n");
  647.                 await Task.Delay(300);
  648.                 calType = 1;
  649.                 com_write("[getADCcal]{port:" + activeUSB.ToString() + ",type:1}\n");
  650.                 await Task.Delay(300);
  651.             }
  652.             for (int i = 0; i < 3; i++)
  653.             {
  654.                 activeUSB = i;
  655.                 calType = 0;
  656.                 com_write("[getADCcal]{port:" + activeUSB.ToString() + ",type:0}\n");
  657.                 await Task.Delay(300);
  658.                 calType = 1;
  659.                 com_write("[getADCcal]{port:" + activeUSB.ToString() + ",type:1}\n");
  660.                 await Task.Delay(300);
  661.             }
  662.         }
  663.  
  664.         private async void button13_Click(object sender, EventArgs e)
  665.         {
  666.             for (int i = 0; i < 3; i++)
  667.             {
  668.                 activeUSB = i;
  669.                 com_write("[getADCdefaults]{port:" + activeUSB.ToString() + "}\n");
  670.                 await Task.Delay(300);
  671.             }
  672.  
  673.             for (int i = 0; i < 3; i++)
  674.             {
  675.                 activeUSB = i;
  676.                 com_write("[getADCdefaults]{port:" + activeUSB.ToString() + "}\n");
  677.                 await Task.Delay(300);
  678.             }
  679.         }
  680.  
  681.         private void console_TextChanged(object sender, EventArgs e)
  682.         {
  683.  
  684.             // set the current caret position to the end
  685.             console.SelectionStart = console.Text.Length;
  686.             // scroll it automatically
  687.             console.ScrollToCaret();
  688.            
  689.         }
  690.  
  691.         private void label11_Click(object sender, EventArgs e)
  692.         {
  693.  
  694.         }
  695.  
  696.         private void label16_Click(object sender, EventArgs e)
  697.         {
  698.  
  699.         }
  700.  
  701.         private async void button15_Click(object sender, EventArgs e)
  702.         {
  703.             com_write("[getBoardVersion]{}\n");
  704.         }
  705.  
  706.         private void label9_Click(object sender, EventArgs e)
  707.         {
  708.  
  709.         }
  710.  
  711.         private void label20_Click(object sender, EventArgs e)
  712.         {
  713.  
  714.         }
  715.  
  716.         private void groupBox19_Enter(object sender, EventArgs e)
  717.         {
  718.  
  719.         }
  720.  
  721.         private void label24_Click(object sender, EventArgs e)
  722.         {
  723.  
  724.         }
  725.  
  726.         private void label25_Click(object sender, EventArgs e)
  727.         {
  728.  
  729.         }
  730.  
  731.         /*    private void refresh_com_ports( )
  732.     {
  733.         string[] ArrayComPortsNames = null;
  734.         int index = -1;
  735.         string ComPortName = null;
  736.  
  737.        // comboBox1.Items.Clear();
  738.  
  739.         //Com Ports
  740.         ArrayComPortsNames = SerialPort.GetPortNames();
  741.  
  742.         if(ArrayComPortsNames.Length > 0)
  743.         {
  744.             do
  745.             {
  746.                 index += 1;
  747.                // comboBox1.Items.Add(ArrayComPortsNames[index]);
  748.             } while (!((ArrayComPortsNames[index] == ComPortName) ||
  749.                     (index == ArrayComPortsNames.GetUpperBound(0))));
  750.  
  751.             Array.Sort(ArrayComPortsNames);
  752.  
  753.             if (index == ArrayComPortsNames.GetUpperBound(0))
  754.             {
  755.                 ComPortName = ArrayComPortsNames[0];
  756.             }
  757.  
  758.             //get first item print in text
  759.             //comboBox1.Text = ArrayComPortsNames[0];
  760.         }
  761.  
  762.     }  
  763.     private async void button3_Click(object sender, EventArgs e)
  764.     {
  765.         if (button3.Text == "Connect")
  766.         {  
  767.             if(serialPort1.IsOpen)
  768.             {
  769.                 serialPort1.Close();
  770.             }
  771.  
  772.             try
  773.             {
  774.                // serialPort1.PortName = comboBox1.Text;
  775.             }
  776.             catch (ArgumentException)
  777.             {
  778.                 MessageBox.Show("No COM selected.");
  779.             }
  780.             serialPort1.BaudRate = 115200;
  781.             serialPort1.DataBits = 8;
  782.             serialPort1.StopBits = (StopBits)Enum.Parse(typeof(StopBits), "One");
  783.             serialPort1.Handshake = (Handshake)Enum.Parse(typeof(Handshake), "None");
  784.             serialPort1.Parity = (Parity)Enum.Parse(typeof(Parity), "None");
  785.  
  786.             try
  787.             {
  788.                 serialPort1.Open();
  789.                 button3.Text = "Disconnect";
  790.                 com_closed = false;
  791.                /* refresh_USB_ADC();
  792.                 await Task.Delay(200);
  793.                 com_write("[getUSB]{}\n");
  794.                 await Task.Delay(200);
  795.                 refresh_calibration();
  796.             }
  797.             catch (UnauthorizedAccessException)
  798.             {
  799.                 MessageBox.Show(serialPort1.PortName + " is probably already in use.");
  800.             }
  801.             catch (ArgumentOutOfRangeException)
  802.             {
  803.                 MessageBox.Show(serialPort1.PortName + " port doesn't support 115200 baudrate.");
  804.             }
  805.  
  806.         }
  807.         else if (button3.Text == "Disconnect")
  808.         {
  809.             button3.Text = "Connect";
  810.             serialPort1.Close();
  811.         }
  812.     }
  813.     */
  814.  
  815.  
  816.     }
  817.  
  818.  
  819.  
  820.     /*
  821.     public class ProtocolMessage
  822.     {
  823.         public enum Command
  824.         {
  825.             pushUSB,
  826.             pushADC,
  827.             pushADCcal,
  828.             pushADCdefaults,
  829.             pushADCfactory,
  830.             pushPowerStatus,
  831.             pushBoot,
  832.             pushTurnOff,
  833.             pushBoardVersion
  834.         }
  835.  
  836.         public Command cmd;
  837.  
  838.         private Dictionary<string, int> parameter_list;
  839.  
  840.         public ProtocolMessage(string message)
  841.         {
  842.             parameter_list = new Dictionary<string, int>();
  843.             parseString(message);
  844.         }
  845.  
  846.         public int this[string key]
  847.         {
  848.             get
  849.             {
  850.                 return parameter_list[key];
  851.             }
  852.  
  853.             set
  854.             {
  855.                 parameter_list[key] = value;
  856.             }
  857.         }
  858.  
  859.         public string[] getNames()
  860.         {
  861.             return parameter_list.Keys.ToArray();
  862.         }
  863.  
  864.         public int[] getValues()
  865.         {
  866.             return parameter_list.Values.ToArray();
  867.         }
  868.  
  869.         public override string ToString()
  870.         {
  871.             string result = "[" + Enum.GetName(typeof(Command), cmd) + "]{";
  872.  
  873.             foreach (KeyValuePair<string, int> d in parameter_list)
  874.             {
  875.                 result += d.Key + ":" + d.Value.ToString() + ",";
  876.  
  877.             }
  878.             result = result.TrimEnd(',') + "}";
  879.             return result;
  880.         }
  881.  
  882.         private void parseString(string msg)
  883.         {
  884.             var res = msg.Split(new char[] { '{', '}', '[', ']' }, StringSplitOptions.RemoveEmptyEntries);//[pushADCdefaults]{offset:xxxx,senseR:80}  [pushADCfactory]{confirmCalibrationDefaults}
  885.  
  886.             if (res.Length <= 1)
  887.                 return;
  888.  
  889.             cmd = (Command)Enum.Parse(typeof(Command), res[0]);
  890.  
  891.             foreach (string s in res[1].Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
  892.             {
  893.                 var pram = s.Split(':');
  894.  
  895.                 if (pram.Length > 1)
  896.                     parameter_list.Add(pram[0], int.Parse(pram[1]));
  897.                 else
  898.                     parameter_list.Add(pram[0], 0);
  899.  
  900.             }
  901.         }
  902.     } */
  903. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement