2016-01-08 18 views
8

Prima di tutto, sono molto nuovo a C# e Json.Come tracciare un grafico a linee usando l'array Json usando webrequest

Volevo tracciare un grafico dai dati della tabella mysql in una GUI C#. Ho fatto un file PHP per selezionare i dati da tabella di database mysql e rilancia i contenuti selezionati in serie JSON utilizzando echo json_encode(array("result"=>$result))

qui è il mio PHP:

<?php 
define('HOST','*********************'); 
define('USER','*********************'); 
define('PASS','*********************'); 
define('DB','***********************'); 

if($_SERVER['REQUEST_METHOD']=='GET'){ 

$start = $_GET['start']; 
$ending = $_GET['ending']; 
} 

$con = mysqli_connect(HOST,USER,PASS,DB); 


$sql = "SELECT * FROM table WHERE date_time BETWEEN '$start' and '$ending'" ; 
$res = mysqli_query($con,$sql); 

$result = array(); 
while($row = mysqli_fetch_array($res)){ 
array_push($result,array('id'=>$row[0],'p_pairs'=>$row[1],'temp1'=>$row[2] ,'temp2'=>$row[3],'temp3'=>$row[4],'temp4'=>$row[5],'temp5'=>$row[6],'avg_current'=>$row[7],'avg_voltage'=>$row[8],'kw'=>$row[9],'kwh'=>$row[10])); 
} 

echo json_encode(array($result)); 

mysqli_close($con); 

?> 

utilizzando il link, posso vedere la matrice JSON chiaramente tra il divario datetime. Tutto quello che volevo è tracciare il grafico dei valori di temperatura (temp1, temp2, ..), i valori delle coppie di p e altri con il date_time in un grafico a linee per leggere i dati storici.

Tutto quello che provo quando accedo alla pagina PHP è:

[[{"id":"1","p_pairs":"0000-00-00 00:00:00","temp1":"2","temp2":"100","temp3":"100","temp4":"100","temp5":"100","avg_current":"100","avg_voltage":"300","kw":"300","kwh":"300"},{"id":"2","p_pairs":"0000-00-00 00:00:00","temp1":"45","temp2":"105","temp3":"230","temp4":"100","temp5":"2500","avg_current":"570","avg_voltage":"100","kw":"250","kwh":"1000"},{"id":"3","p_pairs":"2016-01-07 21:10:00","temp1":"45","temp2":"105","temp3":"230","temp4":"100","temp5":"2500","avg_current":"570","avg_voltage":"100","kw":"250","kwh":"1000"},{"id":"4","p_pairs":"2016-01-07 21:10:00","temp1":"45","temp2":"105","temp3":"230","temp4":"100","temp5":"2500","avg_current":"570","avg_voltage":"100","kw":"250","kwh":"1000"}]] 

NOTA: alcuni datetime è impostato come predefinito qui. Volevo solo mostrare questo array. Quello corretto sarà perfetto per tracciare il grafico.

Posso portare questi array in una stringa utilizzando una richiesta Web da C#. utilizzando il codice sotto:

 System.Net.WebClient wc = new System.Net.WebClient(); 
     byte[] raw = wc.DownloadData("url to php"); 

     string webData = System.Text.Encoding.UTF8.GetString(raw); 

Sarà un grande aiuto Se qualcuno mi può aiutare a tracciare questo in un grafico a linee come date_time Vs temp1, temp2 o p_pairs e come quella in C# GUI ...

Questo sarà di grande aiuto per me. Grazie in anticipo.

+0

Per iniziare, è necessario utilizzare JSON.net di Newtonsoft per convertire Webdata in un oggetto JSON utilizzabile. Consulta alcuni tutorial su questo. Cosa vuoi generare? Stai cercando di generare un jpg o png con un grafico su di esso? O è questo per la visualizzazione in un sito Web? – Nikhil

+0

Grazie per la risposta. Volevo tracciarli nella mia UI Winform. Ciò è stato fatto dopo la deserializzazione e l'approvvigionamento in un tavolo. Il mio attuale problema è che ho sei tabelle identiche come quelle sopra menzionate. Volevo tracciare il grafico qualcosa come data_time vs temp1 (tabella1), tamp1 (tabella2), tamp1 (tabella3), tamp1 (tabella4), tamp1 (tabella5), tamp1 (tabella6) come grafico a linee. Tutte le tabelle sono nello stesso database e le strutture sono identiche. – Althaf

+1

Sembra che tu abbia solo bisogno di una libreria di grafici. Dai un'occhiata a https://code.msdn.microsoft.com/mschart. Infragistics, DevExpress e altri produttori di widget hanno altri strumenti per creare grafici. – Nikhil

risposta

1

In primo luogo ottenere una classe da cui lavorare. È possibile creare dinamicamente una classe da JSON

Se sei felice di avere una dipendenza sull'assemblea System.Web.Helpers, quindi è possibile utilizzare la classe JSON:

dynamic data = Json.Decode(json); 

E 'incluso con l'MVC framework come download aggiuntivo al framework .NET 4. Oppure usa quello di NewtonSoft.

successivo ottiene un componente Grafico: https://msdn.microsoft.com/en-us/library/dd489237.aspx e rilegare i vostri dati al grafico

Problemi correlati