Эх сурвалжийг харах

2020-09-29 / ct_chen

Actions:
1. Webservice add function "get button status"

Files:
1. EVSE/Modularization/WebService.c
   EVSE/rootfs/var/www/get_button_action.php
ct_chen 4 жил өмнө
parent
commit
2c91c62ebd

+ 37 - 1
EVSE/Modularization/WebService.c

@@ -49,6 +49,7 @@ struct CHAdeMOData			*ShmCHAdeMOData;
 struct GBTData				*ShmGBTData;
 struct CcsData				*ShmCcsData;
 struct PsuData 				*ShmPsuData;
+struct PrimaryMcuData		*ShmPrimaryMcuData;
 
 void trim(char *s);
 int mystrcmp(char *p1, char *p2);
@@ -263,6 +264,21 @@ int InitShareMemory() {
 	} else {
 	}
 
+	//creat ShmPrimaryMcuData
+	if ((MeterSMId = shmget(ShmPrimaryMcuKey, sizeof(struct PrimaryMcuData),
+			0777)) < 0) {
+	#ifdef SystemLogMessage
+		DEBUG_ERROR("shmget ShmPrimaryMcuData NG\n");
+	#endif
+		result = FAIL;
+	} else if ((ShmPrimaryMcuData = shmat(MeterSMId, NULL, 0)) == (void *) -1) {
+	#ifdef SystemLogMessage
+		DEBUG_ERROR("shmat ShmPrimaryMcuData NG\n");
+	#endif
+		result = FAIL;
+	} else {
+	}
+
 	return result;
 }
 
@@ -952,6 +968,26 @@ int main(int argc, char *argv[]) {
 				system(cmd);
 			}
 		}
+		if (strcmp(argv[1], "button") == 0) {
+			unsigned char			Button1;
+			unsigned char			Button2;
+			unsigned char			EmergencyButton;
+			Button1=ShmPrimaryMcuData->InputDet.bits.Button1;
+			Button2=ShmPrimaryMcuData->InputDet.bits.Button2;
+			EmergencyButton=ShmPrimaryMcuData->InputDet.bits.EmergencyButton;
+			struct json_object *jobj;
+			struct json_object *sButton1;
+			struct json_object *sButton2;
+			struct json_object *sEmergencyButton;
+			sButton1 = json_object_new_int(Button1);
+			sButton2 = json_object_new_int(Button2);
+			sEmergencyButton = json_object_new_int(EmergencyButton);
+			jobj=json_object_new_object();
+			json_object_object_add(jobj,"Button1",sButton1);
+			json_object_object_add(jobj,"Button2",sButton2);
+			json_object_object_add(jobj,"EmergencyButton",sEmergencyButton);
+			printf("%s\n", json_object_to_json_string(jobj));
+		}
 
 		if (strcmp(argv[1], "restart") == 0) {
 			system("exec /usr/bin/run_evse_restart.sh");
@@ -979,8 +1015,8 @@ int main(int argc, char *argv[]) {
 		json_object_object_add(jobj,"Result",Result);
 		json_object_object_add(jobj,"Message",Message);
 		printf("%s\n", json_object_to_json_string(jobj));
-
 	}
+
 	//web page query all
 	if ((argc == 2) & (strcmp(argv[1], "query") == 0)) {
 		char *IsAcDc[2];

+ 39 - 0
EVSE/rootfs/var/www/get_button_action.php

@@ -0,0 +1,39 @@
+<?php
+	// 設置資料類型 json,編碼格式 utf-8
+	header('Content-Type: application/json; charset=UTF-8');
+	
+	// 判斷如果是 GET 請求,則進行搜尋;如果是 POST 請求,則進行新建
+	// $_SERVER['REQUEST_METHOD'] 返回訪問頁面使用的請求方法
+	if ($_SERVER['REQUEST_METHOD'] == "GET") {
+		create();
+	} else if ($_SERVER['REQUEST_METHOD'] == "POST") {
+		create();
+	}
+
+	// 新建員工
+	function create() {
+		chdir("/root");
+		exec("'./WebService' 'button'",$output,$return_var);
+		if(count($output)==0){
+//			echo '<script>alert("Something went wrong on machine");</script>';
+			echo "Something went wrong on machine";
+			exit;
+		}
+		if(trim($output[0])=="InitShareMemory Error"){
+//			echo '<script>alert("InitShareMemory Error");</script>';
+			echo "InitShareMemory Error";
+			exit;
+		}
+		$obj[1] = trim($output[0]);
+		$obj[2] = trim($output[1]);
+		$obj[3] = trim($output[2]);
+		$obj[4] = trim($output[3]);
+		$obj10 = json_decode(trim($output[0]));
+		$obj20 = json_decode(trim($output[1]));
+		$obj30 = json_decode(trim($output[2]));
+		$obj40 = json_decode(trim($output[3]));
+		$arr=array($obj10,$obj20,$obj30,$obj40);
+		$obj[0]=json_encode($arr);
+		echo $obj[$_REQUEST['opt']];
+	}
+?>