|
|
@@ -15,7 +15,7 @@ namespace BatteryTabos
|
|
|
#region Total Packet Data
|
|
|
readonly byte StartSentence1 = 0xAF;
|
|
|
readonly byte StartSentence2 = 0xFA;
|
|
|
- readonly byte Address = 0x61;
|
|
|
+ readonly byte Address = 0x60;
|
|
|
readonly byte Length = 0x05;
|
|
|
readonly byte ReqCommand = 0x01;
|
|
|
readonly byte Order = 0x60;
|
|
|
@@ -30,6 +30,13 @@ namespace BatteryTabos
|
|
|
readonly byte BatteryDataErrorCommand = 0x1F;
|
|
|
#endregion
|
|
|
|
|
|
+ public enum ePacketType
|
|
|
+ {
|
|
|
+ VCSST = 0, // Voltage, Current, Soc, State
|
|
|
+ SCTDCT, // Soh, ChargeTime, DisChargeTime
|
|
|
+ }
|
|
|
+ public ePacketType packetType { get; set; }
|
|
|
+
|
|
|
Rs232c battery;
|
|
|
Config _config { get; set; }
|
|
|
|
|
|
@@ -44,34 +51,13 @@ namespace BatteryTabos
|
|
|
get { return battery.serial.IsOpen; }
|
|
|
}
|
|
|
|
|
|
- byte[] pp;
|
|
|
- string pk;
|
|
|
+ byte[] packet;
|
|
|
+
|
|
|
public Manager( string _com )
|
|
|
{
|
|
|
this._config = new Config();
|
|
|
|
|
|
- /*Test ComPort*/
|
|
|
this.battery = new Rs232c( _com );
|
|
|
- var s = StartSentence1 + StartSentence2;
|
|
|
- var e = EndSentence1 + EndSentence2;
|
|
|
-
|
|
|
- string p = s.ToString()+ Address.ToString()+Length.ToString()+ReqCommand.ToString()+Order.ToString()+Kind1.ToString()+Kind2.ToString()+_CheckSum.ToString() + e.ToString();
|
|
|
- pk = p;
|
|
|
- //this._allpacket = new byte[] { s , Address , Length , ReqCommand , Order , Kind1 , Kind2 , _CheckSum , e };
|
|
|
-
|
|
|
- pp = new byte[ 11 ];
|
|
|
- pp[ 0 ] = 0xAF;
|
|
|
- pp[ 1 ] = 0xFA;
|
|
|
- pp[ 2 ] = 0x61;
|
|
|
- pp[ 3 ] = 0x05;
|
|
|
- pp[ 4 ] = 0x01;
|
|
|
- pp[ 5 ] = 0x61;
|
|
|
- pp[ 6 ] = 0x30;
|
|
|
- pp[ 7 ] = 0x07;
|
|
|
- pp[ 8 ] = 0x17;//CheckSum( pp );
|
|
|
- pp[ 9 ] = 0xAF;
|
|
|
- pp[ 10 ] = 0xA0;
|
|
|
-
|
|
|
|
|
|
/*event Thread Pull Start*/
|
|
|
QW = ThreadUtils.Invoke( QueWorker );
|
|
|
@@ -112,12 +98,12 @@ namespace BatteryTabos
|
|
|
}
|
|
|
|
|
|
private void Receive( object sender , SerialDataReceivedEventArgs e )
|
|
|
- {
|
|
|
+ {
|
|
|
try
|
|
|
{
|
|
|
if ( this.battery.serial.IsOpen && this.battery.serial != null )
|
|
|
{
|
|
|
- var recv = new byte[ this.battery.serial.BytesToRead ];
|
|
|
+ var recv = new Byte[ this.battery.serial.BytesToRead ];
|
|
|
this.battery.serial.Read( recv , 0 , recv.Length );
|
|
|
ByteParse( recv );
|
|
|
|
|
|
@@ -127,42 +113,30 @@ namespace BatteryTabos
|
|
|
catch ( Exception ex ) { }
|
|
|
}
|
|
|
|
|
|
- private void ByteParse( byte[] data )
|
|
|
+ private void ByteParse( Byte[] data )
|
|
|
{
|
|
|
//var rt = CheckSum(data);
|
|
|
//if(rt){}
|
|
|
|
|
|
- var stvol = BitConverter.ToString( data , 6 , 2 );
|
|
|
- var _voltage = Int32.Parse( stvol , System.Globalization.NumberStyles.HexNumber ) * 0.01;
|
|
|
+ var V = ( (int)data[6]*256 + (int)data[7] ) * 0.01;
|
|
|
|
|
|
- /*-32768 ~ +32767*/
|
|
|
- var stcur = BitConverter.ToString( data , 8 , 2 );
|
|
|
- var _current = Convert.ToInt16( stcur , 16 ) * 0.01;
|
|
|
+ var A = ( data[ 8 ] * 256 + data[ 9 ] ) * 0.01;
|
|
|
|
|
|
- var stsoc = BitConverter.ToString( data , 10 , 2 );
|
|
|
- var _soc = Int32.Parse( stvol , System.Globalization.NumberStyles.HexNumber ) * 1;
|
|
|
+ var SOC = ( data[ 10 ] * 256 + data[ 11 ] );
|
|
|
|
|
|
- var stbr = BitConverter.ToString( data , 12 , 2 );
|
|
|
- var _batteryStatus = Int32.Parse( stvol , System.Globalization.NumberStyles.HexNumber );
|
|
|
+ var B = ( data[ 12 ] * 256 + data[ 13 ] );
|
|
|
|
|
|
- var stct = BitConverter.ToString( data , 14 , 2 );
|
|
|
- var _chargeTime = Int32.Parse( stvol , System.Globalization.NumberStyles.HexNumber ) * 1;
|
|
|
+ var CT = ( data[ 14 ] * 256 + data[ 15 ] );
|
|
|
|
|
|
- var stdct = BitConverter.ToString( data , 16 , 2 );
|
|
|
- var _disChargeTime = Int32.Parse( stvol , System.Globalization.NumberStyles.HexNumber ) * 1;
|
|
|
+ var DCT = ( data[ 16 ] * 256 + data[ 17 ] );
|
|
|
|
|
|
- /*-32768 ~ +32767*/
|
|
|
- var sttp = BitConverter.ToString( data , 18 , 2 );
|
|
|
- var _temperature = Convert.ToInt16( sttp , 16 ) * 0.01;
|
|
|
+ var T = ( data[ 18 ] * 256 + data[ 19 ] ) * 0.1;
|
|
|
|
|
|
- var stsoh = BitConverter.ToString( data , 20 , 2 );
|
|
|
- var _soh = Int32.Parse( stvol , System.Globalization.NumberStyles.HexNumber ) * 1;
|
|
|
+ var SOH = ( data[ 20 ] * 256 + data[ 21 ] );
|
|
|
|
|
|
- var stps = BitConverter.ToString( data , 22 , 2 );
|
|
|
- var _residualcapacity = Int32.Parse( stvol , System.Globalization.NumberStyles.HexNumber ) * 0.01;
|
|
|
+ var Cap = ( data[ 22 ] * 256 + data[ 23 ] ) * 0.01;
|
|
|
|
|
|
- var stpe = BitConverter.ToString( data , 24 , 2 );
|
|
|
- var _residualEnergy = Int32.Parse( stvol , System.Globalization.NumberStyles.HexNumber ) * 0.1;
|
|
|
+ var E = ( data[ 24 ] * 256 + data[ 25 ] ) * 0.1;
|
|
|
}
|
|
|
|
|
|
private void QueWorker( )
|
|
|
@@ -191,16 +165,24 @@ namespace BatteryTabos
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- public void WriteToByte( /*byte[] _packet*/ )
|
|
|
+ public void WriteToByte( ePacketType packetType )
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
if ( this.IsOpen && this.battery.serial != null )
|
|
|
{
|
|
|
- /*byte*/
|
|
|
- //this.battery.serial.Write( _packet , 0 , _packet.Length );
|
|
|
- //this.battery.serial.Write( _allpacket , 0 , _allpacket.Length );
|
|
|
- this.battery.serial.Write( pp , 0 , pp.Length );
|
|
|
+ byte[] _data = null;
|
|
|
+ switch ( packetType )
|
|
|
+ {
|
|
|
+ case ePacketType.VCSST:
|
|
|
+ _data = OrderToInfomation();
|
|
|
+ break;
|
|
|
+ case ePacketType.SCTDCT:
|
|
|
+ _data = OrderToCharging();
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ this.battery.serial.Write( _data , 0 , _data.Length );
|
|
|
|
|
|
System.Diagnostics.Debug.WriteLine( $"[Serial] - Write : {_allpacket.ToString()} -" );
|
|
|
}
|
|
|
@@ -208,6 +190,42 @@ namespace BatteryTabos
|
|
|
catch ( Exception ex ) { }
|
|
|
}
|
|
|
|
|
|
+ private byte[] OrderToInfomation()
|
|
|
+ {
|
|
|
+ packet = new byte[ 11 ];
|
|
|
+ packet[ 0 ] = 0xAF;
|
|
|
+ packet[ 1 ] = 0xFA;
|
|
|
+ packet[ 2 ] = 0x61; //addr
|
|
|
+ packet[ 3 ] = 0x05;
|
|
|
+ packet[ 4 ] = 0x01;
|
|
|
+ packet[ 5 ] = 0x61;
|
|
|
+ packet[ 6 ] = 0x4F; // kind 1
|
|
|
+ packet[ 7 ] = 0x00; // kind 2
|
|
|
+ packet[ 8 ] = 0x17; //Checksum();
|
|
|
+ packet[ 9 ] = 0xAF;
|
|
|
+ packet[ 10 ] = 0xA0;
|
|
|
+
|
|
|
+ return packet;
|
|
|
+ }
|
|
|
+
|
|
|
+ private byte[] OrderToCharging()
|
|
|
+ {
|
|
|
+ packet = new byte[ 11 ];
|
|
|
+ packet[ 0 ] = 0xAF;
|
|
|
+ packet[ 1 ] = 0xFA;
|
|
|
+ packet[ 2 ] = 0x61; //addr
|
|
|
+ packet[ 3 ] = 0x05;
|
|
|
+ packet[ 4 ] = 0x01;
|
|
|
+ packet[ 5 ] = 0x61; //addr
|
|
|
+ packet[ 6 ] = 0x30; // kind 1
|
|
|
+ packet[ 7 ] = 0x07; // kind 2
|
|
|
+ packet[ 8 ] = 0x17; //0x4E; //0x17;//CheckSum( pp );
|
|
|
+ packet[ 9 ] = 0xAF;
|
|
|
+ packet[ 10 ] = 0xA0;
|
|
|
+
|
|
|
+ return packet;
|
|
|
+ }
|
|
|
+
|
|
|
public void WriteToString( /*string _packet*/ )
|
|
|
{
|
|
|
//var _packet = Encoding.Default.GetString( _allpacket );
|
|
|
@@ -216,7 +234,6 @@ namespace BatteryTabos
|
|
|
if ( this.IsOpen )
|
|
|
{
|
|
|
//this.battery.serial.Write( _packet );
|
|
|
- this.battery.serial.Write( pk );
|
|
|
}
|
|
|
}
|
|
|
catch ( Exception ex ) { throw new Exception(); }
|