温度ロガー3
グラフ画像はIHttpHandler実装クラスでビットマップを作成しています。
ashxファイルのメイン部分はこんなカンジです。
public class DayGraphHandler : IHttpHandler { ..略.. public void ProcessRequest (HttpContext context) { ..略.. using( Bitmap image = service.GetLogImageByDate( loggerId, date ) ) using( MemoryStream mem = new MemoryStream() ) { context.Response.ContentType = "image/png"; image.Save( mem, ImageFormat.Png ); mem.WriteTo( context.Response.OutputStream ); context.Response.End(); } } }
画像はJava Scriptを使用して、5分毎に再取得するようにしています。
imgのsrcを入れ替える場合、同じurlだと再取得が行われないので以下の様な小細工をしています。
また、下記のscriptはaspxファイルに記述していますが、Java Scriptは
function updateImage() { imgurl = document.getElementById( "ctl00_ContentPlaceHolder1_Image" ).src; start = imgurl.lastIndexOf( "_dummy" ); if ( start != -1 ) { last = imgurl.indexOf( "&", start ); temp = "" if ( last != -1 ) { temp = imgurl.substring( last , imgurl.length ) } imgurl = imgurl.substring( 0, start - 1 ) + temp; } i = imgurl.indexOf( imgurl, "?" ); if ( i == -1 ) { imgurl = imgurl + "?" } else { imgurl = imgurl + "&" } dummy = new Date(); imgurl = imgurl + "_dummy=" + dummy.getTime(); document.getElementById( "ctl00_ContentPlaceHolder1_Image" ).src = imgurl; } setInterval( "updateImage()", 300000 );