wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1993|回復: 0
打印 上一主題 下一主題
收起左側

基于c#的配氣儀源程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:611900 發表于 2019-9-16 09:37 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
基于C#的配氣儀源碼,個人練習做的

單片機源程序如下:
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.ComponentModel;
  5. using System.Data;
  6. using System.Drawing;
  7. using System.IO;
  8. using System.IO.Ports;
  9. using System.Linq;
  10. using System.Text;
  11. using System.Threading;
  12. using System.Windows.Forms;

  13. namespace GCC
  14. {
  15.     public partial class MainForm : Form
  16.     {
  17.         public static bool isRun = false;
  18.         public static string keyBoardValue;
  19.         //public readonly Thread timerThread = new Thread(SetTimer);
  20.         //public System.Timers.Timer showTimer = new System.Timers.Timer();

  21.         public MainForm()
  22.         {
  23.             InitializeComponent();
  24.             Control.CheckForIllegalCrossThreadCalls = false;   //防止跨線程訪問出錯
  25.         }

  26.         private void Cb_gas1_SelectedIndexChanged(object sender, EventArgs e)
  27.         {
  28.             tb_coefficient1.Text = DataProcessing.GetCoefficient(cb_gas1.SelectedItem.ToString());
  29.             tb_concentration1.Text = "";
  30.             tb_target_concentration1.Text = "";
  31.         }

  32.         private void Cb_gas2_SelectedIndexChanged(object sender, EventArgs e)
  33.         {
  34.             tb_coefficient2.Text = DataProcessing.GetCoefficient(cb_gas2.SelectedItem.ToString());
  35.             tb_concentration2.Text = "";
  36.             tb_target_concentration2.Text = "";
  37.         }

  38.         private void Cb_gas3_SelectedIndexChanged(object sender, EventArgs e)
  39.         {
  40.             tb_coefficient3.Text = DataProcessing.GetCoefficient(cb_gas3.SelectedItem.ToString());
  41.             tb_concentration3.Text = "";
  42.             tb_target_concentration3.Text = "";
  43.         }

  44.         private void Cb_gas4_SelectedIndexChanged(object sender, EventArgs e)
  45.         {
  46.             tb_coefficient4.Text = DataProcessing.GetCoefficient(cb_gas4.SelectedItem.ToString());
  47.             tb_concentration4.Text = "";
  48.             tb_target_concentration4.Text = "";
  49.         }

  50.         private void MainForm_Load(object sender, EventArgs e)
  51.         {
  52.             try
  53.             {
  54.                 SerialPortHandle.LoadSerialConfig(sp, "COM7", "9600", "8", "2", "NONE");

  55.                 MachineInitialization(sp);
  56.                 tb_states1.Text = "關閉";
  57.                 tb_states2.Text = "關閉";
  58.                 tb_states3.Text = "關閉";
  59.                 tb_states4.Text = "關閉";

  60.                 DataProcessing.LogRecord("系統初始化完成");
  61.                 //showTimer.Interval = 1000;
  62.                 //showTimer.Elapsed += new System.Timers.ElapsedEventHandler(TimerExecute);
  63.             }
  64.             catch
  65.             { }
  66.         }
  67.         
  68.         private void Bt_start_Click(object sender, EventArgs e)
  69.         {
  70.             ComboBox[] comboBoxes = { cb_gas1, cb_gas2, cb_gas3, cb_gas4 };
  71.             TextBox[,] aisle = {
  72.                 { tb_concentration1, tb_target_concentration1, tb_coefficient1, tb_flow1, tb_test_concentration1, tb_states1 },
  73.                 { tb_concentration2, tb_target_concentration2, tb_coefficient2, tb_flow2, tb_test_concentration2, tb_states2 },
  74.                 { tb_concentration3, tb_target_concentration3, tb_coefficient3, tb_flow3, tb_test_concentration3, tb_states3 },
  75.                 { tb_concentration4, tb_target_concentration4, tb_coefficient4, tb_flow4, tb_test_concentration4, tb_states4 }
  76.             };

  77.             if (!sp.IsOpen)
  78.             {
  79.                 SerialPortHandle.LoadSerialConfig(sp, "COM7", "9600", "8", "2", "NONE");
  80.             }
  81.             DataProcessing.DataCounting(comboBoxes, aisle);
  82.             WriteSetflowValue();
  83.             bt_start.Enabled = false;
  84.             cb_gas1.Enabled = false;
  85.             cb_gas2.Enabled = false;
  86.             cb_gas3.Enabled = false;
  87.             cb_gas4.Enabled = false;
  88.             tb_concentration1.ReadOnly = true;
  89.             tb_concentration2.ReadOnly = true;
  90.             tb_concentration3.ReadOnly = true;
  91.             tb_concentration4.ReadOnly = true;
  92.             tb_target_concentration1.ReadOnly = true;
  93.             tb_target_concentration2.ReadOnly = true;
  94.             tb_target_concentration3.ReadOnly = true;
  95.             tb_target_concentration4.ReadOnly = true;
  96.             tb_concentration1.MouseDown -= new System.Windows.Forms.MouseEventHandler(Tb_concentration1_MouseDown);
  97.             tb_concentration2.MouseDown -= new System.Windows.Forms.MouseEventHandler(Tb_concentration2_MouseDown);
  98.             tb_concentration3.MouseDown -= new System.Windows.Forms.MouseEventHandler(Tb_concentration3_MouseDown);
  99.             tb_concentration4.MouseDown -= new System.Windows.Forms.MouseEventHandler(Tb_concentration4_MouseDown);
  100.             tb_target_concentration1.MouseDown -= new System.Windows.Forms.MouseEventHandler(Tb_target_concentration1_MouseDown);
  101.             tb_target_concentration2.MouseDown -= new System.Windows.Forms.MouseEventHandler(Tb_target_concentration2_MouseDown);
  102.             tb_target_concentration3.MouseDown -= new System.Windows.Forms.MouseEventHandler(Tb_target_concentration3_MouseDown);
  103.             tb_target_concentration4.MouseDown -= new System.Windows.Forms.MouseEventHandler(Tb_target_concentration4_MouseDown);
  104.         }

  105.         string aisle1_setFlow = "";
  106.         string aisle2_setFlow = "";
  107.         string aisle3_setFlow = "";
  108.         string aisle4_setFlow = "";
  109.         /// <summary>
  110.         /// 寫入設定流量值
  111.         /// </summary>
  112.         public void WriteSetflowValue()
  113.         {
  114.             timer.Enabled = false;
  115.             //showTimer.Enabled = false;
  116.             string[] setFlowValue = new string[4];
  117.             ComboBox[] comboBoxes = { cb_gas1, cb_gas2, cb_gas3, cb_gas4 };
  118.             
  119.             if (sp.IsOpen)
  120.             {
  121.                 for (int i = 0; i < comboBoxes.Length; i++)
  122.                 {
  123.                     if (comboBoxes[i].Text != "")
  124.                     {
  125.                         if (comboBoxes[i].Text != " ")
  126.                         {
  127.                             try
  128.                             {
  129.                                 //string a = tb_setOutputFlow.Text;
  130.                                 setFlowValue[i] = DataProcessing.GetGasSetFlow(DataProcessing.gasR[i], Convert.ToDouble(tb_setOutputFlow.Text)).ToString();
  131.                                 //MessageBox.Show(setFlowValue[i]);
  132.                                 //Thread.Sleep(50);
  133.                                 if (isRun)
  134.                                 {
  135.                                     int index = i + 1;
  136.                                     if (ValveIsClose("通道" + index, "讀關閉", "", index))
  137.                                     {
  138.                                         while (true)    //等待消息接收完成
  139.                                         {
  140.                                             if (isReceived)
  141.                                             {
  142.                                                 isReceived = false;
  143.                                                 SerialPortHandle.SendSerialData(sp, DataProcessing.SendDataformat("通道" + index, "閥控控制", ""));
  144.                                                 Thread.Sleep(100);
  145.                                                 break;
  146.                                             }
  147.                                         }
  148.                                         //MessageBox.Show("通道" + index + "閥控打開");
  149.                                     }
  150.                                     DataProcessing.LogRecord("通道"+index+ "寫入設定流量值");
  151.                                     byte[] sendData = DataProcessing.SendDataformat("通道" + index, "寫入設定流量值", setFlowValue[i]);
  152.                                     while (true)    //等待消息接收完成
  153.                                     {
  154.                                         if (isReceived)
  155.                                         {
  156.                                             isReceived = false;
  157.                                             SerialPortHandle.SendSerialData(sp, sendData);
  158.                                             Thread.Sleep(100);
  159.                                             break;
  160.                                         }
  161.                                     }
  162.                                     //MessageBox.Show("通道" + index + "寫入設定流量值成功");
  163.                                     switch (i)
  164.                                     {
  165.                                         case 0:
  166.                                             aisle1_setFlow = setFlowValue[i];
  167.                                             break;
  168.                                         case 1:
  169.                                             aisle2_setFlow = setFlowValue[i];
  170.                                             break;
  171.                                         case 2:
  172.                                             aisle3_setFlow = setFlowValue[i];
  173.                                             break;
  174.                                         case 3:
  175.                                             aisle4_setFlow = setFlowValue[i];
  176.                                             break;
  177.                                     }
  178.                                 }
  179.                                 isRun = false;
  180.                             }
  181.                             catch (System.Exception ex)
  182.                             {
  183.                                 MessageBox.Show("WriteSetflowValue函數:" + ex.Message);
  184.                             }
  185.                         }
  186.                     }
  187.                 }
  188.                 timer.Enabled = true;
  189.                 DataProcessing.LogRecord("定時器打開");
  190.                 //showTimer.Enabled = true;
  191.             }
  192.             //showTimer.Enabled = true;
  193.         }

  194.         /// <summary>
  195.         /// 設置定時器
  196.         /// </summary>
  197.         //private void SetTimer()
  198.         //{
  199.         //    //showTimer.Interval = 1000;
  200.         //    //showTimer.Elapsed += new System.Timers.ElapsedEventHandler(TimerExecute);
  201.         //    //showTimer.Enabled = true;
  202.         //}

  203.         ///// <summary>
  204.         ///// 定時器執行函數
  205.         ///// </summary>
  206.         ///// <param name="source"></param>
  207.         ///// <param name="e"></param>
  208.         //private void TimerExecute(object source, System.Timers.ElapsedEventArgs e)
  209.         //{
  210.         //    //showTimer.Enabled = false;
  211.         //    if (sp.IsOpen)
  212.         //    {
  213.         //        ShowFlowAndConcentration();
  214.         //        sp.DiscardInBuffer();
  215.         //        sp.DiscardOutBuffer();
  216.         //    }
  217.         //    else
  218.         //    {
  219.         //    }
  220.         //    //showTimer.Enabled = true;
  221.         //}

  222.         /// <summary>
  223.         /// 判斷通道閥門狀態
  224.         /// </summary>
  225.         /// <param name="aisleName">通道名稱</param>
  226.         /// <param name="strFun">功能碼</param>
  227.         /// <param name="data">數據值</param>
  228.         /// <param name="index">索引</param>
  229.         /// <returns>返回值為true,閥門打開;返回值為false,閥門關閉</returns>
  230.         public bool ValveIsClose(string aisleName, string strFun, string data, int index)
  231.         {
  232.             DataProcessing.LogRecord(aisleName + strFun);
  233.             while (true)    //等待消息接收完成
  234.             {
  235.                 if (isReceived)
  236.                 {
  237.                     isReceived = false;
  238.                     SerialPortHandle.SendSerialData(sp, DataProcessing.SendDataformat(aisleName, strFun, data));
  239.                     Thread.Sleep(100);
  240.                     break;
  241.                 }
  242.             }
  243.             if (index == 1)
  244.             {

  245.                 //string A = p;
  246.                 if (DataProcessing.aisle1[1] == 0x01)
  247.                 {
  248.                     return true;
  249.                 }
  250.                 else
  251.                 {
  252.                     return false;
  253.                 }
  254.             }
  255.             else if (index == 2)
  256.             {
  257.                 //string B = p;
  258.                 if (DataProcessing.aisle2[1] == 0x01)
  259.                 {
  260.                     return true;
  261.                 }
  262.                 else
  263.                 {
  264.                     return false;
  265.                 }
  266.             }
  267.             else if (index == 3)
  268.             {
  269.                 //string C = p;
  270.                 if (DataProcessing.aisle3[1] == 0x01)
  271.                 {
  272.                     return true;
  273.                 }
  274.                 else
  275.                 {
  276.                     return false;
  277.                 }
  278.             }
  279.             else
  280.             {
  281.                 //string D = p;
  282.                 if (DataProcessing.aisle4[1] == 0x01)
  283.                 {
  284.                     return true;
  285.                 }
  286.                 else
  287.                 {
  288.                     return false;
  289.                 }
  290.             }
  291.         }

  292.         /// <summary>
  293.         /// 顯示測量流量和測量濃度
  294.         /// </summary>
  295.         public void ShowFlowAndConcentration()
  296.         {
  297.             ComboBox[] comboBoxes = { cb_gas1, cb_gas2, cb_gas3, cb_gas4 };
  298.             TextBox[] tb_concentration = { tb_concentration1, tb_concentration2, tb_concentration3, tb_concentration4 };
  299.             TextBox[] tb_test_concentration = { tb_test_concentration1, tb_test_concentration2, tb_test_concentration3, tb_test_concentration4 };
  300.             double[] result = { 0, 0, 0, 0 };
  301.             double temp;
  302.             if (sp.IsOpen)
  303.             {
  304.                 try
  305.                 {
  306.                     for (int i = 1; i <= 4; i++)
  307.                     {
  308.                         if (comboBoxes[i - 1].Text != "")
  309.                         {
  310.                             if (comboBoxes[i - 1].Text != " ")
  311.                             {
  312.                                 DataProcessing.LogRecord("通道" + i + "讀顯示流量");
  313.                                 byte[] sendData = DataProcessing.SendDataformat("通道" + i, "讀顯示流量", "");
  314.                                 while (true)    //等待消息接收完成
  315.                                 {
  316.                                     if (isReceived)
  317.                                     {
  318.                                         isReceived = false;
  319.                                         SerialPortHandle.SendSerialData(sp, sendData);
  320.                                         Thread.Sleep(100);
  321.                                         break;
  322.                                     }
  323.                                 }
  324.                                 switch (i)
  325.                                 {
  326.                                     case 1:
  327.                                         temp = CountFlowAndConcentration(DataProcessing.aisle1);
  328.                                         result[0] = Convert.ToInt32(temp / 4095 * 2000);
  329.                                         tb_flow1.Text = result[0].ToString();
  330.                                         //tb_test_concentration1.Text = (result[0] * double.Parse(tb_coefficient1.Text)).ToString();
  331.                                         tb_states1.Text = MeasuringCondition(aisle1_setFlow, temp);
  332.                                         break;
  333.                                     case 2:
  334.                                         temp = CountFlowAndConcentration(DataProcessing.aisle2);
  335.                                         result[1] = Convert.ToInt32(temp / 4095 * 2000);
  336.                                         tb_flow2.Text = result[1].ToString();
  337.                                         //tb_test_concentration2.Text = (result[1] * double.Parse(tb_coefficient2.Text)).ToString();
  338.                                         tb_states2.Text = MeasuringCondition(aisle2_setFlow, temp);
  339.                                         break;
  340.                                     case 3:
  341.                                         temp = CountFlowAndConcentration(DataProcessing.aisle3);
  342.                                         result[2] = Convert.ToInt32(temp / 4095 * 2000);
  343.                                         tb_flow3.Text = result[2].ToString();
  344.                                         //tb_test_concentration3.Text = (result[2] * double.Parse(tb_coefficient3.Text)).ToString();
  345.                                         tb_states3.Text = MeasuringCondition(aisle3_setFlow, temp);
  346.                                         break;
  347.                                     case 4:
  348.                                         temp = CountFlowAndConcentration(DataProcessing.aisle4);
  349.                                         result[3] = Convert.ToInt32(temp / 4095 * 2000);
  350.                                         tb_flow4.Text = result[3].ToString();
  351.                                         //tb_test_concentration4.Text = (result[3] * double.Parse(tb_coefficient4.Text)).ToString();
  352.                                         tb_states4.Text = MeasuringCondition(aisle4_setFlow, temp);
  353.                                         break;
  354.                                 }
  355.                             }
  356.                         }
  357.                     }
  358.                     DataProcessing.GetTestGasCoefficient(result);
  359.                     for (int j = 0; j < comboBoxes.Length; j++)
  360.                     {
  361.                         if (comboBoxes[j].Text != "")
  362.                         {
  363.                             if (comboBoxes[j].Text != " ")
  364.                             {
  365.                                 if (comboBoxes[j].Text == "N2")
  366.                                 {
  367.                                     //tb_test_concentration[j].Text = (double.Parse(tb_concentration[j].Text) * 1).ToString("#0.00");
  368.                                 }
  369.                                 else
  370.                                 {
  371.                                     tb_test_concentration[j].Text = (double.Parse(tb_concentration[j].Text) * DataProcessing.testGasR[j]).ToString("#0.00");
  372.                                 }
  373.                                     
  374.                             }
  375.                         }
  376.                     }
  377.                 }
  378.                 catch (System.Exception ex)
  379.                 {
  380.                     MessageBox.Show("ShowFlowAndConcentration函數:" + ex.Message);
  381.                 }
  382.             }
  383.         }

  384.         /// <summary>
  385.         ///
  386.         /// </summary>
  387.         /// <param name="aisle"></param>
  388.         /// <returns></returns>
  389.         private static double CountFlowAndConcentration(byte[] aisle)
  390.         {
  391.             double temp = double.Parse(Convert.ToInt32(aisle[1] * 256 + aisle[2]).ToString());
  392.             if (temp > 4095)
  393.             {
  394.                 temp = 0;
  395.             }
  396.             DataProcessing.LogRecord("讀取的流量值為:" + temp);
  397.             return temp;
  398.         }

  399.         private void Bt_back_Click(object sender, EventArgs e)
  400.         {
  401.             //showTimer.Enabled = false;
  402.             //timerThread.Suspend();
  403.             bt_start.Enabled = true;
  404.             cb_gas1.Enabled = true;
  405.             cb_gas2.Enabled = true;
  406.             cb_gas3.Enabled = true;
  407.             cb_gas4.Enabled = true;
  408.             tb_concentration1.ReadOnly = false;
  409.             tb_concentration2.ReadOnly = false;
  410.             tb_concentration3.ReadOnly = false;
  411.             tb_concentration4.ReadOnly = false;
  412.             tb_target_concentration1.ReadOnly = false;
  413.             tb_target_concentration2.ReadOnly = false;
  414.             tb_target_concentration3.ReadOnly = false;
  415.             tb_target_concentration4.ReadOnly = false;
  416.             tb_maxOutputFlow.ReadOnly = false;
  417.             tb_setOutputFlow.ReadOnly = false;
  418.             tb_flow1.Text = "";
  419.             tb_flow2.Text = "";
  420.             tb_flow3.Text = "";
  421.             tb_flow4.Text = "";
  422.             tb_test_concentration1.Text = "";
  423.             tb_test_concentration2.Text = "";
  424.             tb_test_concentration3.Text = "";
  425.             tb_test_concentration4.Text = "";
  426.             tb_concentration1.MouseDown += new System.Windows.Forms.MouseEventHandler(Tb_concentration1_MouseDown);
  427.             tb_concentration2.MouseDown += new System.Windows.Forms.MouseEventHandler(Tb_concentration2_MouseDown);
  428.             tb_concentration3.MouseDown += new System.Windows.Forms.MouseEventHandler(Tb_concentration3_MouseDown);
  429.             tb_concentration4.MouseDown += new System.Windows.Forms.MouseEventHandler(Tb_concentration4_MouseDown);
  430.             tb_target_concentration1.MouseDown += new System.Windows.Forms.MouseEventHandler(Tb_target_concentration1_MouseDown);
  431.             tb_target_concentration2.MouseDown += new System.Windows.Forms.MouseEventHandler(Tb_target_concentration2_MouseDown);
  432.             tb_target_concentration3.MouseDown += new System.Windows.Forms.MouseEventHandler(Tb_target_concentration3_MouseDown);
  433.             tb_target_concentration4.MouseDown += new System.Windows.Forms.MouseEventHandler(Tb_target_concentration4_MouseDown);
  434.             if (sp.IsOpen)
  435.             {
  436.                 timer.Enabled = false;
  437.                 for (int i = 1; i <= 4; i++)
  438.                 {
  439.                     while (true)    //等待消息接收完成
  440.                     {
  441.                         if (isReceived)
  442.                         {
  443.                             isReceived = false;
  444.                             SerialPortHandle.SendSerialData(sp, DataProcessing.SendDataformat("通道" + i, "閥控關閉", ""));
  445.                             Thread.Sleep(100);
  446.                             break;
  447.                         }
  448.                     }
  449.                 }
  450.                 tb_states1.Text = "關閉";
  451.                 tb_states2.Text = "關閉";
  452.                 tb_states3.Text = "關閉";
  453.                 tb_states4.Text = "關閉";
  454.                 //tb_states1.ForeColor = System.Drawing.SystemColors.WindowText;
  455.                 //tb_states2.ForeColor = System.Drawing.SystemColors.WindowText;
  456.                 //tb_states3.ForeColor = System.Drawing.SystemColors.WindowText;
  457.                 //tb_states4.ForeColor = System.Drawing.SystemColors.WindowText;
  458.                 //sp.Close();
  459.             }
  460.         }

  461.         public static bool isReceived = false;

  462.         /// <summary>
  463.         /// 串口數據接收
  464.         /// </summary>
  465.         /// <param name="sender"></param>
  466.         /// <param name="e"></param>
  467.         private void Sp_DataReceived(object sender, SerialDataReceivedEventArgs e)
  468.         {
  469.             Thread.Sleep(50);
  470.             int bufferlen = sp.BytesToRead;
  471.             string readStr = "";
  472.             if (bufferlen > 0)
  473.             {
  474.                 byte[] readbuffer = new byte[bufferlen];
  475.                 sp.Read(readbuffer, 0, readbuffer.Length);
  476.                 for (int i = 0; i < readbuffer.Length; i++)
  477.                 {
  478.                     readStr += readbuffer[i] + "/";
  479.                 }
  480.                 DataProcessing.LogRecord("串口接收到的數據:" + readStr);
  481.                 Thread dataAnalysisThread = new Thread(() => DataProcessing.DataAnalysis(readbuffer));
  482.                 dataAnalysisThread.IsBackground = true;
  483.                 dataAnalysisThread.Start();
  484.                 //DataProcessing.DataAnalysis(readbuffer);
  485.                 isReceived = true;
  486.             }
  487.         }
  488.         
  489.         /// <summary>
  490.         /// 機器初始化設置
  491.         /// </summary>
  492.         /// <param name="sp">通信的串口</param>
  493.         private static void MachineInitialization(SerialPort sp)
  494.         {
  495.             Queue initializtionQueue = new Queue();
  496.             initializtionQueue.Clear();

  497.             initializtionQueue.Enqueue(DataProcessing.SendDataformat("通道1", "閥控關閉", ""));   //0  
  498.             initializtionQueue.Enqueue(DataProcessing.SendDataformat("通道1", "讀關閉", ""));    //1  
  499.             

  500.             initializtionQueue.Enqueue(DataProcessing.SendDataformat("通道2", "閥控關閉", ""));   //2
  501.             initializtionQueue.Enqueue(DataProcessing.SendDataformat("通道2", "讀關閉", ""));    //3


  502.             initializtionQueue.Enqueue(DataProcessing.SendDataformat("通道3", "閥控關閉", ""));   //4
  503.             initializtionQueue.Enqueue(DataProcessing.SendDataformat("通道3", "讀關閉", ""));    //5


  504.             initializtionQueue.Enqueue(DataProcessing.SendDataformat("通道4", "閥控關閉", ""));   //6
  505.             initializtionQueue.Enqueue(DataProcessing.SendDataformat("通道4", "讀關閉", ""));    //7

  506.             SendQueueMessage(sp,initializtionQueue);
  507.         }

  508.         /// <summary>
  509.         /// 發送隊列消息
  510.         /// </summary>
  511.         /// <param name="sp">串口對象</param>
  512.         /// <param name="sendQueue">需要發送的消息隊列</param>
  513.         private static void SendQueueMessage(SerialPort sp,Queue sendQueue)
  514.         {
  515.             if (sp.IsOpen)
  516.             {
  517.                 isReceived = true;
  518.                 foreach (byte[] sendData in sendQueue)
  519.                 {
  520.                     int index = GetIndexFromQueue(sendData, sendQueue);
  521.                     //send:  SerialPortHandle.SendSerialData(sp, sendData);

  522.                     send: while (true)    //等待消息接收完成
  523.                     {
  524.                         if (isReceived)
  525.                         {
  526.                             isReceived = false;
  527.                             SerialPortHandle.SendSerialData(sp, sendData);
  528.                             Thread.Sleep(50);
  529.                             break;
  530.                         }
  531.                     }

  532.                     if (index == 1)
  533.                     {
  534.                         if (DataProcessing.aisle1[1] != 0x01)
  535.                         {
  536.                             goto send;
  537.                         }
  538.                     }
  539.                     else if (index == 3)
  540.                     {
  541.                         if (DataProcessing.aisle2[1] != 0x01)
  542.                         {
  543.                             goto send;
  544.                         }
  545.                     }
  546.                     else if (index == 5)
  547.                     {
  548.                         if (DataProcessing.aisle3[1] != 0x01)
  549.                         {
  550.                             goto send;
  551.                         }
  552.                     }
  553.                     else if (index == 7)
  554.                     {
  555.                         if (DataProcessing.aisle4[1] != 0x01)
  556.                         {
  557.                             goto send;
  558.                         }
  559.                     }
  560.                     else
  561.                     {
  562.                         //continue;
  563.                     }
  564.                     //isReceived = false;
  565.                 }
  566.                 sendQueue.Clear();
  567.             }
  568.         }

  569.         /// <summary>
  570.         /// 獲取隊列索引值
  571.         /// </summary>
  572.         /// <param name="element">被索引的元素</param>
  573.         /// <param name="queue">索引隊列</param>
  574.         /// <returns>索引值</returns>
  575.         private static int GetIndexFromQueue(byte[] element, Queue queue)
  576.         {
  577.             int index = 0;
  578.             if (queue.Count > 0)
  579.             {
  580.                 for (int i = 0; i < queue.ToArray().Length; i++)
  581.                 {
  582.                     if (element == queue.ToArray()[i])
  583.                     {
  584.                         index = i;
  585.                         break;
  586.                     }
  587.                 }
  588.             }
  589.             return index;
  590.         }

  591.         private void Timer_Tick(object sender, EventArgs e)
  592.         {
  593.             if (sp.IsOpen)
  594.             {
  595.                 timer.Enabled = false;
  596.                 ShowFlowAndConcentration();
  597.                 sp.DiscardInBuffer();
  598.                 sp.DiscardOutBuffer();
  599.                 timer.Enabled = true;
  600.             }
  601.         }

  602.         /// <summary>
  603.         /// 獲取測量狀態
  604.         /// </summary>
  605.         /// <param name="setFlow">設定的流量值</param>
  606.         /// <param name="testFlow">測試的流量值</param>
  607.         /// <param name="textBox"></param>
  608.         /// <returns></returns>
  609.         private static string MeasuringCondition(string setFlow, double testFlow)
  610.         {
  611.             string status;
  612.             //textBox.ReadOnly = false;
  613.             double difference = System.Math.Abs(testFlow - double.Parse(setFlow));
  614.             if (double.Parse(setFlow) > 100)
  615.             {
  616.                 if (difference > double.Parse(setFlow) * 0.05)
  617.                 {
  618.                     status = "異常";
  619.                     //textBox.ForeColor = System.Drawing.Color.Red;
  620.                 }
  621.                 else
  622.                 {
  623.                     status = "正常";
  624.                     //textBox.ForeColor = System.Drawing.Color.Chartreuse;
  625.                 }
  626.             }
  627.             else
  628.             {
  629.                 if (difference > 5)
  630.                 {
  631.                     status = "異常";
  632.                     //textBox.ForeColor = System.Drawing.Color.Red;
  633.                 }
  634.                 else
  635.                 {
  636.                     status = "正常";
  637.                     //textBox.ForeColor = System.Drawing.Color.Chartreuse;
  638.                 }
  639.             }
  640.             //textBox.ReadOnly = true;
  641.             return status;
  642.         }

  643.         /// <summary>
  644.         /// 獲取鍵盤窗口輸入值
  645.         /// </summary>
  646.         /// <param name="textBox"></param>
  647.         private void GetKeyBoardValue(TextBox textBox)
  648.         {

  649.             KeyBoardForm keyBoard = new KeyBoardForm();
  650.             keyBoard.ShowDialog();
  651.             textBox.Text = keyBoardValue;
  652.             keyBoard.Dispose();
  653.         }

  654.         private void Bt_clear_Click(object sender, EventArgs e)
  655.         {
  656.             
  657.         }

  658.         private void Tb_setOutputFlow_MouseDown(object sender, MouseEventArgs e)
  659.         {
  660.             GetKeyBoardValue(tb_setOutputFlow);
  661.         }

  662.         private void Tb_concentration1_MouseDown(object sender, MouseEventArgs e)
  663.         {
  664.             GetKeyBoardValue(tb_concentration1);
  665.         }

  666.         private void Tb_concentration2_MouseDown(object sender, MouseEventArgs e)
  667.         {
  668.             GetKeyBoardValue(tb_concentration2);
  669.         }

  670.         private void Tb_concentration3_MouseDown(object sender, MouseEventArgs e)
  671.         {
  672.             GetKeyBoardValue(tb_concentration3);
  673.         }

  674.         private void Tb_concentration4_MouseDown(object sender, MouseEventArgs e)
  675.         {
  676.             GetKeyBoardValue(tb_concentration4);
  677.         }

  678.         private void Tb_target_concentration1_MouseDown(object sender, MouseEventArgs e)
  679.         {
  680.             GetKeyBoardValue(tb_target_concentration1);
  681.         }

  682.         private void Tb_target_concentration2_MouseDown(object sender, MouseEventArgs e)
  683.         {
  684.             GetKeyBoardValue(tb_target_concentration2);
  685.         }

  686.         private void Tb_target_concentration3_MouseDown(object sender, MouseEventArgs e)
  687.         {
  688.             GetKeyBoardValue(tb_target_concentration3);
  689.         }

  690.         private void Tb_target_concentration4_MouseDown(object sender, MouseEventArgs e)
  691.         {
  692.             GetKeyBoardValue(tb_target_concentration4);
  693.         }

  694.         private void Tb_setOutputFlow_TextChanged(object sender, EventArgs e)
  695.         {
  696.             if (sp.IsOpen)
  697.             {
  698.                 if (!bt_start.Enabled)
  699.                 {
  700.                     WriteSetflowValue();
  701.                 }
  702.             }
  703.         }

  704.         private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
  705.         {
  706.             if (sp.IsOpen)
  707.             {
  708.                 sp.Close();
  709.             }
  710.         }

  711.     }
  712. }
