ソースを参照

1. 加入測試協議中不存在的Action下發功能

Jessica Tseng 4 年 前
コミット
21428957dd

+ 1 - 1
EVCB_OCPP.WSServer/App.config

@@ -15,7 +15,7 @@
    </connectionStrings>
   <appSettings>   
      <add key="LocalAuthAPI" value="http://172.1.2.187/PortalApi/1" />
-    <add key="WSPort" value="8080" />
+    <add key="WSPort" value="2012" />
     <add key="WSSPort" value="2013" />  
   </appSettings>
   <startup>

+ 21 - 10
EVCB_OCPP.WSServer/ProtalServer.cs

@@ -1188,14 +1188,25 @@ namespace EVCB_OCPP.WSServer
                                         }
 
 
-                                        if (_RequestType != null && item.CreatedBy == "Destroyer")
+                                        if (item.CreatedBy == "Destroyer")
                                         {
                                             Console.WriteLine("********************************");
-                                            request = Activator.CreateInstance(_RequestType) as IRequest;
-                                            Console.WriteLine("++++++++++++++++++++++++++++++++++++++++");
-                                            uuid = session.queue.store(request);
-                                            string rawRequest = BasicMessageHandler.GenerateDestroyRequest(uuid, item.OutAction, item.OutRequest);
-                                            Send(session, rawRequest, string.Format("{0} {1}", action, "Request"), "");
+                                            if (_RequestType != null)
+                                            {
+                                                request = Activator.CreateInstance(_RequestType) as IRequest;
+                                                Console.WriteLine("++++++++++++++++++++++++++++++++++++++++");
+                                                uuid = session.queue.store(request);
+                                                string rawRequest = BasicMessageHandler.GenerateDestroyRequest(uuid, item.OutAction, item.OutRequest);
+                                                Send(session, rawRequest, string.Format("{0} {1}", action, "Request"), "");
+
+                                            }
+                                            else
+                                            {
+
+                                                string rawRequest = BasicMessageHandler.GenerateDestroyRequest(Guid.NewGuid().ToString(), item.OutAction, item.OutRequest);
+                                                Send(session, rawRequest, string.Format("{0} {1}", action, "Request"), "");
+
+                                            }
                                         }
 
                                         AddConfirmMessage(charger_SN, item.Id, item.SerialNo, item.OutAction, uuid);
@@ -1232,13 +1243,13 @@ namespace EVCB_OCPP.WSServer
             }
         }
 
