private void PumpThread(double diameter, unitType units, runMode mode, double volume, double rate) { switch (m_pump) { case pumpType.CHEMYX_FUSION: string cmd = "hexw2 " + ((int)units).ToString() + " " + ((int)mode).ToString() + " " + diameter.ToString("0.00000") + " " + volume.ToString("0.00000") + " " + rate.ToString("0.00000") + " 0 start\r\n"; m_serialport.Write(cmd); Thread.Sleep(200); break; case pumpType.HARVARD_2000: m_serialport.ReadExisting(); /* if (volume != m_volume) { m_serialport.Write("TGT " + (volume / 1000.0).ToString("0.0000") + "\r"); m_serialport.ReadChar(); m_serialport.ReadExisting(); } if (mode != m_mode) { if (mode == runMode.REFILL) m_serialport.Write("DIR REF\r"); else m_serialport.Write("DIR INF\r"); m_serialport.ReadChar(); m_serialport.ReadExisting(); } if (rate != m_rate) { if (mode == runMode.REFILL) m_serialport.Write("RFR " + rate.ToString("0.0000") + " UM\r"); else m_serialport.Write("RAT " + rate.ToString("0.0000") + " UM\r"); m_serialport.ReadChar(); m_serialport.ReadExisting(); } */ m_serialport.Write("RUN\r"); Thread.Sleep(200); break; } }
private void RetrieveParameters() { string [] p; switch (m_pump) { case pumpType.CHEMYX_FUSION: m_serialport.ReadExisting(); m_serialport.Write("view parameter\r\n"); Thread.Sleep(200); p = m_serialport.ReadLine().Split(' '); // command p = m_serialport.ReadLine().Trim().Split(' '); // unit if (Convert.ToInt32(p[p.Length - 1]) != 2) { // unit is not ul/mn m_serialport.Write("set units 2\r\n"); Thread.Sleep(200); RetrieveParameters(); return; } p = m_serialport.ReadLine().Trim().Split(' '); // diameter m_diameter = Convert.ToDouble(p[p.Length - 1]); p = m_serialport.ReadLine().Trim().Split(' '); // rate m_rate = Convert.ToDouble(p[p.Length - 1]); m_serialport.ReadLine(); // primerate ? m_serialport.ReadLine(); // time ? p = m_serialport.ReadLine().Trim().Split(' '); // volume m_volume = Convert.ToDouble(p[p.Length - 1]); m_serialport.ReadExisting(); break; case pumpType.HARVARD_2000: m_serialport.Write("MOD VOL\r"); m_serialport.ReadChar(); m_serialport.ReadExisting(); m_serialport.Write("DIR REF\r"); m_serialport.ReadChar(); m_serialport.ReadExisting(); m_mode = runMode.REFILL; m_volume = 85; m_rate = 31001; m_diameter = 14.32; break; } }
public void RunWithSettings(double diameter, unitType units, runMode mode, double volume, double rate) { Thread t = new Thread(delegate() { PumpThread(diameter, units, mode, volume, rate); }); t.Start(); }