Beispiel #1
0
        public (bool rtn, string msg) Open(ePWR_PortName Port, int[] addrAry, int enb4Bit)
        {
            try
            {
                int   idx      = 0;
                Any64 EnbItems = new Any64();
                EnbItems.INT32_0 = enb4Bit;
                foreach (var addr in addrAry)
                {
                    var item = _dicItems[(ePWRREAD_ITEMS)idx];
                    item.bEnb = EnbItems[idx];
                    item.add  = addr;
                    idx++;
                }
                modbusClnt = new ModbusClient();
                modbusClnt.ConnectedChanged += new EasyModbus.ModbusClient.ConnectedChangedHandler(On_Connected);
                modbusClnt.SerialPort        = Port.ToString();
                modbusClnt.Baudrate          = 38400;
                switch (type)
                {
                case ePWRTYPE.ElgenBattery:
                    modbusClnt.ReceiveDataChanged += new ModbusClient.ReceiveDataChangedHandler(On_ReceiveData);
                    modbusClnt.SendDataChanged    += new ModbusClient.SendDataChangedHandler(On_SendData);
                    modbusClnt.Baudrate            = 9600;
                    modbusClnt.StopBits            = System.IO.Ports.StopBits.One;
                    break;

                case ePWRTYPE.ElgenCharger:
                    modbusClnt.StopBits = System.IO.Ports.StopBits.One;
                    break;

                case ePWRTYPE.AutonicMeter:
                    modbusClnt.Baudrate = 9600;
                    modbusClnt.StopBits = System.IO.Ports.StopBits.Two;
                    break;

                default: return(false, $"Wrong {type} setting!!!!");
                }
                modbusClnt.Parity            = System.IO.Ports.Parity.None;
                modbusClnt.ConnectionTimeout = 500;
                if (!modbusClnt.Connected)
                {
                    modbusClnt.Connect();
                }
                return(true, null);
            }
            catch (Exception e)
            {
                return(false, e.ToString());
            }
        }
Beispiel #2
0
        public bool Open(ePWR_PortName port)
        {
            //이 순서대로 넣어야 함
            //Current
            //Voltage
            //Temp_1st
            //Temp_2nd
            //Temp_3th
            //Error
            //State
            //Ver

            //이건 잘못된 정보
            //30001 버전 마이너 버전을 소수점 2자리로 표시 ex) 입력값 : 101 -> 버전: v1.01
            //30002 상태 1 = 충전중 , 2 = 에러, 3 = 충전완료, 4 = 배터리이상, 5 = 대기
            //30003 충전 시간 충전 시작부터 경과 시간
            //30004 충전 전압 1000 => 1000V
            //30005 충전 전류 1000 => 1000A
            //var ary = new int[8] { 30005, 30004, -1, -1, -1, 30006, 30002, 30001 };

            //이게 맞는 정보
            //1) 0x5000   :  version을 소수두자리로 표시  , ex. 101->버전 :v1.01 의미
            //2)  0x5001   :  status 표시(1 = 충전중,2 = 에러,3 = 충전완료,4 = 배터리이상,5 = 대기)
            //3)  0x5002  :   온도(소수두자리로 표시)
            //4)  0x5003  :   충전전압(소수두자리로 표시)
            //5)  0x5004  :   충전전류(소수두자리로 표시)
            //6)  0x5005  :   오류코드(사용안함)
            var ary = new int[] { 0x5004, 0x5003, 1000, 1001, 1002, -1, 0x5001, 0x5000 };

            var bit = new Any64();

            bit[(int)ePWRREAD_ITEMS.Current]  = true;
            bit[(int)ePWRREAD_ITEMS.Voltage]  = true;
            bit[(int)ePWRREAD_ITEMS.Temp_1st] = true;
            bit[(int)ePWRREAD_ITEMS.Temp_2nd] = true;
            bit[(int)ePWRREAD_ITEMS.Temp_3th] = false;
            bit[(int)ePWRREAD_ITEMS.Error]    = true;
            bit[(int)ePWRREAD_ITEMS.State]    = true;
            bit[(int)ePWRREAD_ITEMS.Ver]      = true;
            var chk = _PwrBus.Open(port, ary, bit.INT32_0);

            if (null != chk.msg)
            {
                ReportLog(chk.msg);
            }
            _StateChk.Start();
            return(chk.rtn);
        }
 public bool Open(ePWR_PortName port)
 {
     try
     {
         serialPort.PortName = port.ToString();
         serialPort.Open();
         _StateChk.Start();
         Evt_Connection?.Invoke(this, serialPort.IsOpen);
         return(serialPort.IsOpen);
     }
     catch (Exception e)
     {
         ReportLog(e.ToString(), false);
         return(false);
     }
 }
Beispiel #4
0
        public bool Pwr_Open(ePWRTYPE Type, ePWR_PortName port)
        {
            switch (Type)
            {
            case ePWRTYPE.TabosBattery: _Pwr = new Bat4Tabos(); break;

            case ePWRTYPE.ElgenBattery: _Pwr = new Bat4Elgen(); break;

            case ePWRTYPE.ElgenCharger: _Pwr = new Chr4Elgen(); break;

            case ePWRTYPE.AutonicMeter: _Pwr = new Mtr4Autonics(); break;
            }
            _Pwr.Evt_Connection += On_PwrConnection;
            _Pwr.Evt_UpdateData += On_PwrUpdateData;
            _Pwr.Open(port);
            return(true);
        }
        public bool Open(ePWR_PortName port) // 에러는 보호상태
        {
            bool rtn = false;

            if (false == bUseModbus)
            {
                _PwrCom.PortName = port.ToString();
                _PwrCom.Open();
                rtn = _PwrCom.IsOpen;
            }
            else
            {
                // 모드버스 Data 주소 Curr Volt 온도1 온도2  온도3  보호상태(Error) 사용안함 버젼 == ePWRREAD_ITEMS
                var ary = new int[8] {
                    86, 73, -1, -1, -1, -1, -1, 1
                };
                var bit = new Any64();
                bit[(int)ePWRREAD_ITEMS.Current]  = true;
                bit[(int)ePWRREAD_ITEMS.Voltage]  = true;
                bit[(int)ePWRREAD_ITEMS.Error]    = false;
                bit[(int)ePWRREAD_ITEMS.Ver]      = false;
                bit[(int)ePWRREAD_ITEMS.Temp_1st] = false;
                bit[(int)ePWRREAD_ITEMS.Temp_2nd] = false;
                bit[(int)ePWRREAD_ITEMS.Temp_3th] = false;
                bit[(int)ePWRREAD_ITEMS.State]    = false;

                var chk = _PwrBus.Open(port, ary, bit.INT32_0);
                if (null != chk.msg)
                {
                    ReportLog(chk.msg);
                }
                rtn = chk.rtn;
            }
            _StateChk.Start();
            Evt_Connection?.Invoke(this, rtn);
            return(rtn);
        }