-      
+
         async private void HeartBeatCheckTrigger()
         {
             for (; ; )
             {
                 if (_ct.IsCancellationRequested)
-                {                   
+                {
                     break;
                 }
 
@@ -1247,7 +1258,7 @@ namespace EVCB_OCPP.WSServer
 
                     if (DateTime.Now.Subtract(lastcheckdt).TotalSeconds > 30)
                     {
-                        lastcheckdt = DateTime.Now;                      
+                        lastcheckdt = DateTime.Now;
                         Stopwatch watch = new Stopwatch();
                         Dictionary<string, ClientData> _copyClientDic = null;
                         lock (_lockClientDic)
@@ -1284,7 +1295,7 @@ namespace EVCB_OCPP.WSServer
                             logger.Fatal("Update HeartBeatCheckTrigger cost " + watch.ElapsedMilliseconds / 1000 + " seconds.");
                         }
                     }
-                  
+
 
                     await Task.Delay(10000);
                 }

+ 1 - 0
EVCB_OCPP.WSServer/SuperSocket.Protocol/OCPPSubProtocol.cs

@@ -10,6 +10,7 @@ using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Reflection;
+using System.Text;
 
 namespace OCPPServer.SubProtocol
 {

+ 19 - 16
TestTool.RemoteTriggerAPP/MainWindow.xaml

@@ -5,7 +5,7 @@
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
         xmlns:local="clr-namespace:TestTool.RemoteTriggerAPP"      
         mc:Ignorable="d"
-        Title="下發測試用工具(公司內網) V1.1.29 (20201027)" Height="481" Width="652">
+        Title="下發測試用工具(公司內網) V1.1.30 (20210412)" Height="481" Width="652">
     <Viewbox>
         <Grid Margin="0,2,2,0">
             <Grid.ColumnDefinitions>
@@ -16,7 +16,8 @@
             <Label Content="Connector Id:" HorizontalAlignment="Left" Height="27" Margin="118,23,0,0" VerticalAlignment="Top" Width="92" Grid.Column="1"/>
             <TextBox Name="uxChargeBoxIdTb" Text="OCTT_1" HorizontalAlignment="Left" Height="27" Margin="179,23,0,0" VerticalAlignment="Top" Width="148" Grid.ColumnSpan="2" LostFocus="uxChargeBoxIdTb_LostFocus"/>
             <TextBox Name="uxConnectorIdTb" Text="1" HorizontalAlignment="Left" Height="27" Margin="210,23,0,0" VerticalAlignment="Top" Width="35" Grid.Column="1"/>
-            <ComboBox Name="uxCmdCb" HorizontalAlignment="Left" Margin="212,163,0,0" VerticalAlignment="Top" Width="253" Height="34" SelectionChanged="UxCmdCb_SelectionChanged" Grid.ColumnSpan="2">
+            <ComboBox Name="uxCmdCb" HorizontalAlignment="Left" Margin="5.333,189,0,0" VerticalAlignment="Top" Width="253" Height="34" SelectionChanged="UxCmdCb_SelectionChanged" Grid.Column="1">
+                <ComboBoxItem>WrongAction(破壞模式專用)</ComboBoxItem>
                 <ComboBoxItem>ChangeAvailability_Inoperative</ComboBoxItem>
                 <ComboBoxItem>ChangeAvailability_Operative</ComboBoxItem>
                 <ComboBoxItem>UpdateFirmware(搭配破壞模式,請勿下Publish)</ComboBoxItem>
@@ -47,8 +48,8 @@
                 <ComboBoxItem>TriggerMessage_MeterValues</ComboBoxItem>
                 <ComboBoxItem>TriggerMessage_StatusNotification</ComboBoxItem>
             </ComboBox>
-            <Label  Content="Remote Trigger Cmd:" HorizontalAlignment="Left" Height="27" Margin="69,165,0,0" VerticalAlignment="Top" Width="137"/>
-            <Button Name="uxSubmitBtn" Content="Submit" HorizontalAlignment="Left" Margin="265,162,0,0" VerticalAlignment="Top" Width="51" Height="34" Click="UxSubmitBtn_Click" Grid.Column="1"/>
+            <Label  Content="Remote Trigger Cmd:" HorizontalAlignment="Left" Height="27" Margin="69,191,0,0" VerticalAlignment="Top" Width="137"/>
+            <Button Name="uxSubmitBtn" Content="Submit" HorizontalAlignment="Left" Margin="265.333,188,0,0" VerticalAlignment="Top" Width="51" Height="34" Click="UxSubmitBtn_Click" Grid.Column="1"/>
             <TextBox Name="uxMsgTb" HorizontalAlignment="Left" Height="80" Margin="84,346,0,0" VerticalAlignment="Top" Width="471" Grid.ColumnSpan="2"/>
             <Label Content="Msg:" HorizontalAlignment="Left" Height="27" Margin="75,314,0,0" VerticalAlignment="Top" Width="43" RenderTransformOrigin="0.744,3.407"/>
             <Label Content="Id Tag:" HorizontalAlignment="Left" Height="27" Margin="71,74,0,0" VerticalAlignment="Top" Width="47"/>
@@ -59,28 +60,30 @@
             <TextBox x:Name="uxParentIdTagTb" Text="TestTool" HorizontalAlignment="Left" Height="27" Margin="75,74,0,0" VerticalAlignment="Top" Width="73" RenderTransformOrigin="3.714,1" Grid.Column="1"/>
             <Label Content="Configuration Key:" HorizontalAlignment="Left" Height="27" Margin="71,119,0,0" VerticalAlignment="Top" Width="120"/>
             <TextBox x:Name="uxConfigKeyTb" Text="ConnectionTimeOut" HorizontalAlignment="Left" Height="27" Margin="196,119,0,0" VerticalAlignment="Top" Width="138" RenderTransformOrigin="3.714,1" Grid.ColumnSpan="2"/>
-            <Label Content=" Value:" HorizontalAlignment="Left" Height="27" Margin="121,119,0,0" VerticalAlignment="Top" Width="54" Grid.Column="1"/>
+            <Label Content=" Value:" HorizontalAlignment="Left" Height="27" Margin="124.333,119,0,0" VerticalAlignment="Top" Width="54" Grid.Column="1"/>
             <TextBox x:Name="uxConfigValueTb" Text="30" HorizontalAlignment="Left" Height="27" Margin="180,117,0,0" VerticalAlignment="Top" Width="52" RenderTransformOrigin="3.714,1" Grid.Column="1"/>
 
-            <Label Visibility="Visible"   Content="Upload Firmware:" HorizontalAlignment="Left" Height="27" Margin="69,217,0,0" VerticalAlignment="Top" Width="113"/>
-            <TextBox Visibility="Visible" x:Name="uxUploadFileTb" Text="" HorizontalAlignment="Left" Height="27" Margin="182,217,0,0" VerticalAlignment="Top" Width="210" RenderTransformOrigin="3.714,1" Grid.ColumnSpan="2"/>
-            <Button Visibility="Visible"  x:Name="uxFileSubmitBtn" Content="..." HorizontalAlignment="Left" Margin="187,215,0,0" VerticalAlignment="Top" Width="46" Height="29" Click="uxFileSubmitBtn_Click" Grid.Column="1"/>
-            <Button Visibility="Visible"  x:Name="uxUploadBtn" Content="Upload" HorizontalAlignment="Left" Margin="259,212,0,0" VerticalAlignment="Top" Width="52" Height="34" Click="uxUploadBtn_Click" Grid.Column="1"/>
-            <Label Visibility="Visible"   Content="Publish Version:" HorizontalAlignment="Left" Height="27" Margin="69,266,0,0" VerticalAlignment="Top" Width="113"/>
-            <ComboBox Visibility="Visible"  x:Name="uxPublishCb" HorizontalAlignment="Left" Margin="179,266,0,0" VerticalAlignment="Top" Width="213" Height="34" SelectionChanged="uxPublishCb_SelectionChanged" Grid.ColumnSpan="2"/>
-            <Button Visibility="Visible"  x:Name="uxRefreshBtn" Content="Refresh" HorizontalAlignment="Left" Margin="192,266,0,0" VerticalAlignment="Top" Width="53" Height="34" Click="uxRefreshBtn_Click" Grid.Column="1"/>
-            <Button Visibility="Visible"  x:Name="uxPublishBtn" Content="Publish" HorizontalAlignment="Left" Margin="258,266,0,0" VerticalAlignment="Top" Width="53" Height="34" Click="uxPublishBtn_Click" Grid.Column="1"/>
+            <Label Visibility="Visible"   Content="Upload Firmware:" HorizontalAlignment="Left" Height="27" Margin="69,243,0,0" VerticalAlignment="Top" Width="113"/>
+            <TextBox Visibility="Visible" x:Name="uxUploadFileTb" Text="" HorizontalAlignment="Left" Height="27" Margin="182,244,0,0" VerticalAlignment="Top" Width="210" RenderTransformOrigin="3.714,1" Grid.ColumnSpan="2"/>
+            <Button Visibility="Visible"  x:Name="uxFileSubmitBtn" Content="..." HorizontalAlignment="Left" Margin="187.333,241,0,0" VerticalAlignment="Top" Width="46" Height="29" Click="uxFileSubmitBtn_Click" Grid.Column="1"/>
+            <Button Visibility="Visible"  x:Name="uxUploadBtn" Content="Upload" HorizontalAlignment="Left" Margin="259.333,238,0,0" VerticalAlignment="Top" Width="52" Height="34" Click="uxUploadBtn_Click" Grid.Column="1"/>
+            <Label Visibility="Visible"   Content="Publish Version:" HorizontalAlignment="Left" Height="27" Margin="69,292,0,0" VerticalAlignment="Top" Width="113"/>
+            <ComboBox Visibility="Visible"  x:Name="uxPublishCb" HorizontalAlignment="Left" Margin="179,292,0,0" VerticalAlignment="Top" Width="213" Height="34" SelectionChanged="uxPublishCb_SelectionChanged" Grid.ColumnSpan="2"/>
+            <Button Visibility="Visible"  x:Name="uxRefreshBtn" Content="Refresh" HorizontalAlignment="Left" Margin="192.333,292,0,0" VerticalAlignment="Top" Width="53" Height="34" Click="uxRefreshBtn_Click" Grid.Column="1"/>
+            <Button Visibility="Visible"  x:Name="uxPublishBtn" Content="Publish" HorizontalAlignment="Left" Margin="258.333,292,0,0" VerticalAlignment="Top" Width="53" Height="34" Click="uxPublishBtn_Click" Grid.Column="1"/>
             <Label Visibility="Visible"  Content="ReservationId:" HorizontalAlignment="Left" Height="27" Margin="262,23,0,0" VerticalAlignment="Top" Width="100" Grid.Column="1"/>
             <TextBox Visibility="Visible"  x:Name="uxReservationTb" Text="0" HorizontalAlignment="Left" Height="27" Margin="367,23,0,0" VerticalAlignment="Top" Width="44" RenderTransformOrigin="3.714,1" Grid.Column="1"/>
-            <Button  Visibility="Visible" x:Name="uxClearPublishBtn" Content="Clear Publish" HorizontalAlignment="Left" Margin="325,266,0,0" VerticalAlignment="Top" Width="86" Height="34" Click="uxClearPublishBtn_Click" Grid.Column="1"/>
-            <Button Visibility="Visible"  x:Name="uxFTPUploadBtn" Content="Upload(FTP)" HorizontalAlignment="Left" Margin="325,212,0,0" VerticalAlignment="Top" Width="86" Height="34" Click="uxFTPUploadBtn_Click" RenderTransformOrigin="2.058,0.529" Grid.Column="1"/>
+            <Button  Visibility="Visible" x:Name="uxClearPublishBtn" Content="Clear Publish" HorizontalAlignment="Left" Margin="325.333,292,0,0" VerticalAlignment="Top" Width="86" Height="34" Click="uxClearPublishBtn_Click" Grid.Column="1"/>
+            <Button Visibility="Visible"  x:Name="uxFTPUploadBtn" Content="Upload(FTP)" HorizontalAlignment="Left" Margin="325.333,238,0,0" VerticalAlignment="Top" Width="86" Height="34" Click="uxFTPUploadBtn_Click" RenderTransformOrigin="2.058,0.529" Grid.Column="1"/>
 
             <Label Content=" Expiry Time:" HorizontalAlignment="Left" Height="27" Margin="237,119,0,0" VerticalAlignment="Top" Width="80" Grid.Column="1"/>
 
             <TextBox x:Name="uxExpiryTimeTb"  Margin="325,117,10,283" Text="2020/02/06 12:00" Grid.Column="1"></TextBox>
             <Label Content="LocalListSize:" HorizontalAlignment="Left" Height="27" Margin="294,74,0,0" VerticalAlignment="Top" Width="87" Grid.Column="1"/>
             <TextBox x:Name="uxLocalListSizeTb" Text="0" HorizontalAlignment="Left" Height="27" Margin="381,74,0,0" VerticalAlignment="Top" Width="44" RenderTransformOrigin="3.714,1" Grid.Column="1"/>
-            <CheckBox x:Name="uxDestroyCb" Content="破壞模式" HorizontalAlignment="Left" Height="27" Margin="325,165,0,0" VerticalAlignment="Top" Width="100" Grid.Column="1" FontSize="18" Foreground="#FFF11010" Checked="uxDestroyCb_Checked" Unchecked="uxDestroyCb_Unchecked"/>
+            <CheckBox x:Name="uxDestroyCb" Content="破壞模式" HorizontalAlignment="Left" Height="27" Margin="325.333,191,0,0" VerticalAlignment="Top" Width="100" Grid.Column="1" FontSize="18" Foreground="#FFF11010" Checked="uxDestroyCb_Checked" Unchecked="uxDestroyCb_Unchecked"/>
+            <Label Content="WrongActionName:" HorizontalAlignment="Left" Height="27" Margin="71,151,0,0" VerticalAlignment="Top" Width="126"/>
+            <TextBox x:Name="uxWrongActionNameTb" Text="WrongAction" HorizontalAlignment="Left" Height="27" Margin="196,157,0,0" VerticalAlignment="Top" Width="138" RenderTransformOrigin="3.714,1" Grid.ColumnSpan="2"/>
         </Grid>
     </Viewbox>
 </Window>

+ 50 - 0
TestTool.RemoteTriggerAPP/MainWindow.xaml.cs

@@ -74,6 +74,7 @@ namespace TestTool.RemoteTriggerAPP
                     var uuid = Guid.NewGuid().ToString();
                     WritetoDB(uuid, null, actualAction, GetDestroyVersionData(actualAction));
                     uxMsgTb.Text = string.Format("Send Actions: {0} UUID:{1}", actualAction, uuid);
+
                 }
                 catch (Exception ex)
                 {
@@ -85,6 +86,7 @@ namespace TestTool.RemoteTriggerAPP
             {
                 switch (action)
                 {
+                   
                     #region Core Profile
                     case "ChangeAvailability_Inoperative":
                         {
@@ -402,6 +404,54 @@ namespace TestTool.RemoteTriggerAPP
             }
         }
 
+        private void SetWrongAction()
+        {
+            bool isError = false;
+            DateTime expiryTime = DateTime.Now;
+            try
+            {
+                try
+                {
+                    expiryTime = Convert.ToDateTime(uxExpiryTimeTb.Text);
+                    //if (expiryTime < DateTime.Now.AddSeconds(60))
+                    //{
+                    //    isError = true;
+                    //    uxMsgTb.Text = string.Format("ExpiryTime is too close or too early to the current time (60 seconds).");
+                    //}
+
+                }
+                catch (Exception ex)
+                {
+                    if (ex is FormatException)
+                    {
+                        isError = true;
+                        uxMsgTb.Text = string.Format("ExpiryTime's Format is wrong Example:{0}", DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
+                    }
+                }
+                if (!isError)
+                {
+                    var uuid = Guid.NewGuid().ToString();
+                    var request = new ReserveNowRequest()
+                    {
+                        connectorId = Convert.ToInt32(uxConnectorIdTb.Text),
+                        expiryDate = expiryTime.ToUniversalTime(),
+                        idTag = uxIdTagTb.Text,
+                        parentIdTag = "PTAG",
+                        reservationId = Convert.ToInt32(expiryTime.ToUniversalTime().ToString("yyMMddHHmm")),
+
+                    };
+
+                    WritetoDB(uuid, request);
+                    uxMsgTb.Text = string.Format("UUID:{0}", uuid);
+                }
+
+            }
+            catch (Exception ex)
+            {
+                MessageBox.Show(ex.ToString());
+            }
+        }
+
         private void ReserveNow()
         {
             bool isError = false;