復制代碼

所有資料51hei提供下載:
GCC.rar (326.54 KB, 下載次數: 24)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
高h震动喷水双性1v1| 日韩主播视频在线| 伊人久久大香| 制服丝袜专区在线| 超碰91在线观看| 麻豆网站在线| av在线播放免费| 日韩大片在线永久免费观看网站| 粉嫩av一区| 欧美一级二级三级区| 麻豆tv免费在线观看| 中文字幕在线观看播放| 欧美理论电影| 日韩在线影院| 国产欧美视频在线| 成人另类视频| 青青草国产免费一区二区下载 | 男人的天堂久久| 日韩a级大片| 成人久久久久| 欧美成人嫩草网站| 国产一区二区你懂的| 青草av.久久免费一区| 国产麻豆精品在线观看| 99精品国产一区二区三区不卡| 99久久er热在这里只有精品15| 久久精品一区二区三区不卡牛牛 | 又黄又爽在线观看| 91在线不卡| а√在线中文网新版地址在线| www.精品| 91精品啪在线观看国产手机| 精品99在线| 精品不卡视频| 黑人精品欧美一区二区蜜桃| 91丨九色丨尤物| 中文字幕综合网| 欧美日韩国产一中文字不卡 | 日韩av片在线看| 永久免费的av网站| 一区二区视频观看| 久久久久久久黄色| 欧美激情第3页| 污片免费在线观看| 日本a级片视频| 中文在线资源天堂| 亚洲成色在线综合网站2018站| 在线人成动漫视频在线观看| 天天看片激情网站| 搞黄网站在线观看| 成年永久一区二区三区免费视频| 美女精品一区最新中文字幕一区二区三区 | 激情久久久久久| 狠狠色丁香婷综合久久| 国产欧美日产一区| 欧美日韩国产中文精品字幕自在自线 | 久久一日本道色综合| 午夜精品福利一区二区三区av | 免费看岛国视频在线观看| 写真福利理论片在线播放| 国内外激情在线| 成人国产精品一区二区网站| 欧美激情成人| 国产原创一区二区三区| 综合激情成人伊人| 日韩一区二区三区精品视频| 久久久999精品| 91免费福利视频| 99re6这里有精品热视频| 亚洲高清视频免费| 久久精品99国产精| 五月婷婷在线播放| 黄色录像1级片| av中文资源在线资源免费观看| 欧美人与动xxxxz0oz| 久久三级福利| 亚洲丝袜美腿综合| 精品99999| 国产不卡一区二区在线播放| 色女孩综合网| 四虎永久免费观看| 无码人妻丰满熟妇奶水区码| 欧美极度另类videos高清| 中文在线а√在线| 久久影视精品| 亚洲综合不卡| 自拍偷拍亚洲欧美日韩| 精品国产免费一区二区三区香蕉| 国产91精品久久久久| 亚洲欧洲一区二区在线观看| 俄罗斯黄色录像| 在线视频精品免费| 免费黄网站观看| 欧美大片黄色| 999精品在线| 91免费在线看| 欧美成人猛片aaaaaaa| 国产成人拍精品视频午夜网站| 97av中文字幕| 天天色影综合网| sihu影院永久在线影院| 男女污视频在线观看| 欧美中文高清| 狠狠色丁香九九婷婷综合五月| 色婷婷综合久久久久中文一区二区| 欧美激情性做爰免费视频| 亚洲一区二区在| 国产伦精品一区二区三区视频女| 日韩一卡二卡在线| 男人天堂资源在线| 免费一区二区三区视频导航| a在线播放不卡| 精品国产乱码久久久久久夜甘婷婷| 成人黄色免费在线观看| 久久久久久蜜桃一区二区| 亚洲视频 欧美视频| 能看av的网址| 国产福利亚洲| 久久99蜜桃精品| 欧美色综合网站| 国产精品日韩欧美大师| 久久久久国产精品熟女影院| 一级一片免费看| 日本粉色视频在线观看| 国产精品宾馆| 久久影院视频免费| 中文字幕av一区中文字幕天堂| 午夜一区二区三区| 99鲁鲁精品一区二区三区| 性生生活性生交a级| 日本成人三级电影| 久久99精品国产麻豆不卡| 日韩视频一区二区| 欧美高清一区二区| 欧美一级片在线视频| 直接看的黄色网址| 精品美女一区| 从欧美一区二区三区| 亚洲欧美日韩成人| 裸体裸乳免费看| 日产精品久久久久| 日本调教视频在线观看| 免费成人结看片| 最好看的中文字幕久久| 欧美极品少妇xxxxⅹ免费视频 | 91精品国产一区二区在线观看 | 阿v视频在线观看| 久久久精品性| 欧美一区二区三区免费观看视频 | 国内精品伊人久久久久av影院| 制服丝袜一区二区三区| 国产视频在线观看一区| 三级黄色录像视频| 免费男女羞羞的视频网站中文版| 成人av动漫| 国产精品国产精品国产专区不蜜 | 国产精品福利在线观看播放| 91视频免费观看| 久久成人免费视频| 男人舔女人下面高潮视频| 精品人妻一区二区三区麻豆91 | 一个人免费观看在线视频www| 97人人做人人爽香蕉精品| 国产麻豆一精品一av一免费 | 亚洲欧美日韩精品久久亚洲区| 久久99国产精品一区| 亚洲欧美一二三区| 成人在线免费电影| 免费在线亚洲| 亚洲精品美女在线| 成人精品视频在线播放| www.天堂在线| 色戒汤唯在线| 99精品热视频| 91精品国产沙发| 北京富婆泄欲对白| 九九三级毛片| 久久99免费视频| 日本91福利区| 亚洲香蕉成人av网站在线观看| 欧美视频在线观看视频| 亚洲狼人综合网| 希岛爱理一区二区三区av高清| 99视频超级精品| 欧美激情中文网| 日韩少妇一区二区| 天天色综合6| 一本精品一区二区三区| 日韩丝袜美女视频| 国产av麻豆mag剧集| 影音先锋在线资源中文字幕| 亚洲码欧美码一区二区三区| 亚洲成人av电影| 欧美一级二级三级| 中文无码av一区二区三区| 牛牛精品在线视频| 久久美女高清视频| 国产成人小视频在线观看| 国产成人精品视频免费| 日韩精品系列| 久久99精品国产麻豆婷婷| 欧美日韩国产999| 亚洲 欧美 日韩在线| 好男人社区在线视频| 国产精品久久久久毛片大屁完整版 | 日韩三级成人| 亚洲一区二区三区在线播放| 好吊色欧美一区二区三区| 亚洲中文一区二区| 深夜在线视频| 亚洲欧洲成人自拍| 国产在线精品一区二区中文| 伊人色综合久久久| 亚洲成av在线| 亚洲国产日产av| 亚洲精品8mav| 亚洲色图另类小说| 欧美日韩一区二区三区在线电影 | 日韩欧美二区| 精品日产卡一卡二卡麻豆| 日本精品久久久久中文字幕| 羞羞视频免费| 激情综合亚洲| 欧美精品一区在线播放| wwwww黄色| 自拍视频在线网| 26uuu精品一区二区| 92福利视频午夜1000合集在线观看| 国产99久久久| 日本欧美一区| 91久久久免费一区二区| 日韩小视频在线播放| 在线免费电影观看| 激情国产一区| 国内伊人久久久久久网站视频| 亚洲欧美精品aaaaaa片| 超碰人人在线| 亚洲乱码精品一二三四区日韩在线 | 亚洲精选一区| 欧美高清在线观看| 破处女黄色一级片| 国产美女福利在线观看| 亚洲制服丝袜一区| 国产一二三在线视频| 九九视频在线播放| 日韩不卡一区二区| 国产精品网站入口| 亚洲系列第一页| 操欧美女人视频| 亚洲福利精品在线| 黄色国产在线观看| 黄网站在线免费看| 亚洲视频综合在线| 日本久久亚洲电影| 日韩xxx高潮hd| 农村妇女一区二区| 日韩女优毛片在线| 第一页在线视频| 高清中文字幕一区二区三区| 国产精品你懂的| 先锋影音男人资源| 凹凸日日摸日日碰夜夜| 精品一区二区三区在线视频| 97自拍视频| 乱人伦中文字幕在线zone| 午夜日本精品| 欧美一区二区.| 夜夜嗨av禁果av粉嫩avhd| 日日天天久久| 色午夜这里只有精品| 免费又黄又爽又色的视频| 久久久久久一区二区三区四区别墅| 777欧美精品| 疯狂揉花蒂控制高潮h| 伊人春色在线观看| 日韩欧美999| 美女被爆操网站| 香蕉视频在线播放| 亚洲成人资源在线| 国产超碰在线播放| 日韩亚洲视频在线观看| 亚洲三级在线免费观看| 久久99热精品| 中文字幕av免费在线观看| 国产成+人+综合+亚洲欧美| 日韩欧美国产综合在线一区二区三区| 99re久久精品国产| 成人免费网站观看| 日韩一区二区中文字幕| 国产又黄又粗视频| 成人午夜亚洲| 亚洲精品日韩欧美| 日韩大片免费在线观看| 牲欧美videos精品| 午夜精品一区二区三区在线视| 国产影视一区二区| 欧美1区视频| 亚洲最大福利视频网站| 国产视频福利| 国产a视频精品免费观看| 一级黄色免费在线观看| 动漫成人在线观看| 亚洲一区二区三区精品在线| www.欧美激情.com| 啊啊啊久久久| 亚洲欧美一区二区三区久久| 无码人妻丰满熟妇区bbbbxxxx| 成人精品影院| 91精品免费视频| 岛国91视频| 久久久亚洲欧洲日产国码αv| 妺妺窝人体色www在线小说| 国产黄在线观看免费观看不卡| 欧美性猛交xxxxx水多| 无码国产69精品久久久久同性| 亚洲人成网站在线在线观看| 久久在线免费观看视频| 亚洲av无码乱码国产精品久久| 久久婷婷激情| 一区国产精品| 邻家有女韩剧在线观看国语| 欧美私模裸体表演在线观看| 一区视频免费观看| 第一会所亚洲原创| 99国产超薄丝袜足j在线观看| 欧洲毛片视频| 1区2区3区国产精品| 91亚洲一线产区二线产区| 日韩毛片网站| 性欧美长视频免费观看不卡 | 国产精品videosex性欧美| 91久久久久久久久久| eeuss影院www在线观看免费| 亚洲男人的天堂在线观看| 性囗交免费视频观看| 亚洲**毛片| 国产福利视频一区二区| 91丨九色丨蝌蚪丨少妇在线观看| 久久久久99精品国产片| 国产男女无遮挡猛进猛出| 男人添女人下部高潮视频在线观看| 日韩大片免费观看视频播放| 在线免费观看一级片| 久久久久99| 免费日韩在线观看| 国产区在线观看| 亚洲欧洲激情在线| 国产精品自产拍| 精品夜夜嗨av一区二区三区| 毛片在线视频播放| 国产99在线观看| 日韩在线欧美在线国产在线| 影音先锋一区二区资源站| 91蝌蚪国产九色| 四虎精品一区二区| 999久久精品| 成人精品视频久久久久| 国产黄色影视| 欧美一区二区三区在线观看 | 91精品短视频| 成人精品在线观看| 国产成+人+亚洲+欧美+综合| 欧美亚洲国产怡红院影院| 久久久久久久久影院| 国产视频欧美| 欧美激情视频免费看| 欧美国产大片| 青青草一区二区| 2019一级黄色毛片免费看网 | 国产免费观看久久黄| 成人福利免费网站| 欧美日韩国产电影| 最新在线中文字幕| 国产精品主播直播| 国产亚洲视频一区| av不卡一区二区| 国产麻豆一区二区三区在线观看| 奇米影视888狠狠狠777不卡| 亚洲欧美在线磁力| 欧美日韩综合高清一区二区| 亚洲精品国产成人久久av盗摄| 欧美人禽zoz0强交| 视频一区二区中文字幕| 日韩无套无码精品| 欧洲精品99毛片免费高清观看 | 成人在线播放网址| 色综合天天色| 国产有码一区二区| 色视频在线观看免费| 亚洲一区二区福利| 多人欧美交性姿势| 在线视频你懂得一区| 中文字幕在线播放日韩| 91亚洲精华国产精华精华液| 最近中文字幕在线mv视频在线 | 亚洲熟妇av一区二区三区| 国产精品自产拍在线观看2019| 亚洲免费观看高清完整版在线观看 | 日韩福利一区| 91麻豆精品秘密入口|