2012-09-23 95 views
0

我正忙於在python中編寫一個簡單的程序,該程序從串口獲取信息並向用戶顯示此圖。 (它基本上是連接到串口的能量計,python程序應該顯示電壓,電流和功率曲線。)從互聯網訪問的Python程序

但是,我真的想讓這個程序可以從互聯網上訪問(例如:一個打開遠程計算機上的網絡瀏覽器,主機PC的IP地址和某些端口中的類型,以及您所面臨的電壓,電流和功率曲線)。

我對Python和整個面向對象的編程語言都很陌生。我的大部分編程都是在C#中完成的。

是否有一種相對簡單的方法來將一個python程序「移植」到某種形式的可訪問web的程序/腳本中。可能通過將它與在主機上運行的Apache服務器結合使用?

任何幫助,這將不勝感激。即使它只是指向正確的方向。

非常感謝。

編輯:我現在已經玩弄CGI和Apache,我發現可以在Apache中執行.py文件作爲cgi-binaries。然而,當我試圖執行我的完整python程序(包含Qt表單和許多按鈕和組合框)時,頁面只是一直加載,直到它顯示服務器超時。這是因爲我使用CGI而不是FastCGI?還是不可能將Qt框架「移植」到HTML?我應該用HTML代碼創建一個新的GUI框架嗎?

非常感謝。

+0

歡迎堆棧溢出!我很抱歉,但我認爲你的問題太模糊,過於寬泛,無法在SO上回答;請參閱[FAQ#dontask]。如果您有更具體的問題(最好涉及一些代碼),請隨時提問! –

+1

提示可能不必使用全面的Apache,Python有一個內置的web服務器,可以執行cgi二進制文件並可能覆蓋您的需求; http://effbot.org/librarybook/cgihttpserver.htm –

+0

與WSGI一樣,它有一個內置的HTTP服務器。 – bortzmeyer

回答

1

有很多基於Python的web開發框架,例如Django:https://www.djangoproject.com。您可以使用Django在Python中開發一個網站,並從其中一個視圖調用您的腳本。你可以使用Apache部署Django項目:https://docs.djangoproject.com/en/1.2/howto/deployment/modwsgi/

+0

學習Django(一個能夠完成複雜網站的大框架)似乎是一種像他所建議的那樣簡單的程序。 – bortzmeyer

+0

我認爲運行基本的Django項目並不難。另外,它已經爲您完成了所有認證/登錄業務。 – piokuc

2

最簡單的方法(不影響計算機的安全性)是讓python腳本讀取串行數據並使用matplotlib每分鐘創建一對圖表,並將它們寫入Web服務器可以找到它們的位置例如PNG文件。

然後,您需要創建一個網頁來顯示圖形。爲了安全起見,最好使用靜態頁面引用腳本創建的PNG文件。也許把一些javastript有頁面periodically refresh itself

最後但並非最不重要的,你需要一個網絡服務器。我建議nginx爲這樣的靜態內容提供服務。

+0

感謝您的回覆。我正在考慮在Apache中使用Django來運行python腳本,並且正如您所提到的那樣,允許它生成圖表,用戶可以定期刷新以獲取儀表的最新讀數。然而,最後一個問題是,是否可以將我的gui用於Python腳本(使用Qt製作)到web框架中。或者我應該構建一個完整的新的GUI在HTML? – Jeandre

+0

您可能需要再次使用HTML編寫佈局。 –

-1

如果您可以在Google App Engine中運行Python,爲什麼要運行和維護自己的網絡服務器?它很容易,免費,幾乎100%可靠。 Google負責管理網絡服務器,您只需構建一個Python應用程序。 串口客戶端可以將數據發送到您的App引擎應用程序。

這裏是一個教程,讓你開始:http://aleatory.clientsideweb.net/2012/08/16/financial-charts-app-engine-tutorial-web-scraping/

這裏是將數據發送到App Engine的Python的例子:http://aleatory.clientsideweb.net/2012/08/16/financial-charts-app-engine-tutorial-web-scraping/

+0

您應該詳細描述難題:Google App Engine實例如何訪問其串行端口? – bortzmeyer

+0

也許我的回答並不清楚。但是提問的ser1692282告訴我們,他已經在構建一個Python應用程序來讀取串行數據。這個Python應用程序必須將數據發送到應用程序引擎(請參閱我的答案)。以下是一個示例:https://groups.google.com/forum/?fromgroups=#!topic/google-appengine-python/yzKimNqs4Es – voscausa