、前言
一個用戶登錄界面,是一個完整的應用系統,尤其是客戶端系統必備的一個功能模塊,傳統的登錄處理一般都是和本地的用戶信息進行比對,而現代的登錄系統一般是發送請求到服務器進行驗證,無論何種方式,都是需要去用戶信息表找到對應的用戶信息,取出密碼進行驗證,再多一點的話就是順帶把對應的用戶權限也拉過去。
為了使得多個系統共用一套用戶登錄用戶退出的界面和代碼,特意提煉出了共同點,作為通用的用戶登錄退出模塊,放在core_form模塊中,這樣后期有更新或者BUG修復,只需要更改這個通用模塊就行,陸續寫過很多系統,都設計到用戶登錄退出處理邏輯,追求極致簡單原則,羅列下通用的用戶登錄退出需要的功能點。
- 下拉選擇用戶名稱。
- 密碼框密文顯示。
- 提供自動登錄復選框,等用戶登錄成功以后記住,下次啟動后自動以最后的用戶信息登錄。
- 提供記住密碼復選框,等用戶登錄成功以后記住,下次啟動后自動自動填入該用戶的密碼。
- 軟件標題自定義,可外部參數傳入。
- 密碼為空校驗。
- 三次密碼錯誤提示檢驗。
- 內置超級密碼,防止管理員忘記密碼。
- 登錄日志記錄存儲到數據庫。
- 密碼不區分大小寫。
- 用戶驗證通過,啟動主窗體。
- 用戶退出后發出全局退出事件信號通知退出,以便收到該信號的地方做處理。
二、功能特點
2.1 軟件模塊
- 設備監控模塊,包括數據監控(表格形式展示)、設備面板(面板形式展示)、地圖監控(地圖形式展示)、曲線監控(曲線形式展示)。
- 數據查詢模塊,包括報警記錄、運行記錄、操作記錄。
- 系統設置模塊,包括基本設置、端口管理、控制器管理、探測器管理、報警聯動、類型設置等。
- 其他設置模塊,包括用戶管理、地圖管理、位置調整、組態設計、設備調試等。
2.2 基礎功能
- 設備數據采集,支持串口、網絡,串口可設置串口號、波特率,網絡可設置IP地址、通訊端口。
- 每個端口支持采集周期時間,默認1秒鐘一個設備。
- 支持設置通訊超時次數,默認3次。
- 支持最大重連時間,用于重新讀取離線的設備。
- 控制器信息,能夠添加控制器名稱,選擇控制器地址、控制器型號,設置該控制器下面的探測器數量。
- 探測器信息,能夠添加位號、探測器型號、氣體種類、氣體符號、高報值、低報值、緩沖值、清零值、是否啟用、報警聲音、背景地圖、存儲周期、數值換算小數點位數、報警延時時間、報警的類型(HH,LL,HL)等。
- 類型管理可配置控制器型號、探測器型號、氣體種類、氣體符號等。
- 地圖支持導入和刪除,所有的探測器在地圖上的位置可自由拖動保存。
- 端口信息、控制器信息、探測器信息、類型信息、用戶信息等,都支持導入、導出、導出到excel、打印。
- 運行記錄、報警記錄、操作記錄,都支持多條件組合查詢,比如時間段、控制器、探測器等,所有記錄支持導出到excel/pdf和打印。
- 運行記錄、報警記錄、操作記錄都可刪除指定時間范圍內的數據。
- 系統設置可選擇對應表最大保存記錄數,自動清理早期數據,留出足夠的空間存儲重要的數據。
- 報警短信轉發,支持多個接收手機號碼,可設定發送間隔,比如即時發送或者6個小時發送一次所有的報警信息,短信內容過長,自動拆分多條短信。
- 報警郵件轉發,支持多個接收郵箱,可設定發送間隔,比如即時發送或者6個小時發送一次所有的報警信息,支持附件發送。
- 設置軟件的中文標題、英文標題、logo路徑、版權所有等。
- 開關設置開機運行、報警聲音、自動登錄、記住密碼等。
- 報警聲音可設置播放次數,界面風格樣式提供18套皮膚文件選擇。
- 用戶管理,包括用戶權限配置,不同用戶可以有不同模塊的權限。
- 用戶登錄和用戶退出,可以記住密碼和自動登錄,超過三次報錯提示并關閉程序。
- 四種監控模式,設備面板監控、地圖監控、表格數據監控、曲線數據監控,可自由切換,四種模式下都實時展示采集到的數據,報警閃爍等。
- 報警繼電器聯動,一個位號可以跨串口聯動多個模塊和繼電器號,支持多對多。
2.3 特色功能
- 通信協議支持modbus_com、modbus_tcp_rtu,后期拓展mqtt等協議。
- 數據源除了真實的硬件設備采集,還可選數據庫采集,這樣用戶可以安排其他程序員比如java程序員將前端采集好的數據放到數據庫,本系統直接從數據庫采集即可。數據庫采集模式可以作為通用的系統使用,更適合多人多系統協作。
- 智能跳過超時的設備,加快對在線設備的采集速度,當設備數量很多的時候尤其有用。
- 對智能跳過的超時的設備,在設定的重連時間自動采集一次,以便探測設備是否又重新上線。
- 每個探測器可控是否啟用,不啟用則不會采集,也不會在界面顯示,相當于運行階段臨時關閉。
- 探測器可設置緩沖值和報警延時時間,在該值附近波動產生的報警,不計入報警,只有持續處于報警值且超過報警延時時間才算真正報警,這樣可以規避很多波動導致的誤報。
- 探測器可設置存儲周期,按照設定的時間來存儲一條運行記錄,可以按照重要程度對重要性高的設定存儲周期短一些,不重要的設定大一些,這樣可以節省不少的存儲空間,也保證了重要的數據及時存儲。
- 探測器可設置清零值,在一些高精度高靈敏的設備可能出廠的時候默認值未必是0,需要設定清零值來表示初始值。
- 探測器可設置小數點,用于計算后的真實數據控制小數點點位顯示,相當于除以10、除以100、除以1000,這樣大部分的探測器數據直接通過小數點位設置控制真實換算后的值,極個別的需要特殊轉換的可以在通信協議中約定。
- 探測器報警的類型支持多種,有些設備是高于某個值高報,低于某個值低報,而有些設備是在最小值最大值范圍內是高報,低于最小值低報,高于最大值正常。這樣可以分情況處理,涵蓋各種報警類型。
- 原創數據導入、導出、打印機制,跨平臺不依賴任何組件,瞬間導出數據。
- 導出到excel的記錄支持所有excel、wps等表格文件版本,不依賴excel等軟件。
- 高報顏色、低報顏色、正常顏色、默認值顏色等,都可以自由設置。
- 支持云端數據同步,將本地采集到的數據實時同步到云端。
- 支持網絡轉發和網絡接收,網絡接收開啟后,軟件從udp接收數據進行解析。網絡轉發支持多個目標IP,這樣就實現了本地采集的軟件,自由將數據轉到客戶端,隨時查看采集到的數據。
- 自動記住用戶最后停留的界面以及其他配置信息,重啟后自動應用。
- 報警自動切換到對應的地圖,探測器按鈕閃爍,表格數據對應顏色顯示。
- 雙擊探測器圖標,彈出對應探測器詳細信息,可以根據需要定制回控操作。
- 數據庫支持多種,包括sqlite、mysql、sqlserver、postgresql、oracle、人大金倉等。
- 本地設備采集到的數據實時上傳到云端,以便手機APP或者web等其他方式提取。
- 自帶設備模擬工具,支持不同型號的多個設備數據模擬,同時還帶數據庫數據模擬,以便在沒有設備的時候測試數據。
- 標準modbus協議,各種控制器類型、探測器類型、種類、符號等全部自定義,非常靈活和強大,通信協議示例數據非常完整,通用各種modbus協議系統,適用于各種應用場景接入。
- 同時集成了串口通信、網絡通信、數據庫通信、數據導入導出打印、通信協議解析、界面UI、全局換膚等眾多組件和知識點,非常適合新手入門和進階。
- 支持xp、win7、win10、、win11、linux、mac、各種國產系統(UOS、中標麒麟、銀河麒麟等)、嵌入式linux等系統。
- 注釋完整,項目結構清晰,超級詳細完整的使用開發手冊,精確到每個代碼文件的功能說明,不斷持續迭代版本。
三、體驗地址
- 國內站點:https://gitee.com/feiyangqingyun
- 國際站點:https://github.com/feiyangqingyun
- 個人主頁:https://blog.csdn.net/feiyangqingyun
- 知乎主頁:https://www.zhihu.com/people/feiyangqingyun
- 產品主頁:https://blog.csdn.net/feiyangqingyun/article/details/97565652
- 在線文檔:https://feiyangqingyun.gitee.io/qwidgetdemo/iotsystem/
- 體驗地址:https://pan.baidu.com/s/1ZxG-oyUKe286LPMPxOrO2A 提取碼:o05q 文件名:bin_iotsystem.zip。
- 文章導航:https://qtchina.blog.csdn.net/article/details/121330922
四、效果圖
五、相關代碼
如果你使用的是 Android 5.0 以上的原生系統,那你很有可能遇到過這樣一個現象:狀態欄右上方的移動信號或者 Wi-Fi 指示圖標旁莫名出現一個奇怪的感嘆號。進入 WLAN 設置后還會發現,已經連接的無線網絡下方出現「已連接,但不能連接到互聯網」這樣的提示。
為什么會有這種情況?我可以忽略它嗎?
從 Android 5.0 開始,當系統連接網絡時,系統模塊 NetworkMonitor 就會向 Google 的一個特定網址(http://www.google.com/generate_204) 發送數據請求來判斷網絡狀態,如果成功就會返回一個特定的值表示設備可以連接到互聯網。這個「特定的網址」在國內是無法正常訪問的,感嘆號因而也就出現了。
在感嘆號存在的狀態下,即便是我們連接了某個 Wi-Fi ,手機仍然可能使用移動數據進行網絡傳輸,這會導致在不知不覺間產生超額的流量費。同時,由于系統會不斷的嘗試聯網,手機待機時間也會受到不小的影響。
換言之,我們一定不能對此置之不理。
有哪些解決方法?
遇到「感嘆號」問題目前有三種解決方法。
1. 通過應用解決
- 方法:我們曾為大家介紹了一款名為Portal Server的 App 來解決這個煩惱,采用完全圖形化界面,通過輸入可以使用的「generate_204」網址就行。
- 缺點:設備需要 Root,且應用作者提供的地址并不穩定。
2. 完全關閉網絡檢查服務
- 方法:無需 Root,使用 ADB 命令關閉系統網絡檢查服務:
adb shell settings put global captive_portal_detection_enabled 0
- 缺點:當你使用公共 Wi-Fi 這種需要使用 portal 驗證的網絡時,因為網絡檢查被關閉,系統在訪問 portal 驗證頁面時無法返回正確的值,最終導致無法完成驗證和上網。
3. 替換網絡檢查服務的網址
最好的辦法還是使用 ADB 命令的形式,將驗證服務的網址(http://www.google.com/generate_204)替換成一個可以正常訪問的 「generate_204」網址,這種方法無需 Root,而且不影響 WiFi 連接問題,下面是具體的操作方法。
操作步驟
1. 首先,需要下載 ADB 工具包到電腦系統的根目錄。
2. 進入工具包目錄,按住 Shift 鍵,同時在文件夾空白處點擊鼠標右鍵,選擇「在此處打開命令窗口」,打開命令控制程序。
3. 將手機通過 USB 連接至電腦,打開手機的 USB 調試選項,并選擇在「允許使用此臺電腦進行調試」中選擇確定。
4. 經過測試,目前國內滿足要求的可訪問網址有不少(動手能力強的也可以自己建立,但不再本次的討論范圍之內),下面提供兩個訪問較為穩定的,選擇任何一個網址均可:
- connect.rom.miui.com/generate_204
- www.v2ex.com/generate_204
5. 回到電腦桌面,在命令控制程序中,輸入 adb shell
。如果出現$
標志說明 adb 服務已經開啟,輸入 exit 退出命令。
6. 直接輸入以下命令并回車(任選其一):
adb shell settings put global captive_portal_server connect.rom.miui.com
adb shell settings put global captive_portal_server www.v2ex.com
7. 完成修改后可選擇手動重啟手機,或在當前命令控制程序窗口下,輸入 adb shell reboot
進行重啟,重啟完畢之后你會發現惱人的感嘆號已經沒有了!
注:以上修改方法重啟不會失效,但如果刷機或者系統重置后,則需要重新操作一遍。
如何還原
雖然這個情況很少發生,不過如果希望還原回去,也可以通過 adb 命令的形式,連接手機后在命令控制程序中輸入以下兩段命令:
adb shell settings delete global captive_portal_server
adb shell settings put global captive_portal_detection_enabled 1
之后手動重啟手機或者輸入 adb shell reboot
命令重啟后即可還原。