| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- using GSG.NET.Concurrent;
- using GSG.NET.Extensions;
- using GSG.NET.Logging;
- using GSG.NET.TCP;
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Text;
- using System.Threading;
- using System.Threading.Tasks;
- using VehicleControlSystem.ControlLayer.Serial.DataModel;
- namespace VehicleControlSystem.ControlLayer.Serial.BatteryTabos
- {
- public class Peak
- {
- static Logger logger = Logger.GetLogger();
- protected TsQueue<object> qqW = new TsQueue<object>( 128 );//write
- BMUManager manager = null;
- object lockObject = new object();
- public Peak( BMUManager mrg )
- {
- this.manager = mrg;
- }
- internal void Enqueue(object o )
- {
- this.qqW.Enqueue( o );
- }
- void TryToConnect()
- {
- this.qqW.Clear();
- //h.Connect( new TcpComm
- //{
- // Ip = this.manager.Config.IpAddress,
- // PortNo = this.manager.Config.Port,
- // RollCnt = 1,
- //} );
- manager._OnConnected();
- }
- //Todo:Dll 에서 상태 가져오기
- bool IsConnected => true;
- public void _ThreadPoolingReceiveData()
- {
- while ( !this.manager.cancel.Canceled )
- {
- try
- {
- if ( !IsConnected )
- {
- this.TryToConnect();
- continue;
- }
- object o = this.qqW.Dequeue();
- if ( o is PollingObject ) //Scan 을 주기적 으로 진행.
- {
- this.PollingBattery();
- }
- //else if ( o is ISetData ) //하나의 명령을 수행.
- //{
- // //ExecuteSetData( o as ISetData );
- //}
- else if ( o is DoInvokeChangedReceivedData ) //Scan 이후 결과를 처리. Manager 에서 처리
- {
- //this.manager._InvokeChgdReceivedData();
- }
- }
- catch ( ThreadAbortException exception )
- {
- logger.E( $"eSlnet {this.manager.BMUConfig.ID} - {exception.Message}" );
- //h.CloseSocket();
- }
- catch ( ObjectDisposedException exception )
- {
- //this.TcpError( exception );
- }
- catch ( IOException exception )
- {
- //this.TcpError( exception );
- }
- catch ( Exception exception )
- {
- logger.E( $"eSlnet {exception.Message}" );
- }
- }
- }
- private void PollingBattery()
- {
- var ll = this.manager.ReceivedDataDic.Values.ToList();
- ll.ForEach( x =>
- {
- var kind = CastTo<eDataKind>.From<Enum>( x.DataKind );
- switch ( kind )
- {
- case eDataKind.Volte:
- break;
- case eDataKind.Current:
- break;
- case eDataKind.BatteryState:
- break;
- case eDataKind.ChargeCompleteTime:
- break;
- case eDataKind.DisChargeCompleteTime:
- break;
- case eDataKind.SOC:
- break;
- case eDataKind.SOH:
- break;
- case eDataKind.ResidualCapacity:
- break;
- case eDataKind.ResidualEnergy:
- break;
- case eDataKind.Temperature:
- break;
- default:
- break;
- }
- } );
- }
- }
- }
|