1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458 |
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using UnityEngine.UI;
- using XCharts.Runtime;
- using TMPro;
- using System;
- using UnityEngine.Networking;
- using System.Data;
- using UnityEngine.SceneManagement;
- using System.Net.Sockets;
- using System.Security.Cryptography.X509Certificates;
- using uPLibrary.Networking.M2Mqtt;
- using uPLibrary.Networking.M2Mqtt.Exceptions;
- using uPLibrary.Networking.M2Mqtt.Messages;
- using SimpleJSON;
- using static UnityEngine.CullingGroup;
- using System.Text;
- using System.IO;
- using UnityEngine.Rendering;
-
- public class Main : MonoBehaviour
- {
- private readonly string 安卓版本號 = "1.0.6", IOS版本號 = "1.5";
- public CanvasScaler canvasScaler;
- public BarChart chart;
- public BarChart chart2;
- public TMP_FontAsset myFont;
- public Sprite UIsprite;public Sprite sprite_check;
- AudioSource alarm_sound;
- [SerializeField] TMP_InputField 驗證碼_tb;
- [SerializeField] TextMeshProUGUI 電表編號_tb,平均電壓_tb,平均電流_tb,累計用電量_tb,副電表編號_tb,副平均電壓_tb,副平均電流_tb,副累計用電量_tb,主跑馬燈_tb,副跑馬燈_tb,
- 消防異常page_lb,消防跑馬燈_tb,設備編號_tb,設備位置_tb,設備樓層_tb,設備用途_tb,設備區塊_tb,試算_平均電壓_tb,試算_平均電流_tb,試算_平均功率_tb,試算_總消耗功率_tb,試算_總消耗能量_tb,
- 試算_電費試算_tb,試算_計算規則_tb,區間總和_tb,電費總和_tb,詳細平均電壓_tb,詳細平均電流_tb,詳細電流A相_tb,詳細電流B相_tb,詳細電流C相_tb,詳細電流不平衡A相_tb,詳細電流不平衡B相_tb,
- 詳細電流不平衡C相_tb,詳細電壓AB相_tb,詳細電壓BC相_tb,詳細電壓CA相_tb,詳細電壓不平衡AB相_tb,詳細電壓不平衡BC相_tb,詳細電壓不平衡CA相_tb,詳細平均有效功率_tb,詳細平均無效功率_tb,
- 詳細平均視在功率_tb,提供的有效電能_tb,接收的有效電能_tb,提供加接收的有效電能_tb,提供減接收的有效電能_tb,提供的無效電能_tb,接收的無效電能_tb,提供加接收的無效電能_tb,提供減接收的無效電能_tb,
- 提供的視在電能_tb,接收的視在電能_tb,提供加接收的視在電能_tb,提供減接收的視在電能_tb,V2_lb,V3_lb,I2_lb,I3_lb,副V2_lb,副V3_lb,副I2_lb,副I3_lb,詳V2_lb,詳V3_lb,詳I2_lb,詳I3_lb,詳P2_lb,
- 詳P3_lb,詳Q2_lb,詳Q3_lb,詳S2_lb,詳S3_lb,彈跳文字_tb,讀取_tb,排碳係數_lb,排碳最新係數_lb,排碳使用度數_lb,排碳量_lb;
- [SerializeField] GameObject 電能監控系統_pl,電能背景_ex,主跑馬燈_pl,主電力警報音效_bt,副電力警報音效_bt,副跑馬燈_pl,簡易電表_pl,小電表_pl,驗證碼_pl,彈跳_pl,
- 右側按鈕_pl,電費試算表_pl,試算_電表名稱_cb,試算_幣別_tb,試算_幣別_cb,電能報表_pl,開始時間_cb,結束時間_cb,電表編號_cb,詳細電表_pl,讀取_pl,超級_pl,前往商店_pl;
- [SerializeField] TMP_Dropdown 試算_開始年_cb,試算_結束年_cb,試算_開始月_cb,試算_結束月_cb,試算_開始日_cb,試算_結束日_cb,區間_開始_年_cb,區間_開始_月_cb,區間_開始_日_cb,
- 電費_開始_年_cb,電費_開始_月_cb,電費_開始_日_cb,電費_開始_小時_cb,電費_結束_年_cb,電費_結束_月_cb,電費_結束_日_cb,電費_結束_小時_cb,排碳_年_cb,排碳_月_cb,排碳_日_cb,客戶名稱_cb;
- [SerializeField] Slider 詳V1,詳V2,詳V3,詳I1,詳I2,詳I3;
-
- [SerializeField] private List<Sprite> 控件圖片 = new List<Sprite>();
-
- [SerializeField] private List<Sprite> W = new List<Sprite>();[SerializeField] private List<Image> 安全運行天數_img = new List<Image>();
- public Transform 小電表清單_tp;public GameObject 小電表清單_rpf;public GameObject 小電表清單_ct;
- public Transform 簡易電表清單_tp;public GameObject 簡易電表清單_rpf;public GameObject 簡易電表清單_ct;
- public LineChart 電費_chart,年用電_chart;
- public BarChart 電壓_barchart,電流_barchart,功率_barchart,度數_chart;
- public Transform 電費清單_tp;public GameObject 電費清單_rpf;public GameObject 電費清單_ct;public GameObject 電費清單_lpf;
- public Transform 年用電清單_tp;public GameObject 年用電清單_rpf;public GameObject 年用電清單_ct;public GameObject 年用電清單_lpf;
- public Transform 度數清單_tp;public GameObject 度數清單_rpf;public GameObject 度數清單_ct;public GameObject 度數清單_lpf;
- //public AdMobManager adMobManager;
- private float timer=0;
- private bool 載入完畢=false,已開啟=false;
- public float maxButtonPressInterval = 3f;
- public int requiredButtonPressCount = 2;
- private string loadingText = "";
- private int dotCount = 0;
-
- protected MqttClient client;
- private readonly string endpoint = "a3kltpd88hr7qj-ats.iot.ap-southeast-2.amazonaws.com"; // 你的端點
- private readonly int port = 8883;
- private string caCertPath;
- private string clientCertPath;
- private string certificatesPath;
- private string IDname;
- private string pfx;
- private string ca;
-
- void Awake(){
-
- Global.Zoneoffset = TimeZone.CurrentTimeZone.GetUtcOffset(DateTime.Now).Hours-7;
- alarm_sound = GetComponent<AudioSource>();
- Global.年=DateTime.Now.Year.ToString();
- Global.上次功率因素數值=0;Global.上次副功率因素數值=0;
- 讀取_pl.SetActive(true);StartCoroutine(AnimateText());
- }
- void Start(){
- Screen.autorotateToPortrait = false;
- Screen.orientation = ScreenOrientation.LandscapeLeft;
- float screenWidth = Screen.width;
- float screenHeight = Screen.height;
- float rate = screenWidth/screenHeight;
- if (canvasScaler == null){
- canvasScaler = GetComponent<CanvasScaler>();
- }
- if (rate>(1900f/900f)){
- canvasScaler.matchWidthOrHeight = 1f;
- }
- else{
- canvasScaler.matchWidthOrHeight = 0f;
- }
- if(Global.初次載入主畫面){
- //adMobManager.RequestBanner();
- Global.Wnum = new Sprite[] {W[0],W[1],W[2],W[3],W[4],W[5],W[6],W[7],W[8],W[9]};
- Global.sprite_check=sprite_check;
- Global.sprite_box=UIsprite;
- Global.初次載入主畫面=false;
- SQL_CommString.SQL_連線字串_外();
- SQL_Module.TestSQL(SQL_Module.ConString4);
- if(!SQL_Module.T_SQL){
- 彈跳_pl.SetActive(true);
- 讀取_pl.SetActive(false);
- 彈跳文字_tb.text="伺服器維護中,請稍後再重新登入";
- Global.彈跳狀態="伺服器維護";
- }
- SQL_CommString.SQL_連線字串_外2();
- SQL_ele_sys.SQL_取得版本號();
- if(SQL_Module.dr.Read()){
- Global.AWS憑證路徑 = SQL_Module.dr[4].ToString();
- pfx = SQL_Module.dr[6].ToString();
- ca = SQL_Module.dr[5].ToString();
- string 系統版本號1="",系統版本號2="";
- #if UNITY_ANDROID
- 系統版本號1=SQL_Module.dr[0].ToString();
- 系統版本號2=SQL_Module.dr[1].ToString();
- if(安卓版本號 != 系統版本號1 && 安卓版本號 != 系統版本號2){
- 讀取_pl.SetActive(false);
- 前往商店_pl.SetActive(true);
- //adMobManager.HideBanner();
- }
- #elif UNITY_IPHONE
- 系統版本號1=SQL_Module.dr[2].ToString();
- 系統版本號2=SQL_Module.dr[3].ToString();
- if(IOS版本號 != 系統版本號1 && IOS版本號 != 系統版本號2){
- 讀取_pl.SetActive(false);
- 前往商店_pl.SetActive(true);
- //adMobManager.HideBanner();
- }
- #else
- 系統版本號1=SQL_Module.dr[0].ToString();
- 系統版本號2=SQL_Module.dr[1].ToString();
- if(安卓版本號 != 系統版本號1 && 安卓版本號 != 系統版本號2){
- 讀取_pl.SetActive(false);
- 前往商店_pl.SetActive(true);
- //adMobManager.HideBanner();
- }
- #endif
- }
- certificatesPath = Application.persistentDataPath;
- clientCertPath = Path.Combine(certificatesPath, pfx);
- caCertPath = Path.Combine(certificatesPath, ca);
- Debug.Log(Global.AWS憑證路徑);
- SQL_ele_sys.SQL_取得PHP();
- if(SQL_Module.dr.Read()){
- Global.PHP路徑=SQL_Module.dr[0].ToString();
- }
- if(PlayerPrefs.HasKey("客戶代號")){
- Global.客戶代號 = PlayerPrefs.GetString("客戶代號");
- }else{
- Global.客戶代號 = "GCM";
- }
- Debug.Log(Global.客戶代號);
- if (PlayerPrefs.HasKey("訂閱主題"))
- {
- Global.AWS訂閱主題 = PlayerPrefs.GetString("訂閱主題");
- }
- else
- {
- Global.AWS訂閱主題 = "gcmserver";
- }
- Debug.Log(Global.AWS訂閱主題);
- if (Global.PHP路徑==""){
- 彈跳_pl.SetActive(true);
- 彈跳文字_tb.text="與伺服器連線異常,請稍後再重新登入";
- Global.彈跳狀態="PHP路徑取得異常";
- }else{
- Debug.Log(Global.PHP路徑);
- StartCoroutine(PostRequest(10,"取得資料庫_"+ Global.客戶代號,""));
- StartCoroutine(PostRequest(11,"取得電表_" + Global.客戶代號,""));
- StartCoroutine(PostRequest(12,"是否為PLC_" + Global.客戶代號,""));
- }
- SQL_ele_sys.SQL_取得排碳係數();
- DataSet ds1 = new();
- SQL_Module.da.Fill(ds1);
- Global.排碳係數表 = ds1.Tables[0];
-
- if(PlayerPrefs.HasKey("副電表編號")){
- //PlayerPrefs.DeleteKey ("副電表編號");
- 副電表編號_tb.text=PlayerPrefs.GetString("副電表編號");
- //副電表編號_tb.text="PANEL EMVCB#1";
- }
- 排碳_年_cb.ClearOptions();
- 排碳_年_cb.AddOptions(Global.年度Options);
- 排碳_年_cb.value=Global.年度Options.IndexOf(DateTime.Today.Year.ToString());
- 刷新排碳係數();
- 排碳_月_cb.ClearOptions();
- List<string> 月份 = new() { "","一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月" };
- 排碳_月_cb.AddOptions(月份);
- 排碳_月_cb.value= 0;
- 排碳_日_cb.ClearOptions();
- StartCoroutine(CheckAndDownloadCertificates());
- 已開啟 =true;
- }
- }
- void OnDestroy() {
- CleanupMqttClient();
- }
-
- void OnApplicationQuit(){
- CleanupMqttClient();
- }
-
- private void CleanupMqttClient(){
- if (client != null) {
- client.MqttMsgPublishReceived -= Client_MqttMsgPublishReceived;
- client.ConnectionClosed -= OnConnectionClosed;
- if (client.IsConnected){
- client.Disconnect();
- }
- client = null; // 確保不會再引用失效的 `client`
- }
- }
- private IEnumerator CheckAndDownloadCertificates(){
- if (!File.Exists(clientCertPath)){
- Debug.Log("certificate.pfx 不存在,開始下載...");
- yield return StartCoroutine(DownloadCertificate(Global.AWS憑證路徑 + pfx, clientCertPath));
- }else{
- Debug.Log("certificate.pfx 已經存在");
- }
-
- if (!File.Exists(caCertPath)){
- Debug.Log("AmazonRootCA1.pem 不存在,開始下載...");
- yield return StartCoroutine(DownloadCertificate(Global.AWS憑證路徑 + ca, caCertPath));
- }else{
- Debug.Log("AmazonRootCA1.pem 已經存在");
- }
-
- Debug.Log("所有證書已經就緒,開始後續操作...");
- yield return StartCoroutine(DoConnect());
- }
- private IEnumerator DownloadCertificate(string url, string filePath){
- UnityWebRequest www = UnityWebRequest.Get(url);
- yield return www.SendWebRequest();
-
- if (www.result == UnityWebRequest.Result.ConnectionError || www.result == UnityWebRequest.Result.ProtocolError){
- Debug.LogError("下載證書失敗:" + www.error);
- }else{
- // 將下載的文件保存到指定路徑
- File.WriteAllBytes(filePath, www.downloadHandler.data);
- Debug.Log("證書下載完成並保存到:" + filePath);
- }
- }
-
- private IEnumerator DoConnect(){
- // wait for the given delay
- yield return new WaitForSecondsRealtime(1);
- // leave some time to Unity to refresh the UI
- yield return new WaitForEndOfFrame();
- // create client instance
- if (client == null){
- try{
- X509Certificate caCert = new X509Certificate2(caCertPath);
- X509Certificate clientCert = new X509Certificate2(clientCertPath, "1234");
- client = new MqttClient(endpoint, port, true, caCert, clientCert, MqttSslProtocols.TLSv1_2);
- client.ConnectionClosed += OnConnectionClosed;
-
- }catch (Exception e){
- client = null;
- 彈跳_pl.SetActive(true);
- 彈跳文字_tb.text = "AWS憑證異常,請聯繫系統管理員";
- Debug.LogErrorFormat("CONNECTION FAILED! {0}", e.ToString());
- yield break;
- }
- }
-
- OnConnecting();
-
- // leave some time to Unity to refresh the UI
- yield return new WaitForEndOfFrame();
- yield return new WaitForEndOfFrame();
-
- IDname = Guid.NewGuid().ToString();
-
- string clientId = "tracking-unity-" + IDname; // To have a unique client ID based on device GUID
- try{
- client.Connect(clientId);
- //isConnected = true;
- }catch (Exception e){
- client = null;
- Debug.LogErrorFormat("Failed to connect to {0}:{1}:\n{2}", endpoint, port, e.ToString());
- yield break;
- }
-
- if (client.IsConnected){
- Debug.Log("Client connected.");
- client.MqttMsgPublishReceived += Client_MqttMsgPublishReceived;
- client.Subscribe(new string[] { Global.AWS訂閱主題+"_r" }, new byte[] { MqttMsgBase.QOS_LEVEL_AT_LEAST_ONCE });
- }
- }
-
-
- private void Client_MqttMsgPublishReceived(object sender, MqttMsgPublishEventArgs e)
- {
- string message = Encoding.UTF8.GetString(e.Message);
- // 使用 SimpleJSON 解析訊息
- var jsonMessage = JSON.Parse(message);
- Debug.Log(jsonMessage);
- if (jsonMessage != null && jsonMessage["id"] != null && jsonMessage["data"] != null && jsonMessage["number"] != null)
- {
- if (IDname == jsonMessage["id"] && jsonMessage["message"] == "return") {
- string[] dataStringArray = jsonMessage["data"].ToString().Split(',');
- int count = jsonMessage["number"].Count;
- for(int i=0;i < count;i++){
- string 電表流水號 =jsonMessage["number"][i];
- if (Global.電表即時資料字典.ContainsKey(電表流水號)) {
- Global.電表即時資料字典.Remove(電表流水號);
- }
- Global.電表即時資料字典.Add(電表流水號, dataStringArray[(0+47*i) ..(46+47*i)]);
- }
- }
- }
- }
- protected void OnConnecting()
- {
- Debug.LogFormat("Connecting to broker on {0}:{1}...\n", endpoint, port.ToString());
- }
-
- private void OnConnectionClosed(object sender, EventArgs e)
- {
- Debug.Log("Connection closed");
- }
- private void 電表即時()
- {
- if (client != null && client.IsConnected)
- {
- var jsonMessage = new JSONObject();
- jsonMessage["message"] = "send";
- jsonMessage["number"] = "";
- jsonMessage["id"] = IDname;
-
- // 將 JSON 轉換為字串並轉換為位元組
- string messageString = jsonMessage.ToString();
- byte[] messageBytes = Encoding.UTF8.GetBytes(messageString);
-
- // 發送訊息
- client.Publish(Global.AWS訂閱主題+"_s", messageBytes, MqttMsgBase.QOS_LEVEL_AT_LEAST_ONCE, false);
- }
- }
- void Update()
- {
- timer += Time.deltaTime;
- Global.deleytime += Time.deltaTime;
- if (!Global.載入電表名稱Option)
- {
- Global.電表名稱Option.Clear();
- for (int i = 0; i <= Global.電表數量 - 1; i++)
- {
- Global.電表名稱Option.Add(Global.電表名稱[i]);
- }
- Global.載入電表名稱Option = true;
- }
- if (Global.資料來源 == "pi" && timer >= 5f && Global.系統選擇 == "電能監控系統" && !電能報表_pl.activeInHierarchy && Global.PHP_Load_End_電表即時路徑){
- timer = 0f;
-
- 電表即時();
-
- if (Global.電表即時資料字典.Count > 0) {
- // 開始載入簡易電表資料
- 載入主電表資料();
- 載入副電表資料();
- 載入簡易電表資料();
- }
-
- }else if(Global.資料來源 == "PLC" && timer >= 3f && Global.系統選擇 == "電能監控系統" && !電能報表_pl.activeInHierarchy) {
- timer = 0f;
- if (Global.客戶代號 == "GCM"){
- StartCoroutine(PostRequest_電表資料PLC(0, "RDS D6.U 146\r"));
- //StartCoroutine(PostRequest_電表資料PLC(1,"RDS M970 " + Global.電表數量.ToString() + "\r"));
- StartCoroutine(PostRequest_電表資料PLC(2, "RDS D1006.U 146\r"));
- StartCoroutine(PostRequest_電表資料PLC(3, "RDS D2006.U 146\r"));
- StartCoroutine(PostRequest_電表資料PLC(4, "RDS D3006.U 146\r"));
- StartCoroutine(PostRequest_電表資料PLC(5, "RDS D4006.U 146\r"));
- StartCoroutine(PostRequest_電表資料PLC(6, "RDS D5006.U 146\r"));
- StartCoroutine(PostRequest_電表資料PLC(7, "RDS D6006.U 146\r"));
- }else{
- StartCoroutine(PostRequest_電表資料PLC(0, "RDS D6.U 146\r"));
- //StartCoroutine(PostRequest_電表資料PLC(1,"RDS M970 " + Global.電表數量.ToString() + "\r"));
- StartCoroutine(PostRequest_電表資料PLC(2, "RDS D206.U 146\r"));
- StartCoroutine(PostRequest_電表資料PLC(3, "RDS D406.U 146\r"));
- StartCoroutine(PostRequest_電表資料PLC(4, "RDS D606.U 146\r"));
- StartCoroutine(PostRequest_電表資料PLC(5, "RDS D806.U 146\r"));
- StartCoroutine(PostRequest_電表資料PLC(6, "RDS D1006.U 146\r"));
- StartCoroutine(PostRequest_電表資料PLC(7, "RDS D1206.U 146\r"));
- }
-
-
- if (詳細電表_pl.activeInHierarchy){
- 載入詳細電表資料();
- }else{
- 載入主電表資料();
- 載入副電表資料();
- 載入簡易電表資料();
- }
- //載入電表異常();
- }
-
- if (電能報表_pl.activeInHierarchy || 詳細電表_pl.activeInHierarchy){
- if (Input.touchCount == 2 || Input.GetMouseButton(2) || Input.GetMouseButton(1)){
- 電能監控系統();
- Global.長案 = false;
- //adMobManager.RequestBanner();
- }
- }
-
- if (Global.PHP_Load_End_取得資料庫路徑 && Global.PHP_Load_End_電表資料來源){
- Global.PHP_Load_End_取得資料庫路徑 = false; Global.PHP_Load_End_電表資料來源 = false;
- 取得電表資料資料庫();
- 安全運行天數();
- 電能監控系統();
- 切換排碳時間();
- 讀取_pl.SetActive(false);
- }
- }
- public void 開啟驗證碼(){
- 驗證碼_pl.SetActive(true);
- if(PlayerPrefs.HasKey("驗證碼")){
- 驗證碼_tb.text = PlayerPrefs.GetString("驗證碼");
- if(驗證碼_tb.text=="0003065795" || 驗證碼_tb.text=="wswtony1234"){
- SQL_ele_sys.SQL_電表客戶名稱();
- DataSet ds1 = new();
- SQL_Module.da.Fill(ds1);
- Global.客戶名稱表 = ds1.Tables[0];
- List<string> 客戶名稱Options = new();
- for(int i=0;i<=Global.客戶名稱表.Rows.Count-1;i++){
- 客戶名稱Options.Add(Global.客戶名稱表.Rows[i][0].ToString());
- }
- 客戶名稱_cb.ClearOptions();
- 客戶名稱_cb.AddOptions(客戶名稱Options);
- 超級_pl.SetActive(true);
- }
- }else{
- 驗證碼_tb.text = "";
- }
- }
- public void 輸入驗證碼(){
- if(驗證碼_tb.text=="0003065795" || 驗證碼_tb.text=="wswtony1234"){
- if(!超級_pl.activeInHierarchy){
- SQL_ele_sys.SQL_電表客戶名稱();
- DataSet ds1 = new();
- SQL_Module.da.Fill(ds1);
- Global.客戶名稱表 = ds1.Tables[0];
- List<string> 客戶名稱Options = new();
- for(int i=0;i<=Global.客戶名稱表.Rows.Count-1;i++){
- 客戶名稱Options.Add(Global.客戶名稱表.Rows[i][0].ToString());
- }
- 客戶名稱_cb.ClearOptions();
- 客戶名稱_cb.AddOptions(客戶名稱Options);
- 超級_pl.SetActive(true);
- }
- }else{
- string 舊驗證碼 = "";
- if(PlayerPrefs.HasKey("驗證碼")){
- 舊驗證碼 = PlayerPrefs.GetString("驗證碼");
- }
- if(驗證碼_tb.text != "" && 驗證碼_tb.text != 舊驗證碼){
- SQL_ele_sys.SQL_驗證碼判斷(驗證碼_tb.text);
- if(SQL_Module.dr.Read()){
- Global.客戶代號 = SQL_Module.dr[2].ToString();
- Global.AWS訂閱主題 = SQL_Module.dr[3].ToString();
- if (PlayerPrefs.HasKey("客戶代號")){PlayerPrefs.DeleteKey("客戶代號");}
- PlayerPrefs.SetString("客戶代號",Global.客戶代號);
- if (PlayerPrefs.HasKey("訂閱主題")) { PlayerPrefs.DeleteKey("訂閱主題"); }
- PlayerPrefs.SetString("訂閱主題", Global.AWS訂閱主題);
- if (PlayerPrefs.HasKey("驗證碼")){PlayerPrefs.DeleteKey("驗證碼");}
- PlayerPrefs.SetString("驗證碼",驗證碼_tb.text);
- 彈跳_pl.SetActive(true);
- //adMobManager.HideBanner();
- 彈跳文字_tb.text="驗證碼認證成功,請重新開啟APP";
- if(PlayerPrefs.HasKey("副電表編號")){PlayerPrefs.DeleteKey("副電表編號");}
- Global.彈跳狀態="驗證碼認證成功";
- }
- }else{
- 彈跳_pl.SetActive(true);
- 彈跳文字_tb.text="驗證碼有誤,請確認驗證碼是否正確!";
- Global.彈跳狀態="驗證碼認證失敗";
- }
- }
- }
- public void 切換驗證碼(){
- for(int i=0;i<=Global.客戶名稱表.Rows.Count-1;i++){
- if(客戶名稱_cb.options[客戶名稱_cb.value].text==Global.客戶名稱表.Rows[i][0].ToString()){
- string 新驗證碼 = Global.客戶名稱表.Rows[i][1].ToString();
- SQL_ele_sys.SQL_驗證碼判斷(新驗證碼);
- if(SQL_Module.dr.Read()){
- Global.客戶代號 = SQL_Module.dr[2].ToString();
- Global.AWS訂閱主題 = SQL_Module.dr[3].ToString();
- if (PlayerPrefs.HasKey("客戶代號")){PlayerPrefs.DeleteKey("客戶代號");}
- PlayerPrefs.SetString("客戶代號",Global.客戶代號);
- if (PlayerPrefs.HasKey("訂閱主題")) { PlayerPrefs.DeleteKey("訂閱主題"); }
- PlayerPrefs.SetString("訂閱主題", Global.AWS訂閱主題);
- if (PlayerPrefs.HasKey("驗證碼")){PlayerPrefs.DeleteKey("驗證碼");}
- PlayerPrefs.SetString("驗證碼",驗證碼_tb.text);
- if(PlayerPrefs.HasKey("副電表編號")){PlayerPrefs.DeleteKey("副電表編號");}
- 超級_pl.SetActive(false);電表編號_tb.text="PANEL EMVCB#1";副電表編號_tb.text="PANEL EMVCB#1";
- Global.初次載入主畫面=true;
- string sceneName = SceneManager.GetActiveScene().name;
- SceneManager.LoadScene(sceneName);
- }
- }
- }
-
- }
- public void 回原廠(){
- if(PlayerPrefs.HasKey("驗證碼")){PlayerPrefs.DeleteKey("驗證碼");}
- if(PlayerPrefs.HasKey("客戶代號")){PlayerPrefs.DeleteKey("客戶代號");}
- if(PlayerPrefs.HasKey("副電表編號")){PlayerPrefs.DeleteKey("副電表編號");}
- if (PlayerPrefs.HasKey("訂閱主題")) { PlayerPrefs.DeleteKey("訂閱主題"); }
- 彈跳_pl.SetActive(true);
- 彈跳文字_tb.text="已回復原廠設定,請重新開啟APP";
- Global.彈跳狀態="回原廠成功";
- }
- private void 取得電表資料資料庫(){
- SQL_ele_sys.SQL_電表資料資料庫(Global.客戶代號);
- DataSet ds1 = new();
- SQL_Module.da.Fill(ds1);
- Global.電表資料資料庫清單=ds1.Tables[0];
- }
- private void 刷新排碳係數(){
- for(int i=0;i<=Global.排碳係數表.Rows.Count-1;i++){
- if(Global.排碳係數表.Rows[i][0].ToString()==排碳_年_cb.options[排碳_年_cb.value].text){
- 排碳係數_lb.text=Global.排碳係數表.Rows[i][1].ToString();
- }else{
- 排碳係數_lb.text=Global.排碳係數表.Rows[0][1].ToString();
- }
- }
- 排碳最新係數_lb.text = Global.排碳係數表.Rows[0][0].ToString();
- }
- public void 切換排碳時間(){
- if(已開啟){
- string 排碳時間選擇="月";
- if(排碳_月_cb.value==0 && 排碳_日_cb.value==0){
- 排碳時間選擇="月";
- }else if(排碳_月_cb.value !=0 && 排碳_日_cb.value==0){
- 排碳時間選擇="日";
- }else if(排碳_月_cb.value !=0 && 排碳_日_cb.value!=0){
- 排碳時間選擇="小時";
- }
- Moudle.載入日期(2,排碳_年_cb,排碳_月_cb,排碳_日_cb);
- 計算排碳(排碳時間選擇);
- }
- }
- private void 計算排碳(string 排碳時間選擇){
- //讀取_pl.SetActive(true);
- string 電表編號 = 副電表編號_tb.text;
- int 電表id=0;
- string 流水號=取得流水號(副電表編號_tb.text);string 電表編號改="";string 電表迴路="";string 功率單位="";
- if(流水號 != null){
- for(int i=0;i<=Global.電表資料清單.Rows.Count-1;i++){
- if(Global.電表資料清單.Rows[i][0].ToString().Contains(流水號)){
- 電表id=i;
- 電表編號改 = Global.電表資料清單.Rows[i][3].ToString();
- 電表迴路 = Global.電表資料清單.Rows[i][4].ToString();
- if(Global.資料來源=="PLC"){
- 功率單位 = Global.電表資料清單.Rows[i]["圖表顯示功率"].ToString();
- }else{
- 功率單位 = Global.電表資料清單.Rows[i][9].ToString();
- }
-
- }
- }
- }
- string p;if(電表迴路=="迴路1"){p="P1";}else{p="P2";}string 倍率;if(功率單位=="W"){倍率="1000";}else{倍率="1";}
- int N_year =int.Parse(排碳_年_cb.options[排碳_年_cb.value].text);
- int N_month = 排碳_月_cb.GetComponent<TMP_Dropdown>().value;
- int N_day = 排碳_日_cb.GetComponent<TMP_Dropdown>().value;
- List<string> TimeData = new(){"01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31"};
- DataTable ds3 = new();
- float 排碳度數總和 = 0;
- if(排碳時間選擇=="小時"){
- ds3.Columns.Add("小時",typeof(string));ds3.Columns.Add("度數",typeof(string));
- }else if(排碳時間選擇=="日"){
- ds3.Columns.Add("日期",typeof(string));ds3.Columns.Add("度數",typeof(string));
- }else{
- ds3.Columns.Add("月份",typeof(string));ds3.Columns.Add("度數",typeof(string));
- }
- bool 有無 = 資料庫判斷(N_year.ToString());
- if(有無 && 流水號!=null){
- List<string> 清單 = 資料庫明細(N_year.ToString());
- string SQL語法="";
- if(排碳時間選擇=="小時"){
- for(int j=0;j<=清單.Count-1;j++){
- if(j==0){
- SQL語法 += @"SELECT EP1_1, EP1_2
- FROM ["+清單[j]+"].dbo.電表資料表 AS 電表資料表_"+j.ToString().PadLeft(2,'0')+@"
- WHERE (電表編號 LIKE N'"+流水號+ "') AND (上傳時間 LIKE N'" + N_year.ToString().PadLeft(4,'0')+N_month.ToString().PadLeft(2,'0')+N_day.ToString().PadLeft(2,'0') + @"%')
- ORDER BY 上傳時間 DESC";
- }else{
- SQL語法 += "\n"+ @"SELECT EP1_1, EP1_2
- FROM ["+清單[j]+"].dbo.電表資料表 AS 電表資料表_"+j.ToString().PadLeft(2,'0')+@"
- WHERE (電表編號 LIKE N'"+流水號+ "') AND (上傳時間 LIKE N'" + N_year.ToString().PadLeft(4,'0')+N_month.ToString().PadLeft(2,'0')+N_day.ToString().PadLeft(2,'0') + @"%')
- ORDER BY 上傳時間 DESC";
- }
- if (j < 清單.Count - 1) {
- SQL語法 += "\nUNION ALL";
- }
- }
- }else if(排碳時間選擇=="日"){
- for(int j=0;j<=清單.Count-1;j++){
- if(j==0){
- SQL語法 += @"SELECT EP1_1, EP1_2
- FROM ["+清單[j]+"].dbo.電表資料表 AS 電表資料表_"+j.ToString().PadLeft(2,'0')+@"
- WHERE (電表編號 LIKE N'"+流水號+ "') AND (上傳時間 LIKE N'" + N_year.ToString().PadLeft(4,'0')+N_month.ToString().PadLeft(2,'0') + @"%')
- ORDER BY 上傳時間 DESC";
- }else{
- SQL語法 += "\n"+ @"SELECT EP1_1, EP1_2
- FROM ["+清單[j]+"].dbo.電表資料表 AS 電表資料表_"+j.ToString().PadLeft(2,'0')+@"
- WHERE (電表編號 LIKE N'"+流水號+ "') AND (上傳時間 LIKE N'" + N_year.ToString().PadLeft(4,'0')+N_month.ToString().PadLeft(2,'0') + @"%')
- ORDER BY 上傳時間 DESC";
- }
- if (j < 清單.Count - 1) {
- SQL語法 += "\nUNION ALL";
- }
- }
- }else{
- for(int j=0;j<=清單.Count-1;j++){
- if(j==0){
- SQL語法 += @"SELECT EP1_1, EP1_2
- FROM ["+清單[j]+"].dbo.電表資料表 AS 電表資料表_"+j.ToString().PadLeft(2,'0')+@"
- WHERE (電表編號 LIKE N'"+流水號+ "') AND (上傳時間 LIKE N'" + N_year.ToString().PadLeft(4,'0') + @"%')
- ORDER BY 上傳時間 DESC";
- }else{
- SQL語法 += "\n"+ @"SELECT EP1_1, EP1_2
- FROM ["+清單[j]+"].dbo.電表資料表 AS 電表資料表_"+j.ToString().PadLeft(2,'0')+@"
- WHERE (電表編號 LIKE N'"+流水號+ "') AND (上傳時間 LIKE N'" + N_year.ToString().PadLeft(4,'0') + @"%')
- ORDER BY 上傳時間 DESC";
- }
- if (j < 清單.Count - 1) {
- SQL語法 += "\nUNION ALL";
- }
- }
- }
- //Debug.Log(SQL語法);
- SQL_ele_sys.SQL_電力排碳試算(SQL語法);
- DataSet ds1 = new();
- SQL_Module.da.Fill(ds1);
- string EP1_1,EP2_1, EP1_末,EP2_末;
- if (ds1.Tables[0].Rows.Count > 0){
- EP1_1 = ds1.Tables[0].Rows[0][0].ToString();
- EP2_1 = ds1.Tables[0].Rows[0][1].ToString();
- EP1_末 = ds1.Tables[0].Rows[^1][0].ToString();
- EP2_末 = ds1.Tables[0].Rows[^1][1].ToString();
- }else{
- EP1_1 = "0";
- EP2_1 = "0";
- EP1_末 = "0";
- EP2_末 = "0";
- }
- float 電1 = float.Parse(EP1_1) * 10000 + float.Parse(EP2_1);
- float 電2 = float.Parse(EP1_末) * 10000 + float.Parse(EP2_末);
- 排碳度數總和 = 電1-電2;
- }
- 排碳使用度數_lb.text = string.Format("{0:###,##0.##}",排碳度數總和);
- float 排碳係數 = float.Parse(排碳係數_lb.text);
- float 排碳量 = 排碳係數 * 排碳度數總和 / 1000;
- 排碳量_lb.text = string.Format("{0:###,##0.###}",排碳量);
- }
- //============================
- public void 電能監控系統(){
- 電能報表_pl.SetActive(false);詳細電表_pl.SetActive(false);
- if(!電能監控系統_pl.activeInHierarchy){電能監控系統_pl.SetActive(true);}
- //Global.資料來源 = "PLC";
- Global.系統選擇 = "電能監控系統";
- 載入電表編號資料();
-
- //載入小電表();
- 載入簡易電表();
- 載入圖表上限();
-
- Color[] colorr =new Color[3]{new Color(0,0,0,0),new Color(0,0,0,1),new Color(1,1,1,1)};
- Color[] colobr =new Color[3]{new Color(0,0,0,0),new Color(1,1,1,1),new Color(0,0,0,1)};
- Color fontcolor=colorr[Global.系統主題];
- Color color2 = new Color(0.97f, 0.48f, 0.99f, 1f);
- Moudle.BarChart_表格設定(chart,fontcolor,color2,false,false,false);
- Moudle.BarChart_表格設定(chart2,fontcolor,color2,false,false,false);
- Moudle.BarChart_表格設定(電壓_barchart,fontcolor,color2,false,false,false);
- Moudle.BarChart_表格設定(電流_barchart,fontcolor,color2,false,false,false);
- Moudle.BarChart_表格設定(功率_barchart,fontcolor,color2,false,false,false);
- Moudle.LineChart_表格設定(電費_chart,fontcolor,color2,false,true,true);
- Moudle.LineChart_表格設定(年用電_chart,fontcolor,color2,false,true,true);
- Moudle.BarChart_表格設定(度數_chart,fontcolor,color2,false,true,true);
- }
-
-
-
- private void 安全運行天數(){
- if(Global.上次更新天數 != DateTime.Now.Day){
- DateTime day2 = DateTime.Now;
- int dayear, damonth, daday;
- if(DateTime.Now.Year > 2023){
- dayear = DateTime.Now.Year - 2023;
- day2 = day2.AddYears(-dayear);
- }
- if(DateTime.Now.Month > 1){
- damonth = DateTime.Now.Month - 1;
- day2 = day2.AddMonths(-damonth);
- }
- if(DateTime.Now.Day > 1){
- daday = DateTime.Now.Day - 1;
- day2 = day2.AddDays(-daday);
- }
- Global.運行天數 = new TimeSpan(DateTime.Now.Ticks - day2.Ticks);
- string ddd = Global.運行天數.Days.ToString().PadLeft(5,'0');
- 安全運行天數_img[0].sprite = Global.Wnum[int.Parse(ddd.Substring(0,1))];
- 安全運行天數_img[1].sprite = Global.Wnum[int.Parse(ddd.Substring(1,1))];
- 安全運行天數_img[2].sprite = Global.Wnum[int.Parse(ddd.Substring(2,1))];
- 安全運行天數_img[3].sprite = Global.Wnum[int.Parse(ddd.Substring(3,1))];
- 安全運行天數_img[4].sprite = Global.Wnum[int.Parse(ddd.Substring(4,1))];
- }
- }
- private void 載入電表編號資料(){
- try{
- SQL_ele_sys.SQL_電表清單資料(Global.客戶代號);
- DataSet ds1 = new();
- SQL_Module.da.Fill(ds1);
- Global.電表資料清單=ds1.Tables[0];
- Global.電表數量 = ds1.Tables[0].Rows.Count;
- if(電表編號_tb.text=="PANEL EMVCB#1"){
- 電表編號_tb.text=ds1.Tables[0].Rows[0][1].ToString();
- }
- if(副電表編號_tb.text=="PANEL EMVCB#1"){
- 副電表編號_tb.text=ds1.Tables[0].Rows[0][1].ToString();
- }
- /*if(電表編號_tb.text=="PANEL EMVCB#1"){
- 電表編號_tb.text=ds1.Tables[0].Rows[0][1].ToString();
- }
- if(副電表編號_tb.text=="PANEL EMVCB#1"){
- 副電表編號_tb.text=ds1.Tables[0].Rows[0][1].ToString();
- }*/
- for(int i=0;i<=Global.電表數量-1;i++){
- Global.電表名稱[i]=ds1.Tables[0].Rows[i][1].ToString();
- if(Global.資料來源=="PLC"){
- Global.電表功率單位[i]=ds1.Tables[0].Rows[i]["圖表顯示功率"].ToString();
- Global.圖表最大電壓[i]=ds1.Tables[0].Rows[i]["圖表顯示電壓"].ToString();
- Global.圖表最大電流[i]=ds1.Tables[0].Rows[i]["圖表顯示電流"].ToString();
- Global.圖表最大功率[i]=ds1.Tables[0].Rows[i]["圖表最大功率"].ToString();
- }else{
- Global.電表功率單位[i]=ds1.Tables[0].Rows[i]["功率單位"].ToString();
- Global.圖表最大電壓[i]=ds1.Tables[0].Rows[i]["最大電壓"].ToString();
- Global.圖表最大電流[i]=ds1.Tables[0].Rows[i]["最大電流"].ToString();
- Global.圖表最大功率[i]=ds1.Tables[0].Rows[i]["最大功率"].ToString();
- }
- }
- Global.載入電表名稱Option=false;
- }finally{
- SQL_Module.conn.Close();
- }
- }
- private void 載入圖表上限(){
- if(詳細電表_pl.activeInHierarchy){
- 詳V1.maxValue= int.Parse(Global.圖表最大電壓[Global.詳細電表電表ID-1]);
- 詳V2.maxValue= int.Parse(Global.圖表最大電壓[Global.詳細電表電表ID-1]);
- 詳V3.maxValue= int.Parse(Global.圖表最大電壓[Global.詳細電表電表ID-1]);
- 詳I1.maxValue= int.Parse(Global.圖表最大電流[Global.詳細電表電表ID-1]);
- 詳I2.maxValue= int.Parse(Global.圖表最大電流[Global.詳細電表電表ID-1]);
- 詳I3.maxValue= int.Parse(Global.圖表最大電流[Global.詳細電表電表ID-1]);
- 詳V3_lb.text = Global.圖表最大電壓[Global.詳細電表電表ID-1];
- 詳V2_lb.text = (float.Parse(Global.圖表最大電壓[Global.詳細電表電表ID-1])/2).ToString("##0") ;
- 詳I3_lb.text = Global.圖表最大電流[Global.詳細電表電表ID-1];
- 詳I2_lb.text = (float.Parse(Global.圖表最大電流[Global.詳細電表電表ID-1])/2).ToString("##0") ;
- 詳S3_lb.text = Global.圖表最大功率[Global.詳細電表電表ID-1];
- 詳S2_lb.text = (float.Parse(Global.圖表最大功率[Global.詳細電表電表ID-1])/2).ToString("##0") ;
- 詳Q3_lb.text = Global.圖表最大功率[Global.詳細電表電表ID-1];
- 詳Q2_lb.text = (float.Parse(Global.圖表最大功率[Global.詳細電表電表ID-1])/2).ToString("##0") ;
- 詳P3_lb.text = Global.圖表最大功率[Global.詳細電表電表ID-1];
- 詳P2_lb.text = (float.Parse(Global.圖表最大功率[Global.詳細電表電表ID-1])/2).ToString("##0") ;
- }else{
- Global.上限電表ID1 = Array.IndexOf(Global.電表名稱, 電表編號_tb.text);
- Global.上限電表ID2 = Array.IndexOf(Global.電表名稱, 副電表編號_tb.text);
- if(Global.上限電表ID1 != -1){
- V3_lb.text = Global.圖表最大電壓[Global.上限電表ID1];
- V2_lb.text = (float.Parse(Global.圖表最大電壓[Global.上限電表ID1])/2).ToString("##0") ;
- I3_lb.text = Global.圖表最大電流[Global.上限電表ID1];
- I2_lb.text = (float.Parse(Global.圖表最大電流[Global.上限電表ID1])/2).ToString("##0") ;
- }
- if(Global.上限電表ID2 != -1){
- 副V3_lb.text = Global.圖表最大電壓[Global.上限電表ID2];
- 副V2_lb.text = (float.Parse(Global.圖表最大電壓[Global.上限電表ID2])/2).ToString("##0") ;
- 副I3_lb.text = Global.圖表最大電流[Global.上限電表ID2];
- 副I2_lb.text = (float.Parse(Global.圖表最大電流[Global.上限電表ID2])/2).ToString("##0") ;
- }
- }
- }
- /*private void 載入小電表(){
- Moudle.清除控件(小電表清單_ct);
- int k=0;
- int h=0;
- for(int i=0;i<=Global.電表數量-1;i++){
- GameObject header = Instantiate(小電表清單_rpf, 小電表清單_tp);
- TextMeshProUGUI ele_text = new GameObject("ele_"+i+"_tb").AddComponent<TextMeshProUGUI>();
- if (i % 2 == 1){
- header.transform.localPosition=new Vector3(6,-10-(140*(k)),0);
- k+=1;
- }else{
- header.transform.localPosition = new Vector3(394, -10 - (140 * (h)), 0);
- h+=1;
- }
- header.AddComponent<Image>().type=Image.Type.Sliced;
- header.GetComponent<Image>().sprite=UIsprite;
- header.name="小電表_"+i.ToString();
- header.GetComponent<Image>().fillCenter=false;
- header.GetComponent<Image>().color = new Color(1f,1f,1f,1f);
- //header.AddComponent<Button>().onClick.AddListener(() => { 按鈕事件(ele_text); });
- Image ele_img = new GameObject("ele_"+i+"_pic").AddComponent<Image>();
- ele_img.transform.SetParent(header.transform, false);
- ele_img.sprite=控件圖片[3];
- ele_img.transform.localPosition = new Vector3(65f,-63f,0f);
- string[] title=new string[4]{"R","S","T","N"};
- float[] x_data=new float[4]{-25.0756f,-8.5f,8f,24.6f};
- for(int j=0;j<=3;j++){
- Image Color_img = new GameObject(title[j]+"_"+i+"_pic").AddComponent<Image>();
- Color_img.transform.SetParent(ele_img.transform, false);
- Color_img.color=new Color(0.05633092f,0.745283f,0.02460841f,1f);
- Color_img.transform.localPosition=new Vector3(x_data[j],19.39892f,0);
- Color_img.GetComponent<RectTransform>().sizeDelta = new Vector2(13.1166f, 22.0985f);
- }
- Color[] colorr =new Color[3]{new Color(0,0,0,0),new Color(0,0,0,1),new Color(1,1,1,1)};
- Color fontcolor=colorr[Global.系統主題];
- ele_text.transform.SetParent(header.transform, false);
- ele_text.transform.localPosition = new Vector3(250f,-63f,0f);
- ele_text.rectTransform.sizeDelta = new Vector2(246f, 100f);
- ele_text.font = myFont;
- ele_text.color=fontcolor;
- ele_text.alignment = TextAlignmentOptions.Center;
- ele_text.fontStyle = FontStyles.Bold;
- ele_text.fontSize=30;
- ele_text.enableAutoSizing=true;
- ele_text.text=Global.電表名稱[i].ToString();
- }
- int 電表數量 = Global.電表數量-1;
- int 商數 = 電表數量 / 2;
- int 餘數 = 電表數量 % 2;
- int 結果 = 商數 + (餘數 > 0 ? 1 : 0);
- 小電表清單_ct.GetComponent<RectTransform>().sizeDelta = new Vector2(小電表清單_ct.GetComponent<RectTransform>().sizeDelta.x,145*結果);
- }*/
- private void 載入簡易電表(){
- Moudle.清除控件(簡易電表清單_ct);
- int[] Vector2X = new int[4] {100,520,200,200};
- int[] Vector3X = new int[5] {0,100,620,820,1020};
- string[] HeaderString = new string[4]{"","電表名稱","電壓","電流"};
- string[] CellName = new string[4]{"","Name","V","I"};
- for(int j=1;j<=3;j++){
- GameObject header = Instantiate(簡易電表清單_rpf, 簡易電表清單_tp);
- TextMeshProUGUI ele_text = new GameObject("easyHeader_"+j+"_tb").AddComponent<TextMeshProUGUI>();
- header.transform.localPosition=new Vector3(Vector3X[j],0,0);
- header.GetComponent<RectTransform>().sizeDelta = new Vector2(Vector3X[j+1]-Vector3X[j],70);
- header.AddComponent<Image>().type=Image.Type.Sliced;
- header.GetComponent<Image>().sprite=UIsprite;
- header.GetComponent<Image>().fillCenter=false;
- header.GetComponent<Image>().color = new Color(1f,1f,1f,1f);
- Color[] colorr =new Color[3]{new Color(0,0,0,0),new Color(0,0,0,1),new Color(1,1,1,1)};
- Color fontcolor=colorr[Global.系統主題];
- ele_text.transform.SetParent(header.transform, false);
- ele_text.rectTransform.anchoredPosition = new Vector3(0f,0f,0f);
- ele_text.rectTransform.sizeDelta = new Vector2(Vector2X[j], 70f);
- ele_text.font = myFont;
- ele_text.color=fontcolor;
- ele_text.alignment = TextAlignmentOptions.Center;
- ele_text.fontStyle = FontStyles.Bold;
- ele_text.fontSize=36;
- ele_text.margin = new Vector4(10, 5, 10, 5);
- ele_text.text=HeaderString[j];
- }
- for(int i=0;i<=Global.電表數量-1;i++){
- GameObject header = Instantiate(簡易電表清單_rpf, 簡易電表清單_tp);
- Image ele_img = new GameObject("easyChild_pic_"+i.ToString().PadLeft(8,'0')).AddComponent<Image>();
- ele_img.rectTransform.sizeDelta = new Vector2(90, 90);
- ele_img.transform.SetParent(header.transform, false);
- ele_img.sprite=控件圖片[3];
- ele_img.transform.localPosition = new Vector3(106.1107f,-50f,0f);
- header.transform.localPosition=new Vector3(Vector3X[0],-70-(100*i),0);
- header.GetComponent<RectTransform>().sizeDelta = new Vector2(Vector3X[1]-Vector3X[0],100);
- header.AddComponent<Image>().type=Image.Type.Sliced;
- header.GetComponent<Image>().sprite=UIsprite;
- header.GetComponent<Image>().fillCenter=false;
- header.GetComponent<Image>().color = new Color(1f,1f,1f,1f);
- header.AddComponent<Button>().onClick.AddListener(() => { 按鈕事件(ele_img.name); });
- for(int j=1;j<=3;j++){
- header = Instantiate(簡易電表清單_rpf, 簡易電表清單_tp);
- TextMeshProUGUI ele_text = new GameObject("easyChild_"+CellName[j]+"_tb_"+i.ToString().PadLeft(8,'0')).AddComponent<TextMeshProUGUI>();
- header.transform.localPosition=new Vector3(Vector3X[j],-70-(100*i),0);
- header.GetComponent<RectTransform>().sizeDelta = new Vector2(Vector3X[j+1]-Vector3X[j],100);
- header.AddComponent<Image>().type=Image.Type.Sliced;
- header.GetComponent<Image>().sprite=UIsprite;
- header.GetComponent<Image>().fillCenter=false;
- header.GetComponent<Image>().color = new Color(1f,1f,1f,1f);
- header.AddComponent<Button>().onClick.AddListener(() => { 按鈕事件(ele_text.name);});
- Color[] colorr =new Color[3]{new (0,0,0,0),new (0,0,0,1),new (1,1,1,1)};
- Color fontcolor=colorr[Global.系統主題];
- ele_text.transform.SetParent(header.transform, false);
- ele_text.transform.localPosition = new Vector3(Vector2X[j]/2f,-50f,0f);
- ele_text.rectTransform.sizeDelta = new Vector2(Vector2X[j], 100f);
- ele_text.font = myFont;
- ele_text.color=fontcolor;
- ele_text.alignment = TextAlignmentOptions.Center;
- ele_text.fontStyle = FontStyles.Bold;
- ele_text.fontSize=36;
- ele_text.margin = new Vector4(10, 5, 10, 5);
- ele_text.text=HeaderString[j];
- }
-
- }
- 簡易電表清單_ct.GetComponent<RectTransform>().sizeDelta = new Vector2(小電表清單_ct.GetComponent<RectTransform>().sizeDelta.x,100*Global.電表數量+70);
- }
- private void 載入主電表資料(){
- string 流水號="";string 電表編號="";string 電表迴路="";string 功率單位="";
- if(Global.資料來源=="PLC"){
- 流水號 = 電表編號_tb.text;
- for(int i=0;i<=Global.電表資料清單.Rows.Count-1;i++){
- if(Global.電表資料清單.Rows[i][1].ToString().Contains(流水號)){
- 功率單位 = Global.電表資料清單.Rows[i]["圖表顯示功率"].ToString();
- }
- }
- }else{
- for(int i=0;i<=Global.電表資料清單.Rows.Count-1;i++){
- if(Global.電表資料清單.Rows[i][0].ToString().Contains("EL-00000001")){
- 流水號 = Global.電表資料清單.Rows[i][0].ToString();
- 電表編號 = Global.電表資料清單.Rows[i][3].ToString();
- 電表迴路 = Global.電表資料清單.Rows[i][4].ToString();
- 電表編號_tb.text = Global.電表資料清單.Rows[i][1].ToString();
- 功率單位 = Global.電表資料清單.Rows[i][9].ToString();
- }
- }
- }
-
-
- Global.PA = 電表編號_tb.text;
- if(Global.主電表上次編號 != Global.PA){
- Global.主電表上次編號 = Global.PA ;
- Global.電表ID1 = Array.IndexOf(Global.電表名稱, Global.PA)+1;
- }
- if(Global.PHP_Load_End_電表即時路徑){
- 電表資料(Global.電表ID1,電表編號,電表迴路);
- //Debug.Log(Global.Vavg);Debug.Log(Global.Iavg);
- 平均電壓_tb.text = Global.Vavg + " V";
- 平均電流_tb.text = Global.Iavg + " A";
- if(電表編號_tb.text.Contains("小米")){
- string SQL語法;
- string 開始時間=DateTime.Today.ToString().PadLeft(4,'0')+"0100000000";
- string 結束時間=DateTime.Today.ToString().PadLeft(4,'0')+"1232235959";
- SQL語法 = @"SELECT SUM(CAST(EP1_2 AS FLOAT)) AS Expr1
- FROM ["+DateTime.Today.ToString().PadLeft(4,'0')+@"-GCM-SCADA-DATA1].dbo.電表資料表
- WHERE (電表編號 LIKE N'"+電表編號+ "') AND (上傳時間 BETWEEN '"+開始時間+"' AND '"+結束時間+"')";
- SQL_ele_sys.SQL_載入年度電費表格_改(SQL語法);
- if(SQL_Module.dr.Read()){
- 累計用電量_tb.text = SQL_Module.dr[0].ToString() +" kWh";
- }else{
- 累計用電量_tb.text = "0 kWh";
- }
- }else{
- 累計用電量_tb.text = Global.Etol + " kWh";
- }
- if(Global.COSdata <=0){
- Global.功率因素數值 = Global.COSdata+100;
- }else{
- Global.功率因素數值 = Global.COSdata;
- }
-
- }
- if(Global.paint_choice2){
- Global.paint_choice2=false;
- 繪圖(chart,流水號,電表編號,電表迴路,功率單位);
- }
- }
- private void 載入副電表資料(){
- string 流水號;string 電表編號="";string 電表迴路="";string 功率單位="";
- if(Global.資料來源=="PLC"){
- 流水號=副電表編號_tb.text;
- for(int i=0;i<=Global.電表資料清單.Rows.Count-1;i++){
- if(Global.電表資料清單.Rows[i][1].ToString().Contains(流水號)){
- 功率單位 = Global.電表資料清單.Rows[i]["圖表顯示功率"].ToString();
- }
- }
- }else{
- 流水號=取得流水號(副電表編號_tb.text);
- if(流水號!=null){
- for(int i=0;i<=Global.電表資料清單.Rows.Count-1;i++){
- if(Global.電表資料清單.Rows[i][0].ToString().Contains(流水號)){
- 電表編號 = Global.電表資料清單.Rows[i][3].ToString();
- 電表迴路 = Global.電表資料清單.Rows[i][4].ToString();
- 功率單位 = Global.電表資料清單.Rows[i][9].ToString();
- }
- }
- }
- }
- Global.PA = 副電表編號_tb.text; //副電表編號_tb.text = Global.PA;
- if(Global.副電表上次編號 != Global.PA){
- Global.副電表上次編號 = Global.PA ;
- Global.電表ID2 = Array.IndexOf(Global.電表名稱, Global.PA)+1;
- }
- if(Global.PHP_Load_End_電表即時路徑){
- 電表資料(Global.電表ID2,電表編號,電表迴路);
- 副平均電壓_tb.text = Global.Vavg + " V";
- 副平均電流_tb.text = Global.Iavg + " A";
- if(副電表編號_tb.text.Contains("小米")){
- string SQL語法;
- string 開始時間=DateTime.Today.Year.ToString().PadLeft(4,'0')+"0100000000";
- string 結束時間=DateTime.Today.Year.ToString().PadLeft(4,'0')+"1232235959";
- SQL語法 = @"SELECT SUM(CAST(EP1_2 AS FLOAT)) AS Expr1
- FROM ["+DateTime.Today.Year.ToString().PadLeft(4,'0')+@"-GCM-SCADA-DATA1].dbo.電表資料表
- WHERE (電表編號 LIKE N'"+電表編號+ "') AND (上傳時間 BETWEEN '"+開始時間+"' AND '"+結束時間+"')";
- //Debug.Log(SQL語法);
- SQL_ele_sys.SQL_載入年度電費表格_改(SQL語法);
- if(SQL_Module.dr.Read()){
- 副累計用電量_tb.text = SQL_Module.dr[0].ToString() +" kWh";
- }else{
- 副累計用電量_tb.text = "0 kWh";
- }
- }else{
- 副累計用電量_tb.text = Global.Etol + " kWh";
- }
- if(Global.COSdata <=0){
- Global.副功率因素數值 = Global.COSdata+100;
- }else{
- Global.副功率因素數值 = Global.COSdata;
- }
- }
- if(Global.paint_choice3){
- Global.paint_choice3=false;
- 繪圖(chart2,流水號,電表編號,電表迴路,功率單位);
- }
- }
- public void Open_detail(int num){
- 詳細電表_pl.SetActive(true);
- //adMobManager.HideBanner();
- string 流水號, 電表編號="",電表迴路="",功率單位="",流水號2;
- if(num==0){
- Global.詳細電表電表ID=Global.電表ID1;
- Global.PA=電表編號_tb.text;
- 流水號=電表編號_tb.text;
- }else{
- Global.詳細電表電表ID=Global.電表ID2;
- Global.PA=副電表編號_tb.text;
- 流水號=副電表編號_tb.text;
- }
- 流水號2=取得流水號(流水號);
- for(int i=0;i<=Global.電表資料清單.Rows.Count-1;i++){
- if(Global.電表資料清單.Rows[i][0].ToString().Contains(流水號2)){
- 電表編號 = Global.電表資料清單.Rows[i][3].ToString();
- 電表迴路 = Global.電表資料清單.Rows[i][4].ToString();
- if(Global.資料來源=="PLC"){
- 功率單位 = Global.電表資料清單.Rows[i]["圖表顯示功率"].ToString();
- }else{
- 功率單位 = Global.電表資料清單.Rows[i][9].ToString();
- }
- }
- }
- 載入詳細電表資料();
- 載入圖表上限();
- 三合一繪圖(流水號,電表編號,電表迴路,功率單位);
- }
- public void close_detail(){
- 電能監控系統();
- }
- private void 載入詳細電表資料(){
- string 電表編號="";string 電表迴路="";;
- if(Global.資料來源=="PLC" && Global.PHP_Load_End){
- 電表資料(Global.詳細電表電表ID,電表編號,電表迴路);
- 詳細平均電壓_tb.text=Global.Vavg + " V";
- 詳細平均電流_tb.text=Global.Iavg + " A";
- }else{
- string 流水號 = 取得流水號(Global.電表名稱[Global.詳細電表電表ID-1]);
- for(int i=0;i<=Global.電表資料清單.Rows.Count-1;i++){
- if(Global.電表資料清單.Rows[i][0].ToString().Contains(流水號)){
- 電表編號 = Global.電表資料清單.Rows[i][3].ToString();
- 電表迴路 = Global.電表資料清單.Rows[i][4].ToString();
- }
- }
- 電表資料(Global.詳細電表電表ID,電表編號,電表迴路);
- 詳細平均電壓_tb.text=Global.Vavg + " V";
- 詳細平均電流_tb.text=Global.Iavg + " A";
- if(Global.COSdata <=0){
- Global.詳細功率因素數值 = Global.COSdata+100;
- }else{
- Global.詳細功率因素數值 = Global.COSdata;
- }
- }
- }
-
- private void 載入簡易電表資料(){
- if(簡易電表_pl.activeInHierarchy==true){
- if(Global.資料來源=="PLC"){
- string[] PLC_data = new string[]{Global.PHP_Report,Global.PHP_Report3,Global.PHP_Report4,Global.PHP_Report5,Global.PHP_Report6,Global.PHP_Report7,Global.PHP_Report8};
- for(int i=0;i<=Global.電表數量-1;i++){
- string data1 =PLC_data[i];
- string a,b;
- a=Converter_we.BintoSng(Convert.ToString(Int32.Parse(data1.Substring(114, 5)), 2).PadLeft(16, '0') + Convert.ToString(Int32.Parse(data1.Substring(108, 5)), 2).PadLeft(16, '0'));
- b=Converter_we.BintoSng(Convert.ToString(Int32.Parse(data1.Substring(66, 5)), 2).PadLeft(16, '0') + Convert.ToString(Int32.Parse(data1.Substring(60, 5)), 2).PadLeft(16, '0'));
- TextMeshProUGUI ele_text=null,ele_text2=null,ele_text3=null;
- foreach (TextMeshProUGUI textComponent in 簡易電表_pl.GetComponentsInChildren<TextMeshProUGUI>()){
- if (textComponent.name=="easyChild_V_tb_"+i.ToString().PadLeft(8,'0')){
- ele_text = textComponent;
- break;
- }
- }
- if (ele_text != null){
- ele_text.text= a;
- }
- foreach (TextMeshProUGUI textComponent in 簡易電表_pl.GetComponentsInChildren<TextMeshProUGUI>()){
- if (textComponent.name=="easyChild_I_tb_"+i.ToString().PadLeft(8,'0')){
- ele_text2 = textComponent;
- break;
- }
- }
- if (ele_text2 != null){
- ele_text2.text= b;
- }
- foreach (TextMeshProUGUI textComponent in 簡易電表_pl.GetComponentsInChildren<TextMeshProUGUI>()){
- if (textComponent.name=="easyChild_Name_tb_"+i.ToString().PadLeft(8,'0')){
- ele_text3 = textComponent;
- break;
- }
- }
- if (ele_text3 != null){
- ele_text3.text= Global.電表名稱[i];
- }
- }
- }else{
- if(Global.PHP_Load_End_電表即時路徑){
- for(int i=0;i<=Global.電表數量-1;i++){
- string a,b;
- string[] data1 = Global.電表即時資料字典[Global.電表資料清單.Rows[i][3].ToString()];
- a=(float.Parse(data1[3])/10).ToString();
- if( Global.電表資料清單.Rows[i][4].ToString()=="迴路1"){
- b=(float.Parse(data1[4])/100 + float.Parse(data1[5])/100).ToString();
- }else{
- b=(float.Parse(data1[6])/100 + float.Parse(data1[7])/100).ToString();
- }
- TextMeshProUGUI ele_text=null,ele_text2=null,ele_text3=null;
- foreach (TextMeshProUGUI textComponent in 簡易電表_pl.GetComponentsInChildren<TextMeshProUGUI>()){
- if (textComponent.name=="easyChild_V_tb_"+i.ToString().PadLeft(8,'0')){
- ele_text = textComponent;
- break;
- }
- }
- if (ele_text != null){
- ele_text.text= a;
- }
- foreach (TextMeshProUGUI textComponent in 簡易電表_pl.GetComponentsInChildren<TextMeshProUGUI>()){
- if (textComponent.name=="easyChild_I_tb_"+i.ToString().PadLeft(8,'0')){
- ele_text2 = textComponent;
- break;
- }
- }
- if (ele_text2 != null){
- ele_text2.text= b;
- }
- foreach (TextMeshProUGUI textComponent in 簡易電表_pl.GetComponentsInChildren<TextMeshProUGUI>()){
- if (textComponent.name=="easyChild_Name_tb_"+i.ToString().PadLeft(8,'0')){
- ele_text3 = textComponent;
- break;
- }
- }
- if (ele_text3 != null){
- ele_text3.text= Global.電表名稱[i];
- }
-
- }
- }
- }
-
- }
- }
- private void 電表資料(int num,string 電表編號,string 電表迴路){
- Debug.Log(電表編號);
- if(Global.資料來源=="PLC" && Global.PHP_Load_End){
- int index = num-1;
- string[] PLC_data = new string[]{Global.PHP_Report,Global.PHP_Report3,Global.PHP_Report4,Global.PHP_Report5,Global.PHP_Report6,Global.PHP_Report7,Global.PHP_Report8};
- string data1=PLC_data[index];
- string[] EtolStr = new string[]{"5.83", "2.83", "1.02", "1.01", "0.54", "0.31", "0.12"};
- Global.Etol = EtolStr[index];
- if(data1.Length != 0){
- Global.Vavg=Converter_we.BintoSng(Convert.ToString(Int32.Parse(data1.Substring(114, 5)), 2).PadLeft(16, '0') + Convert.ToString(Int32.Parse(data1.Substring(108, 5)), 2).PadLeft(16, '0'));
- Global.Iavg=Converter_we.BintoSng(Convert.ToString(Int32.Parse(data1.Substring(66, 5)), 2).PadLeft(16, '0') + Convert.ToString(Int32.Parse(data1.Substring(60, 5)), 2).PadLeft(16, '0'));
- Global.COSdata =0;
- if(詳細電表_pl.activeInHierarchy){
- 詳細電流A相_tb.text=Converter_we.BintoSng(Convert.ToString(Int32.Parse(data1.Substring(6, 5)), 2).PadLeft(16, '0') + Convert.ToString(Int32.Parse(data1.Substring(0, 5)), 2).PadLeft(16, '0'))+ " A";
- 詳細電流B相_tb.text=Converter_we.BintoSng(Convert.ToString(Int32.Parse(data1.Substring(18, 5)), 2).PadLeft(16, '0') + Convert.ToString(Int32.Parse(data1.Substring(12, 5)), 2).PadLeft(16, '0'))+ " A";
- 詳細電流C相_tb.text=Converter_we.BintoSng(Convert.ToString(Int32.Parse(data1.Substring(30, 5)), 2).PadLeft(16, '0') + Convert.ToString(Int32.Parse(data1.Substring(24, 5)), 2).PadLeft(16, '0'))+ " A";
- 詳細電壓AB相_tb.text=Converter_we.BintoSng(Convert.ToString(Int32.Parse(data1.Substring(78, 5)), 2).PadLeft(16, '0') + Convert.ToString(Int32.Parse(data1.Substring(72, 5)), 2).PadLeft(16, '0'))+ " V";
- 詳細電壓BC相_tb.text=Converter_we.BintoSng(Convert.ToString(Int32.Parse(data1.Substring(90, 5)), 2).PadLeft(16, '0') + Convert.ToString(Int32.Parse(data1.Substring(84, 5)), 2).PadLeft(16, '0'))+ " V";
- 詳細電壓CA相_tb.text=Converter_we.BintoSng(Convert.ToString(Int32.Parse(data1.Substring(102, 5)), 2).PadLeft(16, '0') + Convert.ToString(Int32.Parse(data1.Substring(96, 5)), 2).PadLeft(16, '0'))+ " V";
- 詳細電流不平衡A相_tb.text=Converter_we.BintoSng(Convert.ToString(Int32.Parse(data1.Substring(174, 5)), 2).PadLeft(16, '0') + Convert.ToString(Int32.Parse(data1.Substring(168, 5)), 2).PadLeft(16, '0'))+ " A";
- 詳細電流不平衡B相_tb.text=Converter_we.BintoSng(Convert.ToString(Int32.Parse(data1.Substring(186, 5)), 2).PadLeft(16, '0') + Convert.ToString(Int32.Parse(data1.Substring(180, 5)), 2).PadLeft(16, '0'))+ " A";
- 詳細電流不平衡C相_tb.text=Converter_we.BintoSng(Convert.ToString(Int32.Parse(data1.Substring(198, 5)), 2).PadLeft(16, '0') + Convert.ToString(Int32.Parse(data1.Substring(192, 5)), 2).PadLeft(16, '0'))+ " A";
- 詳細電壓不平衡AB相_tb.text=Converter_we.BintoSng(Convert.ToString(Int32.Parse(data1.Substring(222, 5)), 2).PadLeft(16, '0') + Convert.ToString(Int32.Parse(data1.Substring(216, 5)), 2).PadLeft(16, '0'))+ " V";
- 詳細電壓不平衡BC相_tb.text=Converter_we.BintoSng(Convert.ToString(Int32.Parse(data1.Substring(234, 5)), 2).PadLeft(16, '0') + Convert.ToString(Int32.Parse(data1.Substring(228, 5)), 2).PadLeft(16, '0')) + " V";
- 詳細電壓不平衡CA相_tb.text=Converter_we.BintoSng(Convert.ToString(Int32.Parse(data1.Substring(246, 5)), 2).PadLeft(16, '0') + Convert.ToString(Int32.Parse(data1.Substring(240, 5)), 2).PadLeft(16, '0')) + " V";
- string 詳細平均有效功率=Converter_we.BintoSng(Convert.ToString(Int32.Parse(data1.Substring(354, 5)), 2).PadLeft(16, '0') + Convert.ToString(Int32.Parse(data1.Substring(348, 5)), 2).PadLeft(16, '0'));
- string 詳細平均無效功率=Converter_we.BintoSng(Convert.ToString(Int32.Parse(data1.Substring(402, 5)), 2).PadLeft(16, '0') + Convert.ToString(Int32.Parse(data1.Substring(396, 5)), 2).PadLeft(16, '0'));
- string 詳細平均視在功率=Converter_we.BintoSng(Convert.ToString(Int32.Parse(data1.Substring(450, 5)), 2).PadLeft(16, '0') + Convert.ToString(Int32.Parse(data1.Substring(444, 5)), 2).PadLeft(16, '0'));
- if(Global.電表功率單位[Global.詳細電表電表ID-1]=="W"){
- Debug.Log(詳細平均有效功率);
- float 詳細平均有效功率2 = float.Parse(詳細平均有效功率) * 1000;
- 詳細平均有效功率_tb.text = 詳細平均有效功率2.ToString("#,##0.##") + " "+Global.電表功率單位[Global.詳細電表電表ID-1];
- float 詳細平均無效功率2 = float.Parse(詳細平均無效功率) * 1000;
- 詳細平均無效功率_tb.text = 詳細平均無效功率2.ToString("#,##0.##") + " "+Global.電表功率單位[Global.詳細電表電表ID-1];
- float 詳細平均視在功率2 = float.Parse(詳細平均視在功率) * 1000;
- 詳細平均視在功率_tb.text = 詳細平均視在功率2.ToString("#,##0.##") + " "+Global.電表功率單位[Global.詳細電表電表ID-1];
- }else{
- 詳細平均有效功率_tb.text= 詳細平均有效功率 + " "+Global.電表功率單位[Global.詳細電表電表ID-1];
- 詳細平均無效功率_tb.text= 詳細平均無效功率 + " "+Global.電表功率單位[Global.詳細電表電表ID-1];
- 詳細平均視在功率_tb.text= 詳細平均視在功率 + " "+Global.電表功率單位[Global.詳細電表電表ID-1];
- }
- }
- }else{
- Global.COSdata =0;
- Global.Vavg="0";
- Global.Iavg="0";
- 詳細電流A相_tb.text="0";
- 詳細電流B相_tb.text="0";
- 詳細電流C相_tb.text="0";
- 詳細電壓AB相_tb.text="0";
- 詳細電壓BC相_tb.text="0";
- 詳細電壓CA相_tb.text="0";
- 詳細電流不平衡A相_tb.text="0";
- 詳細電流不平衡B相_tb.text="0";
- 詳細電流不平衡C相_tb.text="0";
- 詳細電壓不平衡AB相_tb.text="0";
- 詳細電壓不平衡BC相_tb.text="0";
- 詳細電壓不平衡CA相_tb.text="0";
- 詳細平均有效功率_tb.text="0";
- 詳細平均無效功率_tb.text="0";
- 詳細平均視在功率_tb.text="0";
- }
- }else{
- if(Global.電表即時資料字典.ContainsKey(電表編號)){
- string[] data1 = Global.電表即時資料字典[電表編號];
- if(電表迴路=="迴路1"){
- Global.Etol = (float.Parse(data1[39]) * 10000 + (float.Parse(data1[40]) / 10)).ToString();
- Global.Vavg=(float.Parse(data1[3])/10).ToString();
- //Debug.Log(data1[4]);Debug.Log(data1[5]);
- Global.Iavg=(float.Parse(data1[4])/100 + float.Parse(data1[5])/100).ToString();
- float 功率因素 = float.Parse(data1[19])/10;
- Global.COSdata = Mathf.FloorToInt(功率因素);
- if(詳細電表_pl.activeInHierarchy){
- //提供的有效電能_tb.text="0 GWh";
-
- //提供的無效電能_tb.text="0 GWh";
- float 電1 = float.Parse(data1[39]);
- float 電2 = float.Parse(data1[40]);
- float 電3 = float.Parse(data1[41]);
- float 電4 = float.Parse(data1[42]);
- 提供的有效電能_tb.text=(電1*10000 + (電2/10)).ToString() +" kWh";
- 提供的無效電能_tb.text=(電3*10000 + (電4/10)).ToString() +" kWh";
- 詳細電流A相_tb.text=(float.Parse(data1[4])/100).ToString()+ " A";
- 詳細電流B相_tb.text=(float.Parse(data1[5])/100).ToString()+ " A";
- 詳細電流C相_tb.text="0 A";
- 詳細電壓AB相_tb.text=(float.Parse(data1[1])/10).ToString()+ " V";
- 詳細電壓BC相_tb.text=(float.Parse(data1[2])/10).ToString()+ " V";
- 詳細電壓CA相_tb.text="0 V";
- 詳細電流不平衡A相_tb.text="0 V";
- 詳細電流不平衡B相_tb.text="0 V";
- 詳細電流不平衡C相_tb.text="0 V";
- 詳細電壓不平衡AB相_tb.text="0 V";
- 詳細電壓不平衡BC相_tb.text="0 V";
- 詳細電壓不平衡CA相_tb.text="0 V";
- 詳細平均有效功率_tb.text=(float.Parse(data1[10])*10).ToString()+ " W ";
- 詳細平均無效功率_tb.text=(float.Parse(data1[13])*10).ToString()+ " W ";
- 詳細平均視在功率_tb.text=(float.Parse(data1[16])*10).ToString()+ " W ";
- }
- }else{
- Global.Etol = (float.Parse(data1[43]) * 10000 + (float.Parse(data1[44]) / 10)).ToString();
- Global.Vavg=(float.Parse(data1[3])/10).ToString();
- Global.Iavg=(float.Parse(data1[6])/100 + float.Parse(data1[7])/100).ToString();
- float 功率因素 = float.Parse(data1[31])/10;
- Global.COSdata = Mathf.FloorToInt(功率因素);
- if(詳細電表_pl.activeInHierarchy){
- float 電1 = float.Parse(data1[43]);
- float 電2 = float.Parse(data1[44]);
- float 電3 = float.Parse(data1[45]);
- float 電4 = float.Parse(data1[46]);
- 提供的有效電能_tb.text=(電1*10000 + (電2/10)).ToString() +" kWh";
- 提供的無效電能_tb.text=(電3*10000 + (電4/10)).ToString() +" kWh";
- 詳細電流A相_tb.text=(float.Parse(data1[6])/100).ToString()+ " A";
- 詳細電流B相_tb.text=(float.Parse(data1[7])/100).ToString()+ " A";
- 詳細電流C相_tb.text="0 A";
- 詳細電壓AB相_tb.text=(float.Parse(data1[1])/10).ToString()+ " V";
- 詳細電壓BC相_tb.text=(float.Parse(data1[2])/10).ToString()+ " V";
- 詳細電壓CA相_tb.text="0 V";
- 詳細電流不平衡A相_tb.text="0 V";
- 詳細電流不平衡B相_tb.text="0 V";
- 詳細電流不平衡C相_tb.text="0 V";
- 詳細電壓不平衡AB相_tb.text="0 V";
- 詳細電壓不平衡BC相_tb.text="0 V";
- 詳細電壓不平衡CA相_tb.text="0 V";
- 詳細平均有效功率_tb.text=(float.Parse(data1[22])*10).ToString()+ " W ";
- 詳細平均無效功率_tb.text=(float.Parse(data1[25])*10).ToString()+ " W ";
- 詳細平均視在功率_tb.text=(float.Parse(data1[28])*10).ToString()+ " W ";
- }
- }
- }else{
- Global.Etol="0";Global.Vavg="0";Global.Iavg="0";詳細電流A相_tb.text="0 A";詳細電流B相_tb.text="0 A";詳細電流C相_tb.text="0 A";詳細電壓AB相_tb.text="0 V";
- Global.COSdata =0;
- 詳細電壓BC相_tb.text="0 V";詳細電壓CA相_tb.text="0 V";詳細電流不平衡A相_tb.text="0 A";詳細電流不平衡B相_tb.text="0 A";詳細電流不平衡C相_tb.text="0 A";
- 詳細電壓不平衡AB相_tb.text="0 V";詳細電壓不平衡BC相_tb.text="0 V";詳細電壓不平衡CA相_tb.text="0 V";詳細平均有效功率_tb.text="0 W ";詳細平均無效功率_tb.text="0 W ";
- 詳細平均視在功率_tb.text="0 W ";
- }
- }
- }
- private void 繪圖(BarChart barchart,string 電表流水號,string 電表編號,string 電表迴路,string 功率單位){
- DataSet ds1= new DataSet();
- barchart.ClearData();
- DateTime day2 = DateTime.Now.AddDays(-30);
- string 開始時間= day2.ToString("yyyyMMdd");
- string 結束時間= DateTime.Now.ToString("yyyyMMdd");
- string 倍數;if(功率單位=="W"){倍數="1000";}else{倍數="1";}
- string SQL語法;
- if(Global.資料來源=="PLC"){
- SQL語法=" SELECT DISTINCT 時間_年 , 時間_月 , 時間_日 ,AVG(CONVERT(float,總平均功率) * "+倍數+" ) FROM (";
- if(day2.Year!=DateTime.Now.Year){
- for(int i=0;i<=Global.電表資料資料庫清單.Rows.Count-1;i++){
- if(Global.電表資料資料庫清單.Rows[i][0].ToString().Contains(DateTime.Now.Year.ToString())){
- SQL語法 += "SELECT * FROM [" + Global.電表資料資料庫清單.Rows[i][0] + @"].dbo.電表資料表
- WHERE (電表編號 LIKE N'" + 電表流水號 + "') AND (上傳時間 BETWEEN '" + 開始時間 + @"000000' AND '" + 結束時間 + @"235959')
- UNION ALL";
- }
- if(Global.電表資料資料庫清單.Rows[i][0].ToString().Contains(day2.Year.ToString())){
- SQL語法 += "SELECT * FROM [" + Global.電表資料資料庫清單.Rows[i][0] + @"].dbo.電表資料表
- WHERE (電表編號 LIKE N'" + 電表流水號 + "') AND (上傳時間 BETWEEN '" + 開始時間 + @"000000' AND '" + 結束時間 + @"235959')
- UNION ALL";
- }
- }
- SQL語法 = SQL語法[..^"UNION ALL".Length];
- SQL語法 += ") AS all_data GROUP BY 時間_年, 時間_月, 時間_日 ORDER BY 時間_年, 時間_月, 時間_日";
- }else{
- for(int i=0;i<=Global.電表資料資料庫清單.Rows.Count-1;i++){
- if(Global.電表資料資料庫清單.Rows[i][0].ToString().Contains(DateTime.Now.Year.ToString())){
- SQL語法 += "SELECT * FROM [" + Global.電表資料資料庫清單.Rows[i][0] + @"].dbo.電表資料表
- WHERE (電表編號 LIKE N'" + 電表流水號 + "') AND (上傳時間 BETWEEN '" + 開始時間 + @"000000' AND '" + 結束時間 + @"235959')
- UNION ALL";
- }
- }
- SQL語法 = SQL語法[..^"UNION ALL".Length];
- SQL語法 += ") AS all_data GROUP BY 時間_年, 時間_月, 時間_日 ORDER BY 時間_年, 時間_月, 時間_日";
- }
- }else{
- string p;if(電表迴路=="迴路1"){p="P1";}else{p="P2";}
- SQL語法=" SELECT CONVERT(VARCHAR(8), 上傳時間, 120) AS 日期, AVG(CAST("+p+" AS FLOAT) * "+倍數+" ) AS 平均P1 FROM (";
- if(day2.Year!=DateTime.Now.Year){
- for(int i=0;i<=Global.電表資料資料庫清單.Rows.Count-1;i++){
- if(Global.電表資料資料庫清單.Rows[i][0].ToString().Contains(DateTime.Now.Year.ToString())){
- SQL語法 += "SELECT 上傳時間, "+p+" FROM [" + Global.電表資料資料庫清單.Rows[i][0] + @"].dbo.電表資料表
- WHERE (電表編號 LIKE N'" + 電表編號 + "') AND (上傳時間 BETWEEN '" + 開始時間 + @"000000' AND '" + 結束時間 + @"235959')
- UNION ALL";
- }
- if(Global.電表資料資料庫清單.Rows[i][0].ToString().Contains(day2.Year.ToString())){
- SQL語法 += "SELECT 上傳時間, "+p+" FROM [" + Global.電表資料資料庫清單.Rows[i][0] + @"].dbo.電表資料表
- WHERE (電表編號 LIKE N'" + 電表編號 + "') AND (上傳時間 BETWEEN '" + 開始時間 + @"000000' AND '" + 結束時間 + @"235959')
- UNION ALL";
- }
- }
- SQL語法 = SQL語法[..^"UNION ALL".Length];
- SQL語法 += ") AS 合併資料表 GROUP BY CONVERT(VARCHAR(8), 上傳時間, 120) ORDER BY 日期";
- }else{
- for(int i=0;i<=Global.電表資料資料庫清單.Rows.Count-1;i++){
- if(Global.電表資料資料庫清單.Rows[i][0].ToString().Contains(DateTime.Now.Year.ToString())){
- SQL語法 += "SELECT 上傳時間, "+p+" FROM [" + Global.電表資料資料庫清單.Rows[i][0] + @"].dbo.電表資料表
- WHERE (電表編號 LIKE N'" + 電表編號 + "') AND (上傳時間 BETWEEN '" + 開始時間 + @"000000' AND '" + 結束時間 + @"235959')
- UNION ALL";
- }
- }
- SQL語法 = SQL語法[..^"UNION ALL".Length];
- SQL語法 += ") AS 合併資料表 GROUP BY CONVERT(VARCHAR(8), 上傳時間, 120) ORDER BY 日期";
- }
- }
- List<string> xAxisValue = new();
- List<float> yAxisValue = new();
- SQL_ele_sys.SQL_電表內容資料清單載入_月(SQL語法);
- SQL_Module.da.Fill(ds1);
- for(int i =0;i<=ds1.Tables[0].Rows.Count-1;i++){
- if(Global.資料來源=="PLC"){
- xAxisValue.Add(ds1.Tables[0].Rows[i][2].ToString());
- yAxisValue.Add(float.Parse(ds1.Tables[0].Rows[i][3].ToString()));
- }else{
- xAxisValue.Add(ds1.Tables[0].Rows[i][0].ToString());
- yAxisValue.Add(float.Parse(ds1.Tables[0].Rows[i][1].ToString()));
- }
- }
- foreach (var xValue in xAxisValue) {
- barchart.AddXAxisData(xValue);
- }
- foreach (float item in yAxisValue){
- barchart.AddData(0, item);
- }
- }
- private void 三合一繪圖(string 電表流水號,string 電表編號,string 電表迴路,string 功率單位){
- 電壓_barchart.ClearData();
- 電流_barchart.ClearData();
- 功率_barchart.ClearData();
- List<string> xAxisValue = new();
- List<float> yAxisValue = new();
- List<float> yAxisValue2 = new();
- List<float> yAxisValue3 = new();
- DataSet ds1 = new();
- DateTime day2=DateTime.Now.AddDays(-30);
- string 開始時間= day2.ToString("yyyyMMdd");
- string 結束時間= DateTime.Now.ToString("yyyyMMdd");
- string SQL語法;
- if(Global.資料來源=="PLC"){
- string 倍率;if(功率單位=="W"){倍率="1000";}else{倍率="1";}
- SQL語法="SELECT DISTINCT 時間_年 , 時間_月 , 時間_日 , AVG(CONVERT(float,電壓L_L_Avg)),AVG(CONVERT(float,電流Avg )),AVG(CONVERT(float,總平均功率 ) * "+ 倍率 +" ) FROM (";
- if(day2.Year!=DateTime.Now.Year){
- for(int i=0;i<=Global.電表資料資料庫清單.Rows.Count-1;i++){
- if(Global.電表資料資料庫清單.Rows[i][0].ToString().Contains(DateTime.Now.Year.ToString())){
- SQL語法 += "SELECT * FROM [" + Global.電表資料資料庫清單.Rows[i][0] + @"].dbo.電表資料表
- WHERE (電表編號 LIKE N'" + 電表流水號 + "') AND (上傳時間 BETWEEN '" + 開始時間 + @"000000' AND '" + 結束時間 + @"235959')
- UNION ALL";
- }
- if(Global.電表資料資料庫清單.Rows[i][0].ToString().Contains(day2.Year.ToString())){
- SQL語法 += "SELECT * FROM [" + Global.電表資料資料庫清單.Rows[i][0] + @"].dbo.電表資料表
- WHERE (電表編號 LIKE N'" + 電表流水號 + "') AND (上傳時間 BETWEEN '" + 開始時間 + @"000000' AND '" + 結束時間 + @"235959')
- UNION ALL";
- }
- }
- SQL語法 = SQL語法[..^"UNION ALL".Length];
- SQL語法 += ") AS all_data GROUP BY 時間_年, 時間_月, 時間_日 ORDER BY 時間_年, 時間_月, 時間_日";
- }else{
- for(int i=0;i<=Global.電表資料資料庫清單.Rows.Count-1;i++){
- if(Global.電表資料資料庫清單.Rows[i][0].ToString().Contains(DateTime.Now.Year.ToString())){
- SQL語法 += "SELECT * FROM [" + Global.電表資料資料庫清單.Rows[i][0] + @"].dbo.電表資料表
- WHERE (電表編號 LIKE N'" + 電表流水號 + "') AND (上傳時間 BETWEEN '" + 開始時間 + @"000000' AND '" + 結束時間 + @"235959')
- UNION ALL";
- }
- }
- SQL語法 = SQL語法[..^"UNION ALL".Length];
- SQL語法 += ") AS all_data GROUP BY 時間_年, 時間_月, 時間_日 ORDER BY 時間_年, 時間_月, 時間_日";
- }
- }else{
- string p,a;if(電表迴路=="迴路1"){p="P1";a="I1";}else{p="P2";a="I2";}string 倍率;if(功率單位=="W"){倍率="1000";}else{倍率="1";}
- SQL語法="SELECT CONVERT(VARCHAR(8), 上傳時間, 120) AS 日期, AVG(CAST("+p+" AS FLOAT) * "+ 倍率 +" ) AS 平均P1, AVG(CAST(Vab AS FLOAT)) AS 平均V,AVG(CAST("+a+" AS FLOAT)) AS 平均I FROM (";
- if(day2.Year!=DateTime.Now.Year){
- for(int i=0;i<=Global.電表資料資料庫清單.Rows.Count-1;i++){
- if(Global.電表資料資料庫清單.Rows[i][0].ToString().Contains(DateTime.Now.Year.ToString())){
- SQL語法 += "SELECT 上傳時間, " + p + ",Vab," + a + " FROM [" + Global.電表資料資料庫清單.Rows[i][0] + @"].dbo.電表資料表
- WHERE (電表編號 LIKE N'" + 電表編號 + "') AND (上傳時間 BETWEEN '" + 開始時間 + @"000000' AND '" + 結束時間 + @"235959')
- UNION ALL";
- }
- if(Global.電表資料資料庫清單.Rows[i][0].ToString().Contains(day2.Year.ToString())){
- SQL語法 += "SELECT 上傳時間, " + p + ",Vab," + a + " FROM [" + Global.電表資料資料庫清單.Rows[i][0] + @"].dbo.電表資料表
- WHERE (電表編號 LIKE N'" + 電表編號 + "') AND (上傳時間 BETWEEN '" + 開始時間 + @"000000' AND '" + 結束時間 + @"235959')
- UNION ALL";
- }
- }
- SQL語法 = SQL語法[..^"UNION ALL".Length];
- SQL語法 += ") AS 合併資料表 GROUP BY CONVERT(VARCHAR(8), 上傳時間, 120) ORDER BY 日期";
- }else{
- for(int i=0;i<=Global.電表資料資料庫清單.Rows.Count-1;i++){
- if(Global.電表資料資料庫清單.Rows[i][0].ToString().Contains(DateTime.Now.Year.ToString())){
- SQL語法 += "SELECT 上傳時間, " + p + ",Vab," + a + " FROM [" + Global.電表資料資料庫清單.Rows[i][0] + @"].dbo.電表資料表
- WHERE (電表編號 LIKE N'" + 電表編號 + "') AND (上傳時間 BETWEEN '" + 開始時間 + @"000000' AND '" + 結束時間 + @"235959')
- UNION ALL";
- //SQL語法 += "SELECT * FROM [" + Global.電表資料資料庫清單.Rows[i][0] + "].dbo.電表資料表 WHERE 電表編號 LIKE N'" + 電表流水號 + "' AND (上傳時間 BETWEEN '" + 開始時間 + "000000' AND '" + 結束時間 + @"235959')
- // UNION ALL";
- }
- }
- SQL語法 = SQL語法[..^"UNION ALL".Length];
- SQL語法 += ") AS 合併資料表 GROUP BY CONVERT(VARCHAR(8), 上傳時間, 120) ORDER BY 日期";
- }
- }
- SQL_ele_sys.SQL_電表內容資料詳細載入_月(SQL語法);
- if(Global.SQL_S){SQL_Module.da.Fill(ds1);}
- for(int i =0;i<=ds1.Tables[0].Rows.Count-1;i++){
- if(Global.資料來源=="PLC"){
- xAxisValue.Add(ds1.Tables[0].Rows[i]["時間_日"].ToString());
- yAxisValue.Add(float.Parse(ds1.Tables[0].Rows[i][3].ToString()));
- yAxisValue2.Add(float.Parse(ds1.Tables[0].Rows[i][4].ToString()));
- yAxisValue3.Add(float.Parse(ds1.Tables[0].Rows[i][5].ToString()));
- }else{
- xAxisValue.Add(ds1.Tables[0].Rows[i][0].ToString()[^2..]);
- yAxisValue.Add(float.Parse(ds1.Tables[0].Rows[i][2].ToString()));
- yAxisValue2.Add(float.Parse(ds1.Tables[0].Rows[i][3].ToString()));
- yAxisValue3.Add(float.Parse(ds1.Tables[0].Rows[i][1].ToString()));
- }
-
- }
- for (int i = 0; i < xAxisValue.Count; i++){
- 電壓_barchart.AddXAxisData(xAxisValue[i]);
- 電流_barchart.AddXAxisData(xAxisValue[i]);
- 功率_barchart.AddXAxisData(xAxisValue[i]);
- }
- foreach (float item in yAxisValue){
- 電壓_barchart.AddData(0, item);
- }
- foreach (float item in yAxisValue2){
- 電流_barchart.AddData(0, item);
- }
- foreach (float item in yAxisValue3){
- 功率_barchart.AddData(0, item);
- }
- }
- public void open_right(){
- 右側按鈕_pl.SetActive(true);
- }
- public void close_right(){
- 右側按鈕_pl.SetActive(false);
- }
- //=======電費試算表===========================
- public void Open_calculator(){
- if(電費試算表_pl.activeInHierarchy){電費試算表_pl.SetActive(false);}else{
- 電費試算表_pl.SetActive(true);
- //試算_電表編號_tb.text=Global.PA;
- if(!Global.載入電表名稱){
- 試算_電表名稱_cb.GetComponent<TMP_Dropdown>().ClearOptions();
- 試算_電表名稱_cb.GetComponent<TMP_Dropdown>().AddOptions(Global.電表名稱Option);
- 試算_電表名稱_cb.GetComponent<TMP_Dropdown>().value=0;
- Global.載入電表名稱=true;
- }
- if(!Global.載入年度){
- 試算_開始年_cb.GetComponent<TMP_Dropdown>().ClearOptions();
- 試算_結束年_cb.GetComponent<TMP_Dropdown>().ClearOptions();
- 試算_開始年_cb.GetComponent<TMP_Dropdown>().AddOptions(Global.年度Options);
- 試算_結束年_cb.GetComponent<TMP_Dropdown>().AddOptions(Global.年度Options);
- 試算_開始年_cb.GetComponent<TMP_Dropdown>().value=Global.年度Options.IndexOf(DateTime.Now.Year.ToString());
- 試算_結束年_cb.GetComponent<TMP_Dropdown>().value=Global.年度Options.IndexOf(DateTime.Now.Year.ToString());
- Global.載入年度=true;
-
- }
- if(!Global.載入月份){
- 試算_開始月_cb.GetComponent<TMP_Dropdown>().ClearOptions();
- 試算_結束月_cb.GetComponent<TMP_Dropdown>().ClearOptions();
- 試算_開始月_cb.GetComponent<TMP_Dropdown>().AddOptions(Global.月份Options_中);
- 試算_結束月_cb.GetComponent<TMP_Dropdown>().AddOptions(Global.月份Options_中);
- 試算_開始月_cb.GetComponent<TMP_Dropdown>().value=DateTime.Now.Month-1;
- 試算_結束月_cb.GetComponent<TMP_Dropdown>().value=DateTime.Now.Month-1;
- Global.載入月份=true;
- Moudle.載入日期(1,試算_開始年_cb,試算_開始月_cb,試算_開始日_cb);
- 試算_Set_電表資料();
- }
-
- }
- }
- public void 觸發載入日期(){
- if(Global.載入月份){
- Moudle.載入日期(1,試算_開始年_cb,試算_開始月_cb,試算_開始日_cb);
- 試算_Set_電表資料();
- }
- }
- public void 試算_Set_電表資料(){
- int N_year = Int32.Parse(試算_開始年_cb.GetComponent<TMP_Dropdown>().options[試算_開始年_cb.GetComponent<TMP_Dropdown>().value].text);
- int N_month = 試算_開始月_cb.GetComponent<TMP_Dropdown>().value+1;
- int N_day = 試算_開始日_cb.GetComponent<TMP_Dropdown>().value+1;
- int E_year = Int32.Parse(試算_結束年_cb.GetComponent<TMP_Dropdown>().options[試算_結束年_cb.GetComponent<TMP_Dropdown>().value].text);
- int E_month = 試算_結束月_cb.GetComponent<TMP_Dropdown>().value+1;
- int E_day = 試算_結束日_cb.GetComponent<TMP_Dropdown>().value+1;
- if(E_year <= DateTime.Now.Year && E_month <= DateTime.Now.Month && E_day <= DateTime.Now.Day && N_year <= DateTime.Now.Year && N_month <= DateTime.Now.Month && N_day <= DateTime.Now.Day){
- Global.試算_開始時間=N_year.ToString().PadLeft(4,'0')+N_month.ToString().PadLeft(2,'0')+N_day.ToString().PadLeft(2,'0');
- Global.試算_結束時間=E_year.ToString().PadLeft(4,'0')+E_month.ToString().PadLeft(2,'0')+E_day.ToString().PadLeft(2,'0');
- Global.PA = 試算_電表名稱_cb.GetComponent<TMP_Dropdown>().options[試算_電表名稱_cb.GetComponent<TMP_Dropdown>().value].text;
- SQL_ele_sys.SQL_取得電費試算資料();
- if(Global.SQL_S){
- if(SQL_Module.dr.Read()){
- if(!SQL_Module.dr.IsDBNull(0)){
- 試算_平均電壓_tb.text = String.Format("{0:###,###.###}",SQL_Module.dr[0]) + " V";
- 試算_平均電流_tb.text = String.Format("{0:###,###.###}",SQL_Module.dr[1]) + " A";
- 試算_平均功率_tb.text = String.Format("{0:###,###.###}",SQL_Module.dr[2]) + " kW";
- 試算_總消耗功率_tb.text = String.Format("{0:###,###.###}",SQL_Module.dr[2]) + " kWh";
- DateTime day3 = new DateTime(N_year,N_month,N_day);
- DateTime day4 = new DateTime(E_year,E_month,E_day);
- if(E_year==DateTime.Now.Year && E_month==DateTime.Now.Month && E_day==DateTime.Now.Day){
- day4=day4.AddHours(DateTime.Now.Hour+Global.Zoneoffset);
- }else{
- day4=day4.AddDays(1);
- }
- TimeSpan day2 = day4.Subtract(day3);
- 試算_總消耗能量_tb.text = String.Format("{0:###,###.###}",Single.Parse(試算_總消耗功率_tb.text.Substring(0, 試算_總消耗功率_tb.text.Length - 4)) * day2.TotalHours) + " kWh";
- if(Global.幣別=="印尼盾"){
- 試算_電費試算_tb.text = String.Format("{0:###,###}",(int)Single.Parse(試算_總消耗能量_tb.text.Substring(0, 試算_總消耗能量_tb.text.Length - 4)) * 1114) + " Rp";
- }else{
- 試算_電費試算_tb.text = String.Format("{0:###,###}",(int)Single.Parse(試算_總消耗能量_tb.text.Substring(0, 試算_總消耗能量_tb.text.Length - 4)) * 1114/500) + " NTD";
- }
- }else{
- 試算_平均電壓_tb.text="0";
- 試算_平均電流_tb.text="0";
- 試算_平均功率_tb.text="0";
- 試算_總消耗功率_tb.text="0";
- 試算_總消耗能量_tb.text="0";
- 試算_電費試算_tb.text = "0";
- }
- }
- }
- }else{
- 試算_平均電壓_tb.text="0";
- 試算_平均電流_tb.text="0";
- 試算_平均功率_tb.text="0";
- 試算_總消耗功率_tb.text="0";
- 試算_總消耗能量_tb.text="0";
- 試算_電費試算_tb.text = "0";
- //MsgBox("TimeError!");
- }
-
-
- }
-
- public void close_calculator(){
- 電費試算表_pl.SetActive(false);
- }
- //===============電能報表===================
- public void open_report(){
- 電能報表_pl.SetActive(true);電能監控系統_pl.SetActive(false);
- //adMobManager.HideBanner();
- if(!載入完畢){
- Global.電能報表區間時間選擇="月";Global.電能報表電費時間選擇="月";載入cb();
- Moudle.載入日期(2,區間_開始_年_cb,區間_開始_月_cb,區間_開始_日_cb);
- //Moudle.載入日期(3,電費_開始_年_cb,電費_結束_年_cb,電費_開始_月_cb,電費_結束_月_cb,電費_開始_日_cb,電費_結束_日_cb);
- 建立年度表格();
- 建立區間表格();
- //建立電費表格();
- 載入完畢=true;
- }
- }
- private void 載入cb(){
- DateTime day2 = DateTime.Now.AddDays(-(DateTime.Now.Day - 1));
- day2 = day2.AddMonths(-1);
- 電表編號_cb.GetComponent<TMP_Dropdown>().ClearOptions();
- 電表編號_cb.GetComponent<TMP_Dropdown>().AddOptions(Global.電表名稱Option);
- 電表編號_cb.GetComponent<TMP_Dropdown>().value=0;
- 區間_開始_年_cb.ClearOptions();
- 區間_開始_月_cb.ClearOptions();
- 區間_開始_日_cb.ClearOptions();
- 區間_開始_年_cb.AddOptions(Main.Global.年度Options);
- 區間_開始_年_cb.value=Main.Global.年度Options.IndexOf(day2.Year.ToString());
-
- List<string> 月份 = new List<string> { "","一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月" };
- 區間_開始_月_cb.AddOptions(月份);
- 區間_開始_月_cb.value= 0;
- //===============================
- 開始時間_cb.GetComponent<TMP_Dropdown>().ClearOptions();
- 開始時間_cb.GetComponent<TMP_Dropdown>().AddOptions(Global.年度Options);
- 開始時間_cb.GetComponent<TMP_Dropdown>().value=1;
- 結束時間_cb.GetComponent<TMP_Dropdown>().ClearOptions();
- 結束時間_cb.GetComponent<TMP_Dropdown>().AddOptions(Global.年度Options);
- 結束時間_cb.GetComponent<TMP_Dropdown>().value=Global.年度Options.IndexOf(DateTime.Now.Year.ToString());
- //============================
- 電費_開始_年_cb.ClearOptions();
- 電費_開始_月_cb.ClearOptions();
- 電費_開始_小時_cb.ClearOptions();
- 電費_結束_年_cb.ClearOptions();
- 電費_結束_月_cb.ClearOptions();
- 電費_結束_小時_cb.ClearOptions();
- 電費_開始_年_cb.AddOptions(Global.年度Options);
- 電費_開始_年_cb.value=Global.年度Options.IndexOf(day2.Year.ToString());
- 電費_結束_年_cb.AddOptions(Global.年度Options);
- 電費_結束_年_cb.value=Global.年度Options.IndexOf(DateTime.Now.Year.ToString());
- 電費_開始_月_cb.AddOptions(Global.月份Options_中);
- 電費_結束_月_cb.AddOptions(Global.月份Options_中);
- 電費_開始_月_cb.value= day2.Month-1;
- 電費_結束_月_cb.value= DateTime.Now.Month-1;
- 電費_開始_小時_cb.AddOptions(Global.小時Options);
- 電費_開始_小時_cb.value=0;
- 電費_結束_小時_cb.AddOptions(Global.小時Options);
- 電費_結束_小時_cb.value=Global.小時Options.IndexOf((DateTime.Now.Hour-Global.Zoneoffset).ToString());
- Global.報表載入月份=true;
- }
- private void 建立年度表格(){
- string 電表編號= 電表編號_cb.GetComponent<TMP_Dropdown>().options[電表編號_cb.GetComponent<TMP_Dropdown>().value].text;
- DataTable ds1 = new();
- ds1.Columns.Add("年份",typeof(string));
- for(int i=0;i<=Global.月份Options_中.Count-1;i++){ds1.Columns.Add(Global.月份Options_中[i],typeof(string));}
- int 開始年 = int.Parse(開始時間_cb.GetComponent<TMP_Dropdown>().options[開始時間_cb.GetComponent<TMP_Dropdown>().value].text);
- int 結束年 =int.Parse(結束時間_cb.GetComponent<TMP_Dropdown>().options[結束時間_cb.GetComponent<TMP_Dropdown>().value].text);
- if(結束年-開始年>=0){
- for(int g=0;g<=結束年-開始年;g++){
- DataRow row = ds1.NewRow();
- row["年份"] = 開始年+g;
- string 流水號=取得流水號(電表編號);string 電表編號改="";string 電表迴路="";string 功率單位="";
- for(int i=0;i<=Global.電表資料清單.Rows.Count-1;i++){
- if(Global.電表資料清單.Rows[i][0].ToString().Contains(流水號)){
- 電表編號改 = Global.電表資料清單.Rows[i][3].ToString();
- 電表迴路 = Global.電表資料清單.Rows[i][4].ToString();
- if(Global.資料來源=="PLC"){
- 功率單位 = Global.電表資料清單.Rows[i]["圖表顯示功率"].ToString();
- }else{
- 功率單位 = Global.電表資料清單.Rows[i][9].ToString();
- }
- }
- }
- bool 有無 = 資料庫判斷((開始年+g).ToString());
- if(有無){
- List<string> 清單 = 資料庫明細((開始年+g).ToString());
- for(int j=0;j<=清單.Count-1;j++){
- string SQL語法="SELECT ";
- for(int n=0;n<=Global.月份Options_中.Count-1;n++){
- string 開始時間=(開始年+g).ToString()+(n+1).ToString().PadLeft(2,'0')+"01000000";
- string 結束時間=(開始年+g).ToString()+(n+1).ToString().PadLeft(2,'0')+"31235959";
- string 倍率;if(功率單位=="W"){倍率="1000";}else{倍率="1";}
- if(流水號!=null){
- if(Global.資料來源=="PLC"){
- SQL語法+=@"(SELECT SUM(度) AS Expr1 FROM (SELECT CONVERT(VARCHAR(10), 上傳時間, 120) AS 日期, AVG(CAST(總平均功率 AS FLOAT) * " + 倍率 + @" ) AS 度
- FROM ["+清單[j]+"].dbo.電表資料表 AS 電表資料表_"+n.ToString()+@"
- WHERE (電表編號 LIKE N'"+電表編號+ "') AND (上傳時間 BETWEEN '"+開始時間+"' AND '"+結束時間+@"')
- GROUP BY CONVERT(VARCHAR(10), 上傳時間, 120)) AS DailyAverages_"+n.ToString()+") AS 總P"+n.ToString()+",";
- }else{
- string p1,p2;if(電表迴路=="迴路1"){p1="EP1_1";p2="EP1_2";}else{p1="EP2_1";p2="EP2_2";}
- if(電表編號.Contains("小米")) {
- SQL語法+="(SELECT SUM(CAST(" + p2 + @" AS FLOAT)) AS Expr1
- FROM ["+清單[j]+"].dbo.電表資料表 AS 電表資料表_"+n.ToString()+@"
- WHERE (電表編號 LIKE N'"+電表編號改+ "') AND (上傳時間 BETWEEN '"+開始時間+"' AND '"+結束時間+@"')) AS 總P"+n.ToString()+",";
- }else{
- SQL語法+="(SELECT MAX(Expr1) - MIN(Expr1) AS Expr1_Difference FROM (SELECT CAST("+ p1 +" AS FLOAT) * 10000 + CAST("+p2+@" AS FLOAT) AS Expr1
- FROM ["+清單[j]+"].dbo.電表資料表 AS 電表資料表_"+n.ToString()+@"
- WHERE (電表編號 LIKE N'"+電表編號改+ "') AND (上傳時間 BETWEEN '"+開始時間+"' AND '"+結束時間+@"')) AS DailyAverages_"+n.ToString()+") AS 總P"+n.ToString()+",";
- }
- }
- }
- }
- SQL語法 = SQL語法[..^",".Length];
- //Debug.Log(SQL語法);
- SQL_ele_sys.SQL_載入年度電費表格_改(SQL語法);
- if(SQL_Module.dr.Read()){
- for(int i=0;i<=Global.月份Options_中.Count-1;i++){
- if(SQL_Module.dr[i].ToString()==""){
- row[Global.月份Options_中[i]]="0";
- }else{
- float data = float.Parse(SQL_Module.dr[i].ToString());
- row[Global.月份Options_中[i]]= data.ToString("#,##0.##");
- }
- }
- }else{
- for(int i=0;i<=Global.月份Options_中.Count-1;i++){row[Global.月份Options_中[i]]="0";}
- }
- }
-
- }else{
- for(int i=0;i<=Global.月份Options_中.Count-1;i++){row[Global.月份Options_中[i]]="0";}
- }
- ds1.Rows.Add(row);
- }
- //====================
- Moudle.載入表格("年度",ds1,年用電清單_tp,年用電清單_rpf,年用電清單_ct,myFont,UIsprite,年用電清單_lpf,true);
- Global.年度表格=ds1;
- 年用電_chart.RemoveData();
- List<string> xAxisValue = new();
- for(int j=1;j<=12;j++){
- xAxisValue.Add(j.ToString());
- }
- for (int h = 0; h < xAxisValue.Count; h++){
- 年用電_chart.AddXAxisData(xAxisValue[h]);
- }
- for(int i=int.Parse(開始時間_cb.GetComponent<TMP_Dropdown>().options[開始時間_cb.GetComponent<TMP_Dropdown>().value].text);i<= int.Parse(結束時間_cb.GetComponent<TMP_Dropdown>().options[結束時間_cb.GetComponent<TMP_Dropdown>().value].text);i++){
- 年用電_chart.AddSerie<Line>(i.ToString());
- for(int m=0;m<=ds1.Rows.Count-1;m++){
- List<float> yAxisValue = new();
- if(i== int.Parse(ds1.Rows[m][0].ToString())){
- for(int j=1;j<=12;j++){
- yAxisValue.Add(float.Parse(ds1.Rows[m][j].ToString()));
- }
- }
- foreach (float item in yAxisValue){
- 年用電_chart.AddData(m, item);
- }
- }
- }
- 年用電_chart.GetSerie<Line>(0).itemStyle.color=new Color(0.97f, 0.48f, 0.99f, 1f);
- foreach (var series in 年用電_chart.series){
- series.symbol.type = SymbolType.Circle;
- }
- }
- }
- private string 取得流水號(string 電表編號){
- for(int f=0;f<=Global.電表資料清單.Rows.Count-1;f++){
- if(電表編號 == Global.電表資料清單.Rows[f][1].ToString()){
- return Global.電表資料清單.Rows[f][0].ToString();
- }
- }
- return null;
- }
- private bool 資料庫判斷(string 資料庫名稱){
- for(int i=0;i<=Global.電表資料資料庫清單.Rows.Count-1;i++){if(Global.電表資料資料庫清單.Rows[i][0].ToString().Contains(資料庫名稱)){return true;}}
- return false;
- }
- private List<string> 資料庫明細(string 資料庫名稱){
- List<string> 清單 = new();
- for(int i=0;i<=Global.電表資料資料庫清單.Rows.Count-1;i++){
- if(Global.電表資料資料庫清單.Rows[i][0].ToString().Contains(資料庫名稱)){
- 清單.Add(Global.電表資料資料庫清單.Rows[i][0].ToString());
- }
- }
- return 清單;
- }
- private void 建立區間表格(){
- 讀取_pl.SetActive(true);
- string 電表編號= 電表編號_cb.GetComponent<TMP_Dropdown>().options[電表編號_cb.GetComponent<TMP_Dropdown>().value].text;
- string 流水號=取得流水號(電表編號);string 電表編號改="";string 電表迴路="";string 功率單位="";
- for(int i=0;i<=Global.電表資料清單.Rows.Count-1;i++){
- if(Global.電表資料清單.Rows[i][0].ToString().Contains(流水號)){
- 電表編號改 = Global.電表資料清單.Rows[i][3].ToString();
- 電表迴路 = Global.電表資料清單.Rows[i][4].ToString();
- if(Global.資料來源=="PLC"){
- 功率單位 = Global.電表資料清單.Rows[i]["圖表顯示功率"].ToString();
- }else{
- 功率單位 = Global.電表資料清單.Rows[i][9].ToString();
- }
- }
- }
- string p;if(電表迴路=="迴路1"){p="P1";}else{p="P2";}string 倍率;if(功率單位=="W"){倍率="1000";}else{倍率="1";}
- int N_year =int.Parse(區間_開始_年_cb.options[區間_開始_年_cb.value].text);
- int N_month = 區間_開始_月_cb.GetComponent<TMP_Dropdown>().value;
- int N_day = 區間_開始_日_cb.GetComponent<TMP_Dropdown>().value;
- List<string> TimeData = new(){"01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31"};
- Global.區間_總和=0;
- DataTable 區間表格_tabel;
- DataTable ds3 = new();
- if(Global.電能報表區間時間選擇=="小時"){
- ds3.Columns.Add("小時",typeof(string));ds3.Columns.Add("度數",typeof(string));
- }else if(Global.電能報表區間時間選擇=="日"){
- ds3.Columns.Add("日期",typeof(string));ds3.Columns.Add("度數",typeof(string));
- }else{
- ds3.Columns.Add("月份",typeof(string));ds3.Columns.Add("度數",typeof(string));
- }
- bool 有無 = 資料庫判斷(N_year.ToString());
- if(有無 && 流水號!=null){
- List<string> 清單 = 資料庫明細(N_year.ToString());
- string SQL語法="SELECT ";
- if(Global.電能報表區間時間選擇=="小時"){
- for(int n=0;n<=23;n++){
- string 開始時間=N_year.ToString().PadLeft(4,'0')+N_month.ToString().PadLeft(2,'0')+N_day.ToString().PadLeft(2,'0')+n.ToString().PadLeft(2,'0')+"0000";
- string 結束時間=N_year.ToString().PadLeft(4,'0')+N_month.ToString().PadLeft(2,'0')+N_day.ToString().PadLeft(2,'0')+n.ToString().PadLeft(2,'0')+"5959";
- if(功率單位=="W"){倍率="1000";}else{倍率="1";}
- for(int j=0;j<=清單.Count-1;j++){
- if(Global.資料來源=="PLC"){
- SQL語法+=@"(SELECT SUM(度) AS Expr1 FROM (SELECT CONVERT(VARCHAR(10), 上傳時間, 120) AS 日期, AVG(CAST(總平均功率 AS FLOAT) * " + 倍率 + @" ) AS 度
- FROM ["+清單[j]+"].dbo.電表資料表 AS 電表資料表_"+n.ToString()+@"
- WHERE (電表編號 LIKE N'"+電表編號+ "') AND (上傳時間 BETWEEN '"+開始時間+"' AND '"+結束時間+@"')
- GROUP BY CONVERT(VARCHAR(10), 上傳時間, 120)) AS DailyAverages_"+n.ToString()+") AS 總P"+n.ToString()+",";
- }else{
- string p1,p2;if(電表迴路=="迴路1"){p1="EP1_1";p2="EP1_2";}else{p1="EP2_1";p2="EP2_2";}
- if(電表編號.Contains("小米")) {
- SQL語法+="(SELECT SUM(CAST(" + p2 + @" AS FLOAT)) AS Expr1
- FROM ["+清單[j]+"].dbo.電表資料表 AS 電表資料表_"+n.ToString()+@"
- WHERE (電表編號 LIKE N'"+電表編號改+ "') AND (上傳時間 BETWEEN '"+開始時間+"' AND '"+結束時間+@"')) AS 總P_"+n.ToString().PadLeft(2,'0')+"_"+j.ToString().PadLeft(2,'0')+",";
- }else{
- SQL語法+="(SELECT MAX(Expr1) - MIN(Expr1) AS Expr1_Difference FROM (SELECT CAST("+ p1 +" AS FLOAT) * 10000 + CAST("+p2+@" AS FLOAT) AS Expr1
- FROM ["+清單[j]+"].dbo.電表資料表 AS 電表資料表_"+n.ToString()+@"
- WHERE (電表編號 LIKE N'"+電表編號改+ "') AND (上傳時間 BETWEEN '"+開始時間+"' AND '"+結束時間+@"')) AS DailyAverages_"+n.ToString()+") AS 總P_"+n.ToString().PadLeft(2,'0')+"_"+j.ToString().PadLeft(2,'0')+",";
- }
-
- }
- }
- }
- }else if(Global.電能報表區間時間選擇=="日"){
- for(int n=1;n<=DateTime.DaysInMonth(N_year,N_month);n++){
- string 開始時間=N_year.ToString()+N_month.ToString().PadLeft(2,'0')+n.ToString().PadLeft(2,'0')+"000000";
- string 結束時間=N_year.ToString()+N_month.ToString().PadLeft(2,'0')+n.ToString().PadLeft(2,'0')+"235959";
- for(int j=0;j<=清單.Count-1;j++){
- if(Global.資料來源=="PLC"){
- SQL語法+=@"(SELECT SUM(度) AS Expr1 FROM (SELECT CONVERT(VARCHAR(10), 上傳時間, 120) AS 日期, AVG(CAST(總平均功率 AS FLOAT) * "+ 倍率 + @" ) AS 度
- FROM ["+清單[j]+"].dbo.電表資料表 AS 電表資料表_"+n.ToString().PadLeft(2,'0')+"_"+j.ToString().PadLeft(2,'0')+@"
- WHERE (電表編號 LIKE N'"+電表編號+ "') AND (上傳時間 BETWEEN '"+開始時間+"' AND '"+結束時間+@"')
- GROUP BY CONVERT(VARCHAR(10), 上傳時間, 120)) AS DailyAverages_"+n.ToString().PadLeft(2,'0')+"_"+j.ToString().PadLeft(2,'0')+") AS 總P_"+n.ToString().PadLeft(2,'0')+"_"+j.ToString().PadLeft(2,'0')+",";
- }else{
- string p1,p2;if(電表迴路=="迴路1"){p1="EP1_1";p2="EP1_2";}else{p1="EP2_1";p2="EP2_2";}
- if(電表編號.Contains("小米")) {
- SQL語法+="(SELECT SUM(CAST(" + p2 + @" AS FLOAT)) AS Expr1
- FROM ["+清單[j]+"].dbo.電表資料表 AS 電表資料表_"+n.ToString()+@"
- WHERE (電表編號 LIKE N'"+電表編號改+ "') AND (上傳時間 BETWEEN '"+開始時間+"' AND '"+結束時間+@"')) AS 總P_"+n.ToString().PadLeft(2,'0')+"_"+j.ToString().PadLeft(2,'0')+",";
- }else{
- SQL語法+="(SELECT MAX(Expr1) - MIN(Expr1) AS Expr1_Difference FROM (SELECT CAST("+ p1 +" AS FLOAT) * 10000 + CAST("+p2+@" AS FLOAT) AS Expr1
- FROM ["+清單[j]+"].dbo.電表資料表 AS 電表資料表_"+n.ToString()+@"
- WHERE (電表編號 LIKE N'"+電表編號改+ "') AND (上傳時間 BETWEEN '"+開始時間+"' AND '"+結束時間+@"')) AS DailyAverages_"+n.ToString()+") AS 總P_"+n.ToString().PadLeft(2,'0')+"_"+j.ToString().PadLeft(2,'0')+",";
- }
-
- }
-
- }
- }
- }else{
- for(int n=0;n<=Global.月份Options_中.Count-1;n++){
- string 開始時間=N_year.ToString()+(n+1).ToString().PadLeft(2,'0')+"01000000";
- string 結束時間=N_year.ToString()+(n+1).ToString().PadLeft(2,'0')+"31235959";
- for(int j=0;j<=清單.Count-1;j++){
- if(Global.資料來源=="PLC"){
- SQL語法+=@"(SELECT SUM(度) AS Expr1 FROM (SELECT CONVERT(VARCHAR(10), 上傳時間, 120) AS 日期, AVG(CAST(總平均功率 AS FLOAT) * "+ 倍率 + @" ) AS 度
- FROM ["+清單[j]+"].dbo.電表資料表 AS 電表資料表_"+n.ToString().PadLeft(2,'0')+"_"+j.ToString().PadLeft(2,'0')+@"
- WHERE (電表編號 LIKE N'"+電表編號+ "') AND (上傳時間 BETWEEN '"+開始時間+"' AND '"+結束時間+@"')
- GROUP BY CONVERT(VARCHAR(10), 上傳時間, 120)) AS DailyAverages_"+n.ToString().PadLeft(2,'0')+"_"+j.ToString().PadLeft(2,'0')+") AS 總P_"+n.ToString().PadLeft(2,'0')+"_"+j.ToString().PadLeft(2,'0')+",";
- }else{
- string p1,p2;if(電表迴路=="迴路1"){p1="EP1_1";p2="EP1_2";}else{p1="EP2_1";p2="EP2_2";}
- if(電表編號.Contains("小米")) {
- SQL語法+="(SELECT SUM(CAST(" + p2 + @" AS FLOAT)) AS Expr1
- FROM ["+清單[j]+"].dbo.電表資料表 AS 電表資料表_"+n.ToString()+@"
- WHERE (電表編號 LIKE N'"+電表編號改+ "') AND (上傳時間 BETWEEN '"+開始時間+"' AND '"+結束時間+@"')) AS 總P_"+n.ToString().PadLeft(2,'0')+"_"+j.ToString().PadLeft(2,'0')+",";
- }else{
- SQL語法+="(SELECT MAX(Expr1) - MIN(Expr1) AS Expr1_Difference FROM (SELECT CAST("+ p1 +" AS FLOAT) * 10000 + CAST("+p2+@" AS FLOAT) AS Expr1,上傳時間
- FROM ["+清單[j]+"].dbo.電表資料表 AS 電表資料表_"+n.ToString()+@"
- WHERE (電表編號 LIKE N'"+電表編號改+ "') AND (上傳時間 BETWEEN '"+開始時間+"' AND '"+結束時間+@"')) AS DailyAverages_"+n.ToString()+") AS 總P_"+n.ToString().PadLeft(2,'0')+"_"+j.ToString().PadLeft(2,'0')+",";
- }
- }
- }
- }
- }
-
- SQL語法 = SQL語法[..^",".Length];
- //Debug.Log(SQL語法);
- SQL_ele_sys.SQL_載入區間表格_月_改(SQL語法);
-
- if(SQL_Module.dr.Read()){
- if(Global.電能報表區間時間選擇=="小時"){
- for(int n=0;n<=23;n++){
- DataRow row = ds3.NewRow();
- row["小時"] =n.ToString().PadLeft(2,'0');
- float 度數=0;
- for(int s=0;s<=SQL_Module.dr.FieldCount-1;s++){
- string colname = SQL_Module.dr.GetName(s);
- if(int.Parse(colname.Substring(3,2))==n){
- if(SQL_Module.dr[s].ToString()!=""){
- 度數 += float.Parse(SQL_Module.dr[s].ToString());
- }
- }
- }
- Global.區間_總和 += 度數;
- row["度數"] = 度數.ToString("#,##0.##");
- ds3.Rows.Add(row);
- }
- }else if(Global.電能報表區間時間選擇=="日"){
- for(int n=0;n<=DateTime.DaysInMonth(N_year,N_month)-1;n++){
- DataRow row = ds3.NewRow();
- row["日期"] =TimeData[n];
- float 度數=0;
- for(int s=0;s<=SQL_Module.dr.FieldCount-1;s++){
- string colname = SQL_Module.dr.GetName(s);
- if(int.Parse(colname.Substring(3,2))==n+1){
- if(SQL_Module.dr[s].ToString()!=""){
- 度數 += float.Parse(SQL_Module.dr[s].ToString());
- }
- }
- }
- Global.區間_總和 += 度數;
- row["度數"] = 度數.ToString("#,##0.##");
- ds3.Rows.Add(row);
- }
- }else{
- for(int n=0;n<=Global.月份Options_中.Count-1;n++){
- DataRow row = ds3.NewRow();
- row["月份"] = Global.月份Options_中[n];
- float 度數=0;
- for(int s=0;s<=SQL_Module.dr.FieldCount-1;s++){
- string colname = SQL_Module.dr.GetName(s);
- if(int.Parse(colname.Substring(3,2))==n){
- if(SQL_Module.dr[s].ToString()!=""){
- 度數 += float.Parse(SQL_Module.dr[s].ToString());
- }
- }
- }
- Global.區間_總和 += 度數;
- row["度數"] = 度數.ToString("#,##0.##");
- ds3.Rows.Add(row);
- }
- }
- }
- }
- 區間表格_tabel = ds3;
-
- Moudle.載入表格("區間",區間表格_tabel,度數清單_tp,度數清單_rpf,度數清單_ct,myFont,UIsprite,度數清單_lpf,false);
- 區間總和_tb.text = string.Format("{0:###,##0.##}",Global.區間_總和)+" kWh";
- Global.區間表格=區間表格_tabel;
- //===================================================
- 度數_chart.RemoveData();
-
- if(Global.電能報表區間時間選擇=="小時"){
- List<string> xAxisValue = new(){"00","01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23"};
- for (int h = 0; h < xAxisValue.Count; h++){度數_chart.AddXAxisData(xAxisValue[h]);}
- int k =0;
- 度數_chart.AddSerie<Bar>(區間_開始_日_cb.options[區間_開始_日_cb.value].text);
- List<float> yAxisValue = new();
- for(int g=0;g<=23;g++){
- if(k<=區間表格_tabel.Rows.Count-1){
- if(區間表格_tabel.Rows[k][0].ToString().PadLeft(2,'0') == xAxisValue[g]){
- yAxisValue.Add(float.Parse(區間表格_tabel.Rows[k][1].ToString()));
- k++;
- }else{
- yAxisValue.Add(0f);
- }
- }else{
- yAxisValue.Add(0f);
- }
- }
- foreach (float item in yAxisValue){
- 度數_chart.AddData(0, item);
- }
- }else if(Global.電能報表區間時間選擇=="日"){
- List<string> xAxisValue = new(){"01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31"};
- for (int h = 0; h < xAxisValue.Count; h++){度數_chart.AddXAxisData(xAxisValue[h]);}
- int k =0;
- 度數_chart.AddSerie<Bar>(區間_開始_日_cb.options[區間_開始_日_cb.value].text);
- List<float> yAxisValue = new();
- for(int g=0;g<=DateTime.DaysInMonth(N_year,N_month)-1;g++){
- if(k<=區間表格_tabel.Rows.Count-1){
- if(區間表格_tabel.Rows[k][0].ToString().PadLeft(2,'0') == xAxisValue[g]){
- yAxisValue.Add(float.Parse(區間表格_tabel.Rows[k][1].ToString()));
- k++;
- }else{
- yAxisValue.Add(0f);
- }
- }else{
- yAxisValue.Add(0f);
- }
- }
- foreach (float item in yAxisValue){
- 度數_chart.AddData(0, item);
- }
- }else{
- List<string> xAxisValue = Global.月份Options_中;
- for (int h = 0; h < xAxisValue.Count; h++){
- 度數_chart.AddXAxisData(xAxisValue[h]);
- }
- int k=0;
- 度數_chart.AddSerie<Bar>(區間_開始_年_cb.options[區間_開始_年_cb.value].text);
- List<float> yAxisValue = new();
- for(int g=0;g<=11;g++){
- if(k<=區間表格_tabel.Rows.Count-1){
- if(區間表格_tabel.Rows[k][0].ToString().PadLeft(2,'0') == xAxisValue[g]){
- yAxisValue.Add(float.Parse(區間表格_tabel.Rows[k][1].ToString()));
- k++;
- }else{
- yAxisValue.Add(0f);
- }
- }else{
- yAxisValue.Add(0f);
- }
- }
- foreach (float item in yAxisValue){
- 度數_chart.AddData(0, item);
- }
- }
- 度數_chart.GetSerie<Bar>(0).itemStyle.color=new Color(0.97f, 0.48f, 0.99f, 1f);
- foreach (var series in 度數_chart.series)
- {
- series.symbol.type = SymbolType.Circle;
- }
- Global.第一區間表格完畢=true;讀取_pl.SetActive(false);
- }
- private void 建立電費表格(){
- Global.PA7= 電表編號_cb.GetComponent<TMP_Dropdown>().options[電表編號_cb.GetComponent<TMP_Dropdown>().value].text;
- int N_year = int.Parse(電費_開始_年_cb.GetComponent<TMP_Dropdown>().options[電費_開始_年_cb.GetComponent<TMP_Dropdown>().value].text);
- int N_month = 電費_開始_月_cb.GetComponent<TMP_Dropdown>().value+1;
- int N_day = 電費_開始_日_cb.GetComponent<TMP_Dropdown>().value+1;
- int N_hour = 電費_開始_小時_cb.GetComponent<TMP_Dropdown>().value+1;
- int E_year = int.Parse(電費_結束_年_cb.GetComponent<TMP_Dropdown>().options[電費_結束_年_cb.GetComponent<TMP_Dropdown>().value].text);
- int E_month = 電費_結束_月_cb.GetComponent<TMP_Dropdown>().value+1;
- int E_day = 電費_結束_日_cb.GetComponent<TMP_Dropdown>().value+1;
- int E_hour = 電費_結束_小時_cb.GetComponent<TMP_Dropdown>().value+1;
- DateTime N_Time=new DateTime(N_year,N_month,N_day);
- DateTime E_Time=new DateTime(E_year,E_month,E_day);
- TimeSpan Totalday = E_Time-N_Time;
- Main.Global.電費_總和=0;
- DataSet ds1 = new();
- if(Main.Global.電能報表電費時間選擇=="小時"){
- Main.Global.區間_開始時間=N_year.ToString().PadLeft(4,'0')+N_month.ToString().PadLeft(2,'0')+N_day.ToString().PadLeft(2,'0')+N_hour.ToString().PadLeft(2,'0');
- Main.Global.區間_結束時間=E_year.ToString().PadLeft(4,'0')+E_month.ToString().PadLeft(2,'0')+E_day.ToString().PadLeft(2,'0')+E_hour.ToString().PadLeft(2,'0');
- SQL_ele_sys.SQL_載入電費表格_小時();
- SQL_Module.da.Fill(ds1);
- for(int j=0;j<=ds1.Tables[0].Rows.Count-1;j++){
- ds1.Tables[0].Rows[j][4] = String.Format("{0:###,##0}",Mathf.RoundToInt(Single.Parse(ds1.Tables[0].Rows[j][4].ToString())));
- ds1.Tables[0].Rows[j][5] = String.Format("{0:###,##0}",Mathf.RoundToInt(Single.Parse(ds1.Tables[0].Rows[j][4].ToString()))*1114f);
- Main.Global.電費_總和 += Mathf.RoundToInt(Single.Parse(ds1.Tables[0].Rows[j][4].ToString()))*1114;
- }
- }else if(Main.Global.電能報表電費時間選擇=="日"){
- Main.Global.區間_開始時間=N_year.ToString().PadLeft(4,'0')+N_month.ToString().PadLeft(2,'0')+N_day.ToString().PadLeft(2,'0');
- Main.Global.區間_結束時間=E_year.ToString().PadLeft(4,'0')+E_month.ToString().PadLeft(2,'0')+E_day.ToString().PadLeft(2,'0');
- SQL_ele_sys.SQL_載入電費表格_日();
- SQL_Module.da.Fill(ds1);
- for(int j=0;j<=ds1.Tables[0].Rows.Count-1;j++){
- ds1.Tables[0].Rows[j][3] = String.Format("{0:###,##0}",Mathf.RoundToInt(Single.Parse(ds1.Tables[0].Rows[j][3].ToString())));
- ds1.Tables[0].Rows[j][4] = String.Format("{0:###,##0}",Mathf.RoundToInt(Single.Parse(ds1.Tables[0].Rows[j][3].ToString()))*1114f);
- Main.Global.電費_總和 += Mathf.RoundToInt(Single.Parse(ds1.Tables[0].Rows[j][3].ToString()))*1114;
- }
- }else{
- Main.Global.區間_開始時間=N_year.ToString().PadLeft(4,'0')+N_month.ToString().PadLeft(2,'0')+N_day.ToString().PadLeft(2,'0');
- Main.Global.區間_結束時間=E_year.ToString().PadLeft(4,'0')+E_month.ToString().PadLeft(2,'0')+E_day.ToString().PadLeft(2,'0');
- //SQL_ele_sys.SQL_載入電費表格_月();
- SQL_Module.da.Fill(ds1);
- for(int j=0;j<=ds1.Tables[0].Rows.Count-1;j++){
- ds1.Tables[0].Rows[j][2] = String.Format("{0:###,###}",Mathf.RoundToInt(Single.Parse(ds1.Tables[0].Rows[j][2].ToString())*DateTime.DaysInMonth(Int32.Parse(ds1.Tables[0].Rows[j][0].ToString()),Int32.Parse(ds1.Tables[0].Rows[j][1].ToString()))*24f));
- ds1.Tables[0].Rows[j][3] = String.Format("{0:###,###}",Mathf.RoundToInt(Single.Parse(ds1.Tables[0].Rows[j][2].ToString())*DateTime.DaysInMonth(Int32.Parse(ds1.Tables[0].Rows[j][0].ToString()),Int32.Parse(ds1.Tables[0].Rows[j][1].ToString()))*24f)*1114f);
- Main.Global.電費_總和 += Mathf.RoundToInt(Single.Parse(ds1.Tables[0].Rows[j][2].ToString()))*1114;
- }
- }
- Moudle.載入表格("電費",ds1.Tables[0],電費清單_tp,電費清單_rpf,電費清單_ct,myFont,UIsprite,電費清單_lpf,false);
- 電費總和_tb.text = String.Format("{0:###,###}",Main.Global.電費_總和)+" Rp";
- Main.Global.電費表格=ds1.Tables[0];
- //===================================================
- 電費_chart.RemoveData();
-
- if(Main.Global.電能報表電費時間選擇=="小時"){
- List<string> xAxisValue = new List<string>();
- for(int h=0;h<=23;h++){xAxisValue.Add(h.ToString().PadLeft(2,'0'));電費_chart.AddXAxisData(xAxisValue[h]);}
- int k=0;
- for(int s=0;s<=Totalday.Days;s++){
- DateTime localTime = new DateTime(N_year,N_month,N_day);
- DateTime day2 = localTime.AddDays(s);
- 電費_chart.AddSerie<Line>(day2.Day.ToString());
- List<float> yAxisValue = new List<float>();
- for(int g=0;g<=23;g++){
- if(k<=ds1.Tables[0].Rows.Count-1){
- if(ds1.Tables[0].Rows[k][3].ToString().PadLeft(2,'0') == xAxisValue[g]){
- yAxisValue.Add(Single.Parse(ds1.Tables[0].Rows[k][4].ToString()));
- k++;
- }else{
- yAxisValue.Add(0f);
- }
- }else{
- yAxisValue.Add(0f);
- }
- }
- foreach (float item in yAxisValue){
- 電費_chart.AddData(s, item);
- }
- }
- }else if(Main.Global.電能報表電費時間選擇=="日"){
- List<string> xAxisValue = new List<string>(){"01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31"};
- for (int h = 0; h < xAxisValue.Count; h++){電費_chart.AddXAxisData(xAxisValue[h]);}
- int k =0;
- for(int s=0;s<=Math.Abs((E_year - N_year) * 12 + E_month - N_month);s++){
- DateTime localTime = new DateTime(N_year,N_month,N_day);
- DateTime day2 = localTime.AddMonths(s);
- 電費_chart.AddSerie<Line>(day2.Month.ToString());
- List<float> yAxisValue = new List<float>();
- for(int g=0;g<=DateTime.DaysInMonth(day2.Year,day2.Month)-1;g++){
- if(k<=ds1.Tables[0].Rows.Count-1){
- if(ds1.Tables[0].Rows[k][2].ToString().PadLeft(2,'0') == xAxisValue[g]){
- yAxisValue.Add(Single.Parse(ds1.Tables[0].Rows[k][3].ToString()));
- k++;
- }else{
- yAxisValue.Add(0f);
- }
- }else{
- yAxisValue.Add(0f);
- }
- }
- foreach (float item in yAxisValue){
- 電費_chart.AddData(s, item);
- }
- }
- }else{
- List<string> xAxisValue = new List<string>(){"01","02","03","04","05","06","07","08","09","10","11","12"};
- for (int h = 0; h < xAxisValue.Count; h++){
- 電費_chart.AddXAxisData(xAxisValue[h]);
- }
- int k=0;
- for(int s=0;s<=E_year-N_year;s++){
- DateTime localTime = new DateTime(N_year,N_month,N_day);
- DateTime day2 = localTime.AddYears(s);
- 電費_chart.AddSerie<Line>(day2.Year.ToString());
- List<float> yAxisValue = new List<float>();
- for(int g=0;g<=11;g++){
- if(k<=ds1.Tables[0].Rows.Count-1){
- if(ds1.Tables[0].Rows[k][1].ToString().PadLeft(2,'0') == xAxisValue[g]){
- yAxisValue.Add(Single.Parse(ds1.Tables[0].Rows[k][2].ToString()));
- k++;
- }else{
- yAxisValue.Add(0f);
- }
- }else{
- yAxisValue.Add(0f);
- }
- }
- foreach (float item in yAxisValue){
- 電費_chart.AddData(s, item);
- }
- }
- }
- 電費_chart.GetSerie<Line>(0).itemStyle.color=new Color(0.97f, 0.48f, 0.99f, 1f);
- foreach (var series in 電費_chart.series)
- {
- series.symbol.type = SymbolType.Circle;
- }
- }
- public void 切換區間時間(){
- if(Global.第一區間表格完畢){
- 讀取_pl.SetActive(true);
- if(區間_開始_月_cb.value==0 && 區間_開始_日_cb.value==0){
- Global.電能報表區間時間選擇="月";
- }else if(區間_開始_月_cb.value !=0 && 區間_開始_日_cb.value==0){
- Global.電能報表區間時間選擇="日";
- }else if(區間_開始_月_cb.value !=0 && 區間_開始_日_cb.value!=0){
- Global.電能報表區間時間選擇="小時";
- }
- Moudle.載入日期(2,區間_開始_年_cb,區間_開始_月_cb,區間_開始_日_cb);
- 建立區間表格();
- }
- }
- public void 切換電費時間(int num){
- if(num==1){
- 電費_開始_小時_cb.interactable=true;
- 電費_結束_小時_cb.interactable=true;
- Main.Global.電能報表電費時間選擇="小時";
- }else if(num==2){
- 電費_開始_小時_cb.interactable=false;
- 電費_結束_小時_cb.interactable=false;
- Main.Global.電能報表電費時間選擇="日";
- }else{
- 電費_開始_小時_cb.interactable=false;
- 電費_結束_小時_cb.interactable=false;
- Main.Global.電能報表電費時間選擇="月";
- }
- 建立電費表格();
- }
- public void 觸發刷新表格(int num){
- if(載入完畢){
- if(num==1){
- 建立年度表格();
- }else if(num==2){
- 建立區間表格();
- }else{
- 建立電費表格();
- }
- }
- }
- //====================================================
- public void 按鈕事件(string text){
- if(int.Parse(text[^8..])>=-1){
- int index = int.Parse(text[^8..]);
- 副電表編號_tb.text = Global.電表名稱[index].ToString();
- Global.paint_choice3=true;
- if(PlayerPrefs.HasKey("副電表編號")){
- PlayerPrefs.DeleteKey("副電表編號");
- }
- PlayerPrefs.SetString("副電表編號",副電表編號_tb.text);
- 載入副電表資料();
- 載入圖表上限();
- 切換排碳時間();
- }
- }
- public static void 按鈕事件2(GameObject item){
-
- }
-
- //=================更新數值===========================
- public static void 更新SQL成功(){
- Global.SQL成功+=1;
- }
- public static void 更新SQL失敗(){
- Global.SQL失敗+=1;
- }
- //==================================================
- public void 測試按鈕(){
- //StartCoroutine(PostRequest(0,"123"));
- }
- IEnumerator PostRequest(int num,string comm,string data){
- string Url = Global.PHP路徑;
- WWWForm form = new();
- form.AddField("comm", comm);
- form.AddField("data", data);
- UnityWebRequest www = UnityWebRequest.Post(Url, form);
- yield return www.SendWebRequest();
- if (www.result == UnityWebRequest.Result.Success){
- if(num==10){
- Debug.Log(www.downloadHandler.text);
- SQL_CommString.SQL_連線字串_正式_電控SQL(www.downloadHandler.text);
- //SQL_CommString.SQL_連線字串_電控資料SQL(www.downloadHandler.text,DateTime.Now.Year.ToString().PadLeft(4,'0'),Global.客戶代號);
- Global.PHP_Load_End_取得資料庫路徑=true;
- }else if(num==11){
- Debug.Log(www.downloadHandler.text);
- Global.電表即時路徑=www.downloadHandler.text;
- Global.PHP_Load_End_電表即時路徑=true;
- }else if(num==12){
- //Debug.Log(www.downloadHandler.text);
- if(www.downloadHandler.text=="true"){
- Global.資料來源="PLC";
- 提供的有效電能_tb.text="0 GWh";接收的有效電能_tb.text="0 GWh";提供加接收的有效電能_tb.text="0 GWh";提供減接收的有效電能_tb.text="0 GWh";
- 提供的無效電能_tb.text="0 GWh";接收的無效電能_tb.text="0 GWh";提供加接收的無效電能_tb.text="0 GWh";提供減接收的無效電能_tb.text="0 GWh";
- 提供的視在電能_tb.text="0 GWh";接收的視在電能_tb.text="0 GWh";提供加接收的視在電能_tb.text="0 GWh";提供減接收的視在電能_tb.text="0 GWh";
- }else{
- Global.資料來源="pi";
- //提供的有效電能_tb.text="0 GWh";
- 接收的有效電能_tb.text="0 GWh";提供加接收的有效電能_tb.text="0 GWh";提供減接收的有效電能_tb.text="0 GWh";
- //提供的無效電能_tb.text="0 GWh";
- 接收的無效電能_tb.text="0 GWh";提供加接收的無效電能_tb.text="0 GWh";提供減接收的無效電能_tb.text="0 GWh";
- 提供的視在電能_tb.text="0 GWh";接收的視在電能_tb.text="0 GWh";提供加接收的視在電能_tb.text="0 GWh";提供減接收的視在電能_tb.text="0 GWh";
- }
- Global.PHP_Load_End_電表資料來源=true;
- Debug.Log("資料來源:"+Global.資料來源);
-
- }
- }else{
- Debug.LogError("POST 請求失敗:" + www.error);
- if(num==0){
- Global.PHP_Report=www.error;
- }else if(num==10){
- 讀取_pl.SetActive(false);
- 彈跳_pl.SetActive(true);
- 彈跳文字_tb.text = "伺服器讀取資料異常\n請稍後在試!";
- Global.彈跳狀態="伺服器異常";
- }
-
- }
- www.Dispose();
- }
- IEnumerator PostRequest_電表資料PLC(int num,string data){
- string Url = Global.電表即時路徑;
- WWWForm form = new();
- form.AddField("data", data);
- UnityWebRequest www = UnityWebRequest.Post(Url, form);
- yield return www.SendWebRequest();
- if (www.result == UnityWebRequest.Result.Success){
- if(num==0){
- Global.PHP_Report=www.downloadHandler.text;
- Global.PHP_Load_End=true;
- }else if(num==1){
- Global.PHP_Report2=www.downloadHandler.text;
- Global.PHP_Load_End2=true;
- }else if(num==2){
- Global.PHP_Report3=www.downloadHandler.text;
- Global.PHP_Load_End3=true;
- }else if(num==3){
- Global.PHP_Report4=www.downloadHandler.text;
- Global.PHP_Load_End4=true;
- }else if(num==4){
- Global.PHP_Report5=www.downloadHandler.text;
- Global.PHP_Load_End5=true;
- }else if(num==5){
- Global.PHP_Report6=www.downloadHandler.text;
- Global.PHP_Load_End6=true;
- }else if(num==6){
- Global.PHP_Report7=www.downloadHandler.text;
- Global.PHP_Load_End7=true;
- }else if(num==7){
- Global.PHP_Report8=www.downloadHandler.text;
- Global.PHP_Load_End8=true;
- }else if(num==8){
- Global.電表異常num=int.Parse(data.Substring(6,1));
- Global.PHP_Report9=www.downloadHandler.text;
- Global.PHP_Load_End9=true;
- }else if(num==9){
- Global.PHP_Report10=www.downloadHandler.text;
- Global.PHP_Load_End10=true;
- }
- }else{
- Debug.LogError("POST 請求失敗:" + www.error);
- if(num==0){
- Global.PHP_Report=www.error;
- }
-
- }
- www.Dispose();
- }
- /*IEnumerator PostRequest_電表資料(string 電表流水號){
- string Url = Global.電表即時路徑;
- WWWForm form = new();
- form.AddField("comm", 電表流水號);
- UnityWebRequest www = UnityWebRequest.Post(Url, form);
- yield return www.SendWebRequest();
- if (www.result == UnityWebRequest.Result.Success){
- string[] dataStringArray = www.downloadHandler.text.Split(',');
- if(Global.電表即時資料字典.ContainsKey(電表流水號)){
- Global.電表即時資料字典.Remove(電表流水號);
- }
-
- Global.電表即時資料字典.Add(電表流水號,dataStringArray);
- }else{
- Debug.LogError("POST 請求失敗:" + www.error);
- Global.PHP_Report=www.error;
- }
- www.Dispose();
- }*/
- public void close_sys(){
- #if UNITY_EDITOR
- UnityEditor.EditorApplication.isPlaying = false;
- #else
- Application.Quit();
- #endif
- }
- IEnumerator AnimateText(){
- string qqq = 讀取_tb.text.ToString();
- while (true){
- yield return new WaitForSeconds(0.5f);
- if (dotCount < 3){
- loadingText += ".";
- dotCount++;
- }else{
- loadingText = "";
- dotCount = 0;
- }
- 讀取_tb.text = qqq+loadingText;
- }
- }
- //==========Mute SOund=======================
- public void Mute_Sound(Button but){
- if(Global.Ele_alarm_sound==true){
- Global.Ele_alarm_sound=false;
- but.image.sprite=控件圖片[2];
- }else{
- Global.Ele_alarm_sound=true;
- but.image.sprite=控件圖片[1];
- }
- }
- void OnApplicationFocus(bool hasFocus) {
- if (hasFocus){
- if(!詳細電表_pl.activeInHierarchy && !電能報表_pl.activeInHierarchy && !前往商店_pl.activeInHierarchy && !彈跳_pl.activeInHierarchy){
- //adMobManager.RequestBanner();
- }
- }else{
- //adMobManager.HideBanner();
- }
- }
- public void OpenWebsite(){
- string websiteURL = "https://gcm-smart.com/";
- Application.OpenURL(websiteURL);
- }
- public void 快速前往(){
- string url ="";
- #if UNITY_ANDROID
- url = "https://apps.apple.com/us/app/ics-scada-app/id6463194003";
- #elif UNITY_IPHONE
- url = "https://apps.apple.com/us/app/ics-scada-app/id6463194003";
- #else
- url = "https://apps.apple.com/us/app/ics-scada-app/id6463194003";
- #endif
- Application.OpenURL(url);
- }
- public void 截圖(){
- string fileName = string.Format("{0}/screenshot_{1}.png", Application.persistentDataPath, System.DateTime.Now.ToString("yyyyMMdd_HHmmss"));
- ScreenCapture.CaptureScreenshot(fileName);
- }
- public static class Global{
- public static string 客戶代號="GCM",年="2024",區間_開始時間,區間_結束時間,系統選擇,資料來源="PLC",彈跳狀態,PHP路徑="",電表即時路徑="";
- public static string 主電表上次編號,Vavg,Iavg,Etol,副電表上次編號,PHP_Report_PLC_ALARM_DATA,主電表上次異常內容,副電表上次異常內容,幣別="台幣",試算_開始時間,試算_結束時間;
- public static string 電能報表區間時間選擇,電能報表電費時間選擇,Vab,Vbc,Vca,NVab,NVbc,NVca,Ia,Ib,Ic,NIa,NIb,NIc;
- public static string PHP_Report,PHP_Report2,PHP_Report3,PHP_Report4,PHP_Report5,PHP_Report6,PHP_Report7,PHP_Report8,PHP_Report9,PHP_Report10;
- public static string PHP_Report_資料庫路徑,PHP_Report_電表即時路徑,AWS憑證路徑, AWS訂閱主題;
- public static bool PHP_Load_End=false,PHP_Load_End2=false,PHP_Load_End3=false,PHP_Load_End4=false,PHP_Load_End5=false,PHP_Load_End6=false,PHP_Load_End7=false,PHP_Load_End8=false,PHP_Load_End9=false,PHP_Load_End10=false;
- public static bool PHP_Load_End_取得資料庫路徑=false,PHP_Load_End_電表即時路徑=false,PHP_Load_End_電表資料來源=false;
- public static int 功率因素數值=98,副功率因素數值=98,詳細功率因素數值=98,上次功率因素數值=0,上次副功率因素數值=0,Zoneoffset=0,上次更新天數,SQL成功,SQL失敗,電表數量=0,COSdata,上次詳細功率因素數值=0;
- public static int 系統主題=2,電表ID1,電表ID2,消防異常page=1,上次消防異常ID,電費_總和,詳細電表電表ID,電表異常num,上限電表ID1,上限電表ID2;
- public static float deleytime=0f,區間_總和=0f;
- public static bool 初次載入主畫面=true,SQL_S=false,內網=false,載入電表名稱Option=true,paint_choice=true,paint_choice2=true,paint_choice3=true;
- public static bool 副電表有異常=false,Ele_alarm_sound=true,風格切換_cos主=false,風格切換_cos副=false;
- public static bool 載入電表名稱=false,載入年度=false,載入月份=false,報表載入月份=false,長案=false,第一區間表格完畢=false;
- public static string[] 電表名稱 = new string[999];
- public static string[] 電表功率單位 = new string[999];
- public static string[] 圖表最大電壓 = new string[999];
- public static string[] 圖表最大電流 = new string[999];
- public static string[] 圖表最大功率 = new string[999];
- public static string[] 目前開始月份 = new string[50],上次開始月份 = new string[50],目前結束月份 = new string[50],上次結束月份 = new string[50];
- public static string[] 目前開始年度 = new string[50],上次開始年度 = new string[50],目前結束年度 = new string[50],上次結束年度 = new string[50];
- public static List<string> 電表名稱Option = new List<string>();
- public static List<string> 年度Options = new List<string> { "2023","2024","2025","2026","2027","2028","2029","2030","2031","2032","2033","2034","2035","2036","2037","2038","2039","2040","2041","2042","2043","2044","2045","2046","2047","2048","2049","2050","2051"};
- public static List<string> 月份Options_中 = new List<string> { "一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月" };
- public static List<string> 小時Options = new List<string> { "","00","01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23"};
- public static TimeSpan 運行天數;
- public static DataTable 電表資料清單,電表資料資料庫清單,年度表格,區間表格,電費表格,排碳係數表,客戶名稱表,排碳數值表;
- //public static List<string> 電表資料資料庫名稱 = new() {};
- //==========系統語言轉換必要變數================
- public static string[] 系統語言資料;
- //public static Dictionary<string, string> 系統語言字典 = new Dictionary<string, string>(){ };
- public static Dictionary<string, string[]> 電表即時資料字典 = new (){ };
- //============================================
- public static string PA, PB, PC, PD, PE, PF, PG, PH, PI, PJ, PK, PA1, PA2, PA3, PA4, PA5, PA6, PA9, PA20, PA7;
- public static string[] 表頭 = new string[50];
-
- public static bool[] 電表異常BL = new bool[100],連點 = new bool[5];
- public static Sprite[] Wnum;public static Sprite sprite_check,sprite_box;
- }
- }
|