Пример #1
0
        public DSerialPort()
        {
            DPort = this;

            DPortBufSize = 4096;
            DPort_rxbuf  = new byte[DPortBufSize];

            if (OSIsUnix())
            {
                DPort.PortName = "/dev/ttyUSB0";         //default Unix port
            }
            else
            {
                DPort.PortName = "COM1";              //default Windows port
            }
            DPort.BaudRate = 19200;
            DPort.Parity   = Parity.Even;
            DPort.DataBits = 8;
            DPort.StopBits = StopBits.One;

            DPort.Handshake = Handshake.RequestToSend;

            // Set the read/write timeouts
            DPort.ReadTimeout  = 600000;
            DPort.WriteTimeout = 600000;

            //ASCII Encoding in C# is only 7bit so
            DPort.Encoding = Encoding.GetEncoding("ISO-8859-1");
        }
Пример #2
0
        static void Main(string[] args)
        {
            Console.WriteLine("VitalSignsCaptureWave v1.009 (C)2019 John George K.");
            Console.WriteLine("For command line usage: -help");
            Console.WriteLine();

            // Create a new SerialPort object with default settings.
            DSerialPort _serialPort = DSerialPort.getInstance;
            string      portName;
            string      sInterval;
            string      sWaveformSet;

            var parser = new CommandLineParser();

            parser.Parse(args);

            if (parser.Arguments.ContainsKey("help"))
            {
                Console.WriteLine("VSCapture.exe -port [portname] -interval [number] -waveset [number]");
                Console.WriteLine("-port <Set serial port name>");
                Console.WriteLine("-interval <Set numeric transmission interval>");
                Console.WriteLine("-waveset <Set waveform transmission set option>");
                Console.WriteLine("-export <Set data export CSV or JSON option>");
                Console.WriteLine("-devid <Set device ID for JSON export>");
                Console.WriteLine("-url <Set JSON export url>");
                Console.WriteLine();
                return;
            }

            if (parser.Arguments.ContainsKey("port"))
            {
                portName = parser.Arguments["port"][0];
            }
            else
            {
                Console.WriteLine("Select the Port to which Datex AS3 Monitor is to be connected, Available Ports:");
                foreach (string s in SerialPort.GetPortNames())
                {
                    Console.WriteLine(" {0}", s);
                }


                Console.Write("COM port({0}): ", _serialPort.PortName.ToString());
                portName = Console.ReadLine();
            }


            if (portName != "")
            {
                // Allow the user to set the appropriate properties.
                _serialPort.PortName = portName;
            }


            try
            {
                _serialPort.Open();

                if (_serialPort.OSIsUnix())
                {
                    dataEvent += new EventHandler((object sender, EventArgs e) => ReadData(sender));
                }

                if (!_serialPort.OSIsUnix())
                {
                    _serialPort.DataReceived += new SerialDataReceivedEventHandler(p_DataReceived);
                }

                if (!parser.Arguments.ContainsKey("port"))
                {
                    Console.WriteLine("You may now connect the serial cable to the Datex AS3 Monitor");
                    Console.WriteLine("Press any key to continue..");

                    Console.ReadKey(true);
                }

                //if (_serialPort.CtsHolding)
                {
                    if (parser.Arguments.ContainsKey("interval"))
                    {
                        sInterval = parser.Arguments["interval"][0];
                    }
                    else
                    {
                        Console.WriteLine();
                        Console.Write("Enter Numeric data Transmission interval (seconds):");
                        sInterval = Console.ReadLine();
                    }

                    short nInterval = 5;
                    if (sInterval != "")
                    {
                        nInterval = Convert.ToInt16(sInterval);
                    }
                    if (nInterval < 5)
                    {
                        nInterval = 5;
                    }

                    string sDataExportset;
                    if (parser.Arguments.ContainsKey("export"))
                    {
                        sDataExportset = parser.Arguments["export"][0];
                    }
                    else
                    {
                        Console.WriteLine();
                        Console.WriteLine("Data export options:");
                        Console.WriteLine("1. Export as CSV files");
                        Console.WriteLine("2. Export as CSV files and JSON to URL");
                        Console.WriteLine();
                        Console.Write("Choose data export option (1-2):");

                        sDataExportset = Console.ReadLine();
                    }

                    int nDataExportset = 1;
                    if (sDataExportset != "")
                    {
                        nDataExportset = Convert.ToInt32(sDataExportset);
                    }

                    if (nDataExportset == 2)
                    {
                        if (parser.Arguments.ContainsKey("devid"))
                        {
                            DeviceID = parser.Arguments["devid"][0];
                        }
                        else
                        {
                            Console.Write("Enter Device ID/Name:");
                            DeviceID = Console.ReadLine();
                        }

                        if (parser.Arguments.ContainsKey("url"))
                        {
                            JSONPostUrl = parser.Arguments["url"][0];
                        }
                        else
                        {
                            Console.Write("Enter JSON Data Export URL(http://):");
                            JSONPostUrl = Console.ReadLine();
                        }
                    }

                    _serialPort.m_DeviceID    = DeviceID;
                    _serialPort.m_jsonposturl = JSONPostUrl;

                    if (nDataExportset > 0 && nDataExportset < 3)
                    {
                        _serialPort.m_dataexportset = nDataExportset;
                    }


                    if (parser.Arguments.ContainsKey("waveset"))
                    {
                        sWaveformSet = parser.Arguments["waveset"][0];
                    }
                    else
                    {
                        Console.WriteLine();
                        Console.WriteLine("Waveform data Transmission sets:");
                        Console.WriteLine("0. None");
                        Console.WriteLine("1. ECG1, INVP1, INVP2, PLETH");
                        Console.WriteLine("2. ECG1, INVP1, PLETH, CO2, RESP");
                        Console.WriteLine("3. ECG1, PLETH, CO2, RESP, AWP, VOL, FLOW");
                        Console.WriteLine("4. ECG1, ECG2");
                        Console.WriteLine("5. EEG1, EEG2, EEG3, EEG4");
                        Console.WriteLine("6. ECG1, ECG2, ECG3");
                        Console.WriteLine();
                        Console.Write("Choose Waveform data Transmission set (0-6):");

                        sWaveformSet = Console.ReadLine();
                    }

                    short nWaveformSet = 1;
                    if (sWaveformSet != "")
                    {
                        nWaveformSet = Convert.ToInt16(sWaveformSet);
                    }


                    Console.WriteLine("Requesting {0} second Transmission from monitor", nInterval);

                    //Console.WriteLine("Requesting Transmission from monitor");
                    Console.WriteLine();
                    Console.WriteLine("Data will be written to CSV file AS3ExportData.csv in same folder");

                    //_serialPort.RequestTransfer(DataConstants.DRI_PH_DISPL, nInterval); // Add Request Transmission

                    //_serialPort.RequestTransfer(DataConstants.DRI_PH_DISPL, -1); // Add Single Request Transmission

                    //_serialPort.RequestTransfer(DataConstants.DRI_PH_60S_TREND, 60); // Add Trend Request Transmission

                    //Request transfer based on the DRI level of the monitor
                    _serialPort.RequestTransfer(DataConstants.DRI_PH_DISPL, nInterval, DataConstants.DRI_LEVEL_2005);                     // Add Request Transmission
                    _serialPort.RequestTransfer(DataConstants.DRI_PH_DISPL, nInterval, DataConstants.DRI_LEVEL_2003);                     // Add Request Transmission
                    _serialPort.RequestTransfer(DataConstants.DRI_PH_DISPL, nInterval, DataConstants.DRI_LEVEL_2001);                     // Add Request Transmission

                    //Request only a single waveform
                    //_serialPort.RequestWaveTransfer(DataConstants.DRI_WF_ECG1, DataConstants.WF_REQ_CONT_START);
                    //_serialPort.RequestWaveTransfer(DataConstants.DRI_WF_INVP1, DataConstants.WF_REQ_CONT_START);

                    //Request upto 8 waveforms but total sample rate should be less than 600 samples/sec
                    //Sample rate for ECG is 300, INVP 100, PLETH 100, respiratory 25 each
                    byte [] WaveTrtype = new byte[8];

                    CreateWaveformSet(nWaveformSet, WaveTrtype);

                    if (nWaveformSet != 0)
                    {
                        Console.WriteLine();
                        Console.WriteLine("Requesting Waveform data from monitor");
                        Console.WriteLine("Waveform data will be written to multiple CSV files in same folder");

                        _serialPort.RequestMultipleWaveTransfer(WaveTrtype, DataConstants.WF_REQ_CONT_START, DataConstants.DRI_LEVEL_2005);
                        _serialPort.RequestMultipleWaveTransfer(WaveTrtype, DataConstants.WF_REQ_CONT_START, DataConstants.DRI_LEVEL_2003);
                        _serialPort.RequestMultipleWaveTransfer(WaveTrtype, DataConstants.WF_REQ_CONT_START, DataConstants.DRI_LEVEL_2001);
                    }
                }

                Console.WriteLine("Press Escape button to Stop");

                if (_serialPort.OSIsUnix())
                {
                    do
                    {
                        if (_serialPort.BytesToRead != 0)
                        {
                            dataEvent.Invoke(_serialPort, new EventArgs());
                        }

                        if (Console.KeyAvailable == true)
                        {
                            if (Console.ReadKey(true).Key == ConsoleKey.Escape)
                            {
                                break;
                            }
                        }
                    }while (Console.KeyAvailable == false);
                }

                if (!_serialPort.OSIsUnix())
                {
                    ConsoleKeyInfo cki;

                    do
                    {
                        cki = Console.ReadKey(true);
                    }while (cki.Key != ConsoleKey.Escape);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error opening/writing to serial port :: " + ex.Message, "Error!");
            }
            finally
            {
                _serialPort.StopTransfer();

                _serialPort.StopwaveTransfer();

                _serialPort.Close();
            }
        }
Пример #3
0
        static void Main(string[] args)
        {
            Console.WriteLine("VitalSignsCaptureWave v1.004 (C)2015 John George K.");
            // Create a new SerialPort object with default settings.
            DSerialPort _serialPort = DSerialPort.getInstance;

            Console.WriteLine("Select the Port to which Datex AS3 Monitor is to be connected, Available Ports:");
            foreach (string s in SerialPort.GetPortNames())
            {
                Console.WriteLine(" {0}", s);
            }


            Console.Write("COM port({0}): ", _serialPort.PortName.ToString());
            string portName = Console.ReadLine();

            if (portName != "")
            {
                // Allow the user to set the appropriate properties.
                _serialPort.PortName = portName;
            }


            try
            {
                _serialPort.Open();

                if (_serialPort.OSIsUnix())
                {
                    dataEvent += new EventHandler((object sender, EventArgs e) => ReadData(sender));
                }

                if (!_serialPort.OSIsUnix())
                {
                    _serialPort.DataReceived += new SerialDataReceivedEventHandler(p_DataReceived);
                }

                Console.WriteLine("You may now connect the serial cable to the Datex AS3 Monitor");
                Console.WriteLine("Press any key to continue..");

                Console.ReadKey(true);

                //if (_serialPort.CtsHolding)
                {
                    Console.WriteLine();
                    Console.Write("Enter Numeric data Transmission interval (seconds):");
                    string sInterval = Console.ReadLine();

                    short nInterval = 5;
                    if (sInterval != "")
                    {
                        nInterval = Convert.ToInt16(sInterval);
                    }

                    Console.WriteLine();
                    Console.WriteLine("Waveform data Transmission sets:");
                    Console.WriteLine("0. None");
                    Console.WriteLine("1. ECG1, INVP1, INVP2, PLETH");
                    Console.WriteLine("2. ECG1, INVP1, PLETH, CO2, RESP");
                    Console.WriteLine("3. ECG1, PLETH, CO2, RESP, AWP, VOL, FLOW");
                    Console.WriteLine("4. ECG1, ECG2");
                    Console.WriteLine("5. EEG1, EEG2, EEG3, EEG4");
                    Console.WriteLine();
                    Console.Write("Choose Waveform data Transmission set (0-5):");

                    string sWaveformSet = Console.ReadLine();
                    short  nWaveformSet = 1;
                    if (sWaveformSet != "")
                    {
                        nWaveformSet = Convert.ToInt16(sWaveformSet);
                    }


                    Console.WriteLine("Requesting {0} second Transmission from monitor", nInterval);

                    //Console.WriteLine("Requesting Transmission from monitor");
                    Console.WriteLine();
                    Console.WriteLine("Data will be written to CSV file AS3ExportData.csv in same folder");

                    //_serialPort.RequestTransfer(DataConstants.DRI_PH_DISPL, nInterval); // Add Request Transmission

                    //_serialPort.RequestTransfer(DataConstants.DRI_PH_DISPL, -1); // Add Single Request Transmission

                    //_serialPort.RequestTransfer(DataConstants.DRI_PH_60S_TREND, 60); // Add Trend Request Transmission

                    //Request transfer based on the DRI level of the monitor
                    _serialPort.RequestTransfer(DataConstants.DRI_PH_DISPL, nInterval, DataConstants.DRI_LEVEL_2005);                     // Add Request Transmission
                    _serialPort.RequestTransfer(DataConstants.DRI_PH_DISPL, nInterval, DataConstants.DRI_LEVEL_2003);                     // Add Request Transmission
                    _serialPort.RequestTransfer(DataConstants.DRI_PH_DISPL, nInterval, DataConstants.DRI_LEVEL_2001);                     // Add Request Transmission

                    //Request only a single waveform
                    //_serialPort.RequestWaveTransfer(DataConstants.DRI_WF_ECG1, DataConstants.WF_REQ_CONT_START);
                    //_serialPort.RequestWaveTransfer(DataConstants.DRI_WF_INVP1, DataConstants.WF_REQ_CONT_START);

                    //Request upto 8 waveforms but total sample rate should be less than 600 samples/sec
                    //Sample rate for ECG is 300, INVP 100, PLETH 100, respiratory 25 each
                    byte [] WaveTrtype = new byte[8];

                    /*WaveTrtype[0] = DataConstants.DRI_WF_ECG1;
                     * //WaveTrtype[1] = DataConstants.DRI_WF_INVP1;
                     * WaveTrtype[1] = DataConstants.DRI_WF_VOL;
                     * //WaveTrtype[2] = DataConstants.DRI_WF_INVP2;
                     * WaveTrtype[2] = DataConstants.DRI_WF_PLETH;
                     * WaveTrtype[3] = DataConstants.DRI_WF_CO2;
                     * WaveTrtype[4] = DataConstants.DRI_WF_RESP;
                     * WaveTrtype[5] = DataConstants.DRI_WF_AWP;
                     * //WaveTrtype[6] = DataConstants.DRI_WF_AA;
                     * WaveTrtype[6] = DataConstants.DRI_WF_FLOW;
                     * WaveTrtype[7] = DataConstants.DRI_EOL_SUBR_LIST;*/

                    CreateWaveformSet(nWaveformSet, WaveTrtype);

                    if (nWaveformSet != 0)
                    {
                        Console.WriteLine();
                        Console.WriteLine("Requesting Waveform data from monitor");
                        Console.WriteLine("Waveform data will be written to multiple CSV files in same folder");

                        _serialPort.RequestMultipleWaveTransfer(WaveTrtype, DataConstants.WF_REQ_CONT_START, DataConstants.DRI_LEVEL_2005);
                        _serialPort.RequestMultipleWaveTransfer(WaveTrtype, DataConstants.WF_REQ_CONT_START, DataConstants.DRI_LEVEL_2003);
                        _serialPort.RequestMultipleWaveTransfer(WaveTrtype, DataConstants.WF_REQ_CONT_START, DataConstants.DRI_LEVEL_2001);
                    }
                }
                //WaitForSeconds(5);

                Console.WriteLine("Press Escape button to Stop");

                if (_serialPort.OSIsUnix())
                {
                    do
                    {
                        if (_serialPort.BytesToRead != 0)
                        {
                            dataEvent.Invoke(new object(), new EventArgs());
                        }

                        if (Console.KeyAvailable == true)
                        {
                            if (Console.ReadKey(true).Key == ConsoleKey.Escape)
                            {
                                break;
                            }
                        }
                    }while (Console.KeyAvailable == false);
                }

                if (!_serialPort.OSIsUnix())
                {
                    ConsoleKeyInfo cki;

                    do
                    {
                        cki = Console.ReadKey(true);
                    }while (cki.Key != ConsoleKey.Escape);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error opening/writing to serial port :: " + ex.Message, "Error!");
            }
            finally
            {
                _serialPort.StopTransfer();

                _serialPort.StopwaveTransfer();

                _serialPort.Close();
            }
        }
Пример #4
0
        static void Main(string[] args)
        {
            Console.WriteLine("VitalSignsCapture (C)2012-16 John George K.");
            // Create a new SerialPort object with default settings.
            DSerialPort _serialPort = DSerialPort.getInstance;

            Console.WriteLine("Select the Port to which Datex AS3 Monitor is to be connected, Available Ports:");
            foreach (string s in SerialPort.GetPortNames())
            {
                Console.WriteLine(" {0}", s);
            }


            Console.Write("COM port({0}): ", _serialPort.PortName.ToString());
            string portName = Console.ReadLine();

            if (portName != "")
            {
                // Allow the user to set the appropriate properties.
                _serialPort.PortName = portName;
            }


            try
            {
                _serialPort.Open();

                if (_serialPort.OSIsUnix())
                {
                    dataEvent += new EventHandler(delegate(object sender, EventArgs e)
                    {
                        ReadData(sender);
                    });
                }

                if (!_serialPort.OSIsUnix())
                {
                    _serialPort.DataReceived += new SerialDataReceivedEventHandler(p_DataReceived);
                }

                Console.WriteLine("You may now connect the serial cable to the Datex AS3 Monitor");
                Console.WriteLine("Press any key to continue..");

                Console.ReadKey(true);

                //if (_serialPort.CtsHolding)
                //{
                Console.WriteLine();
                Console.Write("Enter Transmission interval (seconds):");
                string sInterval = Console.ReadLine();

                short nInterval = 5;
                if (sInterval != "")
                {
                    nInterval = Convert.ToInt16(sInterval);
                }

                Console.WriteLine("Requesting {0} second Transmission from monitor", nInterval);
                Console.WriteLine();
                Console.WriteLine("Data will be written to CSV file AS3ExportData.csv in same folder");
                Console.WriteLine(Path.Combine(Directory.GetCurrentDirectory(), "AS3ExportData.csv"));

                //Request transfer based on the DRI level of the monitor
                _serialPort.RequestTransfer(DataConstants.DRI_PH_DISPL, nInterval, DataConstants.DRI_LEVEL_2005);                         // Add Request Transmission
                _serialPort.RequestTransfer(DataConstants.DRI_PH_DISPL, nInterval, DataConstants.DRI_LEVEL_2003);                         // Add Request Transmission
                _serialPort.RequestTransfer(DataConstants.DRI_PH_DISPL, nInterval, DataConstants.DRI_LEVEL_2001);                         // Add Request Transmission

                //_serialPort.RequestTransfer(DataConstants.DRI_PH_DISPL, -1); // Add Single Request Transmission

                //}
                //WaitForSeconds(5);

                Console.WriteLine("Press Escape button to Stop");

                if (_serialPort.OSIsUnix())
                {
                    do
                    {
                        if (_serialPort.BytesToRead != 0)
                        {
                            //dataEvent.Invoke(new object(), new EventArgs());
                            dataEvent.Invoke(_serialPort, new EventArgs());
                        }

                        if (Console.KeyAvailable == true)
                        {
                            if (Console.ReadKey(true).Key == ConsoleKey.Escape)
                            {
                                break;
                            }
                        }
                    }while (Console.KeyAvailable == false);
                }

                if (!_serialPort.OSIsUnix())
                {
                    ConsoleKeyInfo cki;

                    do
                    {
                        cki = Console.ReadKey(true);
                    }while (cki.Key != ConsoleKey.Escape);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error opening/writing to serial port :: " + ex.Message, "Error!");
            }
            finally
            {
                _serialPort.StopTransfer();

                _serialPort.Close();
            }
        }