|
本來(lái)這個(gè)文字應(yīng)該屬于其他類別的,但是因?yàn)槭且郧皽囟蕊@示器制作的延續(xù),所以放在電子制作類別了。
先看看這個(gè)溫度顯示報(bào)警裝置是如何一步一步的增強(qiáng)的吧。先是M8作出了單機(jī)電路,無(wú)通訊功能,然后增加了一個(gè)串口電路,是單向的,不能雙向通訊,同時(shí)用C#開(kāi)發(fā)了一個(gè)windows程序,用于接收顯示溫度數(shù)據(jù)。到此為止,其實(shí)是能實(shí)現(xiàn)遠(yuǎn)程顯示功能了,只是需要這個(gè)裝置運(yùn)行在服務(wù)器上,且能從外網(wǎng)訪問(wèn)到,否則失去了實(shí)用價(jià)值,而要查看數(shù)值,只要遠(yuǎn)程登錄服務(wù)器,查看那個(gè)WIDOWS程序的顯示界面即可。
但是DIY是無(wú)止境的,通過(guò)遠(yuǎn)程登錄才能查看顯然不夠地道,這次要實(shí)現(xiàn)的是通過(guò)web網(wǎng)站顯示數(shù)值!
考慮了一下,有兩個(gè)方案。
1.直接由windows程序輸出html代碼,這個(gè)方法簡(jiǎn)單,但是靈活性欠佳,要改界面就要改windows程序,而且不能實(shí)現(xiàn)無(wú)刷更新。
2.windows程序輸出xml數(shù)據(jù),使用asp程序提取出數(shù)據(jù),然后顯示在頁(yè)面上,這個(gè)方法有一定靈活性,但是需要IIS開(kāi)通ASP服務(wù),而這樣不是很安全,而且也不能無(wú)刷更新。
3.windows程序輸出xml數(shù)據(jù),這個(gè)數(shù)據(jù)用xslt格式化后用ajax程序讀出,實(shí)現(xiàn)無(wú)刷更新。
為了服務(wù)器安全運(yùn)行,決定采用3號(hào)方案。
實(shí)測(cè)表明,用ajax讀出的xml數(shù)據(jù)是不能加載xslt的,也就是說(shuō),xml不能被格式化;后下載了一個(gè)xslt的jQuery插件,好像也不太行;再后來(lái)查看了有關(guān)資料,知道jQuery的ajax方法載入xml后,是可以像普通頁(yè)面一樣,用$取得節(jié)點(diǎn)字段的,這些字段讀取后用javascript寫(xiě)入頁(yè)面位置即可。
方案3取得成功,xml數(shù)據(jù)成功呈現(xiàn)在一個(gè)靜態(tài)頁(yè)面上,然后是加上1s定時(shí)ajax程序,實(shí)現(xiàn)了頁(yè)面的無(wú)刷更新。
因?yàn)閤ml數(shù)據(jù)是由windows寫(xiě)入磁盤(pán)文件的,如何這個(gè)程序掛了的話,xml是不會(huì)有任何異常的,為了便于遠(yuǎn)程知悉這個(gè)通訊程序的工作狀態(tài),xml又增加了一個(gè)時(shí)間戳字段,這樣如果windows程序掛了的話,這個(gè)時(shí)間戳就不會(huì)實(shí)時(shí)更新,這樣遠(yuǎn)程端就可以輕易覺(jué)察出來(lái)了。
遠(yuǎn)程顯示頁(yè)面制作成功后,再將這個(gè)xml及html所在目錄加入某個(gè)網(wǎng)站的虛擬目錄就完成了!
|
|