Beispiel #1
0
        public static void searchRF60x(out String strPortName, out UInt32 dwBaudrate)
        {
            IntPtr hCom = new IntPtr();
            CSLib_RF60x._RF60x_HELLO_ANSWER_ ha = new CSLib_RF60x._RF60x_HELLO_ANSWER_();

            strPortName = "";
            dwBaudrate = 0;

            foreach (String S in SerialPort.GetPortNames())
            {
                foreach (UInt32 rate in baudrates)
                {
                    Console.WriteLine("searching for {0}:{1}",S,rate);
                    if (CSLib_RF60x.RF60x_OpenPort(S, rate, ref hCom))
                    {
                        if (CSLib_RF60x.RF60x_HelloCmd(hCom, 1, ref ha))
                        {
                            strPortName = S;
                            dwBaudrate = rate;
                            Console.WriteLine("Found device {0} on port={1} with baudrate={2}", ha.bDeviceType, S, rate);
                            CSLib_RF60x.RF60x_ClosePort(hCom);
                            return;
                        }
                    }
                    try
                    {
                        CSLib_RF60x.RF60x_ClosePort(hCom);
                    }
                    catch (Exception E)
                    {
                        Console.WriteLine("RF60x_ClosePort() Exception handled");
                    }
                }

            }
        }
Beispiel #2
0
        static void Main(string[] args)
        {
            // div - разница конечного результата и результата измерения.
            // fresult - вычисленный результат текущего измерения
            // way - направление переполнения
            // wData - полученный с датчика результат
            float div = 0, fresult = 0; string way = "";
            UInt16 wData=0;
            // структура с ответом от устройства
            CSLib_RF60x._RF60x_HELLO_ANSWER_ ans = new CSLib_RF60x._RF60x_HELLO_ANSWER_();
            // дескриптор устройства COM порта
            IntPtr hComPort = new IntPtr();
            string ComName;
            UInt32 ComBaudrate;

            ComSearch.searchRF60x(out ComName, out ComBaudrate);

            bool result = CSLib_RF60x.RF60x_OpenPort(ComName, ComBaudrate, ref hComPort);
                Console.WriteLine("executing RF60x_OpenPort() result = {0}", result);
                     result = CSLib_RF60x.RF60x_HelloCmd(hComPort, 1, ref ans);
                Console.WriteLine("executing RF60x_HelloCmd() result = {0}", result);
                Console.WriteLine("dev_modification={0}\ndev_type={1}\nmax_dist={2}\ndev_range={3}\ndev_serial={4}",ans.bDeviceModification,ans.bDeviceType,ans.wDeviceMaxDistance,ans.wDeviceRange,ans.wDeviceSerial);
                Console.WriteLine("press any key to continue and start measuring...");
                Console.ReadKey();
                try
                {
                    //CSLib_RF60x.RF60x_StartStream(hComPort, 1);
                    while (true)
                    {
                        result = CSLib_RF60x.RF60x_Measure(hComPort, 1, ref wData);
                        CSLib_RF60x.RF60x_GetStreamMeasure(hComPort, ref wData);
                        /*if (wData != 0)
                        {*/
                            fresult = CSLib_RF60x.DToXTransform(wData, ans.wDeviceRange);
                            div = fresult - 2.5f;
                        /*}*/

                        if (div == 0.0f) way = "OK";
                        else if (div < 0.0f) way = "UP";
                        else way = "DOWN";

                        Console.Clear();
                        Console.Write("measure result = {0:f4}mm\ndiv = {1:f4}mm\ndecision = {2}", fresult, div, way);
                        Thread.Sleep(200);//5 measurments per second
                    }

                }
                catch (Exception Ex)
                {
                    Console.WriteLine(Ex.Message);
                }
                finally
                {
                    //CSLib_RF60x.RF60x_StopStream(hComPort, 1);
                    result = CSLib_RF60x.RF60x_ClosePort(hComPort);

                    Console.WriteLine("executing RF60x_ClosePort() result = {0}", result);

                    Console.ReadKey();
                }
        }