在线不卡日本ⅴ一区v二区_精品一区二区中文字幕_天堂v在线视频_亚洲五月天婷婷中文网站

  • <menu id="lky3g"></menu>
  • <style id="lky3g"></style>
    <pre id="lky3g"><tt id="lky3g"></tt></pre>

    Qt編寫物聯(lián)網(wǎng)管理平臺34-地圖按鈕

    Qt編寫物聯(lián)網(wǎng)管理平臺34-地圖按鈕

    一、前言

    地圖按鈕很常見,這也是用戶給錢就干的一個模塊。設(shè)備現(xiàn)場提供了對應(yīng)的地圖文件,其實就是圖片文件,做的簡單點就是直接CAD圖紙轉(zhuǎn)成jpg,做的精致點就是搞了3D風(fēng)格的立體樣式圖片,其實還是圖片,并不是真正的3D,看起來像是3D的感覺。很多人看到效果圖都來問這個3D怎么實現(xiàn)的,真正的3D實現(xiàn)都非常復(fù)雜,需要懂opengl,網(wǎng)頁上用的是webgl,當(dāng)然也有不少的輪子可以直接使用。

    地圖按鈕就是一個終端傳感器作為一個按鈕點,分布在對應(yīng)的圖片文件上,其實就是父類設(shè)置為label,label顯示對應(yīng)的圖片。圖片大小的算法,目前采用的當(dāng)前分辨率計算,當(dāng)前分辨率減去上下左右的尺寸就是圖片應(yīng)該的尺寸,拉伸填充顯示,所以要求用戶提供的圖片最好按照現(xiàn)場電腦的分辨率比例來設(shè)置,這樣不會顯得拉伸變形,后期這一塊需要改進算法,難點就是按鈕在設(shè)置界面的相對位置不好計算,除非是繪制上去的。

    地圖按鈕幾個特色功能:

    • 從內(nèi)存中而不是文件取圖片顯示,響應(yīng)速度微秒級別。
    • 報警自動切換到對應(yīng)的地圖。
    • 不同狀態(tài)不同顏色顯示,報警紅色或者黃色閃爍。
    • 按鈕位置在編輯狀態(tài)下,任意拖動,自動保存。
    • 提供縮略圖導(dǎo)航,可手動切換。
    • 在線狀態(tài)顯示對應(yīng)的值和單位符號,離線狀態(tài)顯示位置編號。

    二、功能特點

    2.1 軟件模塊

  • 設(shè)備監(jiān)控模塊,包括數(shù)據(jù)監(jiān)控(表格形式展示)、設(shè)備面板(面板形式展示)、地圖監(jiān)控(地圖形式展示)、曲線監(jiān)控(曲線形式展示)。
  • 數(shù)據(jù)查詢模塊,包括報警記錄、運行記錄、操作記錄。
  • 系統(tǒng)設(shè)置模塊,包括基本設(shè)置、端口管理、控制器管理、探測器管理、報警聯(lián)動、類型設(shè)置等。
  • 其他設(shè)置模塊,包括用戶管理、地圖管理、位置調(diào)整、組態(tài)設(shè)計、設(shè)備調(diào)試等。
  • 2.2 基礎(chǔ)功能

  • 設(shè)備數(shù)據(jù)采集,支持串口、網(wǎng)絡(luò),串口可設(shè)置串口號、波特率,網(wǎng)絡(luò)可設(shè)置IP地址、通訊端口。
  • 每個端口支持采集周期時間,默認(rèn)1秒鐘一個設(shè)備。
  • 支持設(shè)置通訊超時次數(shù),默認(rèn)3次。
  • 支持最大重連時間,用于重新讀取離線的設(shè)備。
  • 控制器信息,能夠添加控制器名稱,選擇控制器地址、控制器型號,設(shè)置該控制器下面的探測器數(shù)量。
  • 探測器信息,能夠添加位號、探測器型號、氣體種類、氣體符號、高報值、低報值、緩沖值、清零值、是否啟用、報警聲音、背景地圖、存儲周期、數(shù)值換算小數(shù)點位數(shù)、報警延時時間、報警的類型(HH,LL,HL)等。
  • 類型管理可配置控制器型號、探測器型號、氣體種類、氣體符號等。
  • 地圖支持導(dǎo)入和刪除,所有的探測器在地圖上的位置可自由拖動保存。
  • 端口信息、控制器信息、探測器信息、類型信息、用戶信息等,都支持導(dǎo)入、導(dǎo)出、導(dǎo)出到excel、打印。
  • 運行記錄、報警記錄、操作記錄,都支持多條件組合查詢,比如時間段、控制器、探測器等,所有記錄支持導(dǎo)出到excel/pdf和打印。
  • 運行記錄、報警記錄、操作記錄都可刪除指定時間范圍內(nèi)的數(shù)據(jù)。
  • 系統(tǒng)設(shè)置可選擇對應(yīng)表最大保存記錄數(shù),自動清理早期數(shù)據(jù),留出足夠的空間存儲重要的數(shù)據(jù)。
  • 報警短信轉(zhuǎn)發(fā),支持多個接收手機號碼,可設(shè)定發(fā)送間隔,比如即時發(fā)送或者6個小時發(fā)送一次所有的報警信息,短信內(nèi)容過長,自動拆分多條短信。
  • 報警郵件轉(zhuǎn)發(fā),支持多個接收郵箱,可設(shè)定發(fā)送間隔,比如即時發(fā)送或者6個小時發(fā)送一次所有的報警信息,支持附件發(fā)送。
  • 設(shè)置軟件的中文標(biāo)題、英文標(biāo)題、logo路徑、版權(quán)所有等。
  • 開關(guān)設(shè)置開機運行、報警聲音、自動登錄、記住密碼等。
  • 報警聲音可設(shè)置播放次數(shù),界面風(fēng)格樣式提供18套皮膚文件選擇。
  • 用戶管理,包括用戶權(quán)限配置,不同用戶可以有不同模塊的權(quán)限。
  • 用戶登錄和用戶退出,可以記住密碼和自動登錄,超過三次報錯提示并關(guān)閉程序。
  • 四種監(jiān)控模式,設(shè)備面板監(jiān)控、地圖監(jiān)控、表格數(shù)據(jù)監(jiān)控、曲線數(shù)據(jù)監(jiān)控,可自由切換,四種模式下都實時展示采集到的數(shù)據(jù),報警閃爍等。
  • 報警繼電器聯(lián)動,一個位號可以跨串口聯(lián)動多個模塊和繼電器號,支持多對多。
  • 2.3 特色功能

  • 通信協(xié)議支持modbus_com、modbus_tcp_rtu,后期拓展mqtt等協(xié)議。
  • 數(shù)據(jù)源除了真實的硬件設(shè)備采集,還可選數(shù)據(jù)庫采集,這樣用戶可以安排其他程序員比如java程序員將前端采集好的數(shù)據(jù)放到數(shù)據(jù)庫,本系統(tǒng)直接從數(shù)據(jù)庫采集即可。數(shù)據(jù)庫采集模式可以作為通用的系統(tǒng)使用,更適合多人多系統(tǒng)協(xié)作。
  • 智能跳過超時的設(shè)備,加快對在線設(shè)備的采集速度,當(dāng)設(shè)備數(shù)量很多的時候尤其有用。
  • 對智能跳過的超時的設(shè)備,在設(shè)定的重連時間自動采集一次,以便探測設(shè)備是否又重新上線。
  • 每個探測器可控是否啟用,不啟用則不會采集,也不會在界面顯示,相當(dāng)于運行階段臨時關(guān)閉。
  • 探測器可設(shè)置緩沖值和報警延時時間,在該值附近波動產(chǎn)生的報警,不計入報警,只有持續(xù)處于報警值且超過報警延時時間才算真正報警,這樣可以規(guī)避很多波動導(dǎo)致的誤報。
  • 探測器可設(shè)置存儲周期,按照設(shè)定的時間來存儲一條運行記錄,可以按照重要程度對重要性高的設(shè)定存儲周期短一些,不重要的設(shè)定大一些,這樣可以節(jié)省不少的存儲空間,也保證了重要的數(shù)據(jù)及時存儲。
  • 探測器可設(shè)置清零值,在一些高精度高靈敏的設(shè)備可能出廠的時候默認(rèn)值未必是0,需要設(shè)定清零值來表示初始值。
  • 探測器可設(shè)置小數(shù)點,用于計算后的真實數(shù)據(jù)控制小數(shù)點點位顯示,相當(dāng)于除以10、除以100、除以1000,這樣大部分的探測器數(shù)據(jù)直接通過小數(shù)點位設(shè)置控制真實換算后的值,極個別的需要特殊轉(zhuǎn)換的可以在通信協(xié)議中約定。
  • 探測器報警的類型支持多種,有些設(shè)備是高于某個值高報,低于某個值低報,而有些設(shè)備是在最小值最大值范圍內(nèi)是高報,低于最小值低報,高于最大值正常。這樣可以分情況處理,涵蓋各種報警類型。
  • 原創(chuàng)數(shù)據(jù)導(dǎo)入、導(dǎo)出、打印機制,跨平臺不依賴任何組件,瞬間導(dǎo)出數(shù)據(jù)。
  • 導(dǎo)出到excel的記錄支持所有excel、wps等表格文件版本,不依賴excel等軟件。
  • 高報顏色、低報顏色、正常顏色、默認(rèn)值顏色等,都可以自由設(shè)置。
  • 支持云端數(shù)據(jù)同步,將本地采集到的數(shù)據(jù)實時同步到云端。
  • 支持網(wǎng)絡(luò)轉(zhuǎn)發(fā)和網(wǎng)絡(luò)接收,網(wǎng)絡(luò)接收開啟后,軟件從udp接收數(shù)據(jù)進行解析。網(wǎng)絡(luò)轉(zhuǎn)發(fā)支持多個目標(biāo)IP,這樣就實現(xiàn)了本地采集的軟件,自由將數(shù)據(jù)轉(zhuǎn)到客戶端,隨時查看采集到的數(shù)據(jù)。
  • 自動記住用戶最后停留的界面以及其他配置信息,重啟后自動應(yīng)用。
  • 報警自動切換到對應(yīng)的地圖,探測器按鈕閃爍,表格數(shù)據(jù)對應(yīng)顏色顯示。
  • 雙擊探測器圖標(biāo),彈出對應(yīng)探測器詳細(xì)信息,可以根據(jù)需要定制回控操作。
  • 數(shù)據(jù)庫支持多種,包括sqlite、mysql、sqlserver、postgresql、oracle、人大金倉等。
  • 本地設(shè)備采集到的數(shù)據(jù)實時上傳到云端,以便手機APP或者web等其他方式提取。
  • 自帶設(shè)備模擬工具,支持不同型號的多個設(shè)備數(shù)據(jù)模擬,同時還帶數(shù)據(jù)庫數(shù)據(jù)模擬,以便在沒有設(shè)備的時候測試數(shù)據(jù)。
  • 標(biāo)準(zhǔn)modbus協(xié)議,各種控制器類型、探測器類型、種類、符號等全部自定義,非常靈活和強大,通信協(xié)議示例數(shù)據(jù)非常完整,通用各種modbus協(xié)議系統(tǒng),適用于各種應(yīng)用場景接入。
  • 同時集成了串口通信、網(wǎng)絡(luò)通信、數(shù)據(jù)庫通信、數(shù)據(jù)導(dǎo)入導(dǎo)出打印、通信協(xié)議解析、界面UI、全局換膚等眾多組件和知識點,非常適合新手入門和進階。
  • 支持xp、win7、win10、、win11、linux、mac、各種國產(chǎn)系統(tǒng)(UOS、中標(biāo)麒麟、銀河麒麟等)、嵌入式linux等系統(tǒng)。
  • 注釋完整,項目結(jié)構(gòu)清晰,超級詳細(xì)完整的使用開發(fā)手冊,精確到每個代碼文件的功能說明,不斷持續(xù)迭代版本。
  • 三、體驗地址

  • 國內(nèi)站點:https://gitee.com/feiyangqingyun
  • 國際站點:https://github.com/feiyangqingyun
  • 個人主頁:https://blog.csdn.net/feiyangqingyun
  • 知乎主頁:https://www.zhihu.com/people/feiyangqingyun
  • 產(chǎn)品主頁: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。
  • 文章導(dǎo)航:https://qtchina.blog.csdn.net/article/details/121330922
  • 四、效果圖

    五、相關(guān)代碼

    void DeviceHelper::initDeviceButton(QLabel *label){ if (labMap == NULL) { return; } //先清空原來的 bool isMain = (labMap == label); if (isMain) { qDeleteAll(btns); btns.clear(); } else { qDeleteAll(btns2); btns2.clear(); } for (int i = 0; i setButtonStyle(DeviceButton::ButtonStyle_Msg2); btn->resize(AppData::DeviceWidth, AppData::DeviceHeight); btn->setText(QString(“%1”).arg(DbData::NodeInfo_PositionID.at(i))); btn->setButtonColor(isMain ? DeviceButton::ButtonColor_Black : DeviceButton::ButtonColor_Green); btn->setCanMove(!isMain); //設(shè)置弱屬性 btn->setProperty(“nodeID”, DbData::NodeInfo_NodeID.at(i)); btn->setProperty(“positionID”, DbData::NodeInfo_PositionID.at(i)); btn->setProperty(“deviceName”, DbData::NodeInfo_DeviceName.at(i)); btn->setProperty(“nodeName”, DbData::NodeInfo_NodeName.at(i)); btn->setProperty(“nodeAddr”, DbData::NodeInfo_NodeAddr.at(i)); btn->setProperty(“nodeType”, DbData::NodeInfo_NodeType.at(i)); btn->setProperty(“nodeSign”, DbData::NodeInfo_NodeSign.at(i)); btn->setProperty(“nodeImage”, DbData::NodeInfo_NodeImage.at(i)); //設(shè)置位置 int x = DbData::NodeInfo_NodeX.at(i); int y = DbData::NodeInfo_NodeY.at(i); btn->move(x, y); if (isMain) { btns << btn; QObject::connect(btn, SIGNAL(doubleClicked()), AppEvent::Instance(), SLOT(slot_doubleClicked())); } else { btns2 height(); QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing); //繪制背景圖 QImage img(imgName); if (!img.isNull()) { img = img.scaled(width, height, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); painter.drawImage(0, 0, img); } //計算字體 QFont font; font.setPixelSize(height * 0.37); font.setBold(true); //自動計算文字繪制區(qū)域,繪制防區(qū)號 QRectF rect = this->rect(); if (buttonStyle == ButtonStyle_Police) { double y = (30 * height / 60); rect = QRectF(0, y, width, height – y); } else if (buttonStyle == ButtonStyle_Bubble) { double y = (8 * height / 60); rect = QRectF(0, 0, width, height – y); } else if (buttonStyle == ButtonStyle_Bubble2) { double y = (13 * height / 60); rect = QRectF(0, 0, width, height – y); font.setPixelSize(width * 0.33); } else if (buttonStyle == ButtonStyle_Msg) { double y = (17 * height / 60); rect = QRectF(0, 0, width, height – y); } else if (buttonStyle == ButtonStyle_Msg2) { double y = (17 * height / 60); rect = QRectF(0, 0, width, height – y); } //繪制文字標(biāo)識 painter.setFont(font); painter.setPen(Qt::white); painter.drawText(rect, Qt::AlignCenter, text);}bool DeviceButton::eventFilter(QObject *watched, QEvent *event){ //識別鼠標(biāo) 按下+移動+松開+雙擊 等事件 QMouseEvent *mouseEvent = static_cast(event); if (event->type() == QEvent::MouseButtonPress) { //限定鼠標(biāo)左鍵 if (mouseEvent->button() == Qt::LeftButton) { lastPoint = mouseEvent->pos(); isPressed = true; emit clicked(); return true; } } else if (event->type() == QEvent::MouseMove) { //允許拖動并且鼠標(biāo)按下準(zhǔn)備拖動 if (canMove && isPressed) { int dx = mouseEvent->pos().x() – lastPoint.x(); int dy = mouseEvent->pos().y() – lastPoint.y(); this->move(this->x() + dx, this->y() + dy); return true; } } else if (event->type() == QEvent::MouseButtonRelease) { isPressed = false; } else if (event->type() == QEvent::MouseButtonDblClick) { emit doubleClicked(); } return QWidget::eventFilter(watched, event);}

    鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場,版權(quán)歸原作者所有,如有侵權(quán)請聯(lián)系管理員(admin#wlmqw.com)刪除。
    用戶投稿
    上一篇 2022年6月20日 06:21
    下一篇 2022年6月20日 06:22

    相關(guān)推薦

    • 《寶可夢朱紫》3天銷量破千萬(寶可夢朱紫3天銷量破千萬了)

      開局只能選一種御三家,不能同時擁有全部這是游戲設(shè)計的劇情不能更改的。 已經(jīng)偷跑了寶可夢朱紫將于11月18日正式發(fā)售,而目前已有實體卡帶偷跑御三家進化型終于在泄露了,新葉喵站了起來,…

      2022年11月27日
    • 計算機網(wǎng)絡(luò)技術(shù)論文(計算機網(wǎng)絡(luò)技術(shù)論文七千字)

      今天小編給各位分享計算機網(wǎng)絡(luò)技術(shù)論文的知識,其中也會對計算機網(wǎng)絡(luò)技術(shù)論文七千字進行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧! 計算機網(wǎng)絡(luò)方面的論文3000字…

      2022年11月26日
    • 5+3疫情防控從哪天開始算(遼寧疫情防控最新政策)

      最近有關(guān)國內(nèi)各地的疫情大家也都有在持續(xù)關(guān)注,目前國內(nèi)各地疫情隔離時間也根據(jù)二十條防控措施有了新的調(diào)整。那么,5+3疫情防控從哪天開始算?對于密接的5+3隔離時間計算大家還是比較關(guān)心…

      2022年11月25日
    • 藍碼怎么變綠碼需要幾天(藍碼怎么變綠碼需要幾天)

      大家都知道健康碼的顏色有紅碼、綠碼、黃碼,近日湖南健康碼上線“藍碼”,不少小伙伴發(fā)現(xiàn)自己健康碼變藍了,都想趕緊恢復(fù)綠碼,那么藍碼怎么變綠碼需要幾天?下面小編為大家?guī)硭{碼變綠碼需要…

      2022年11月25日
    • 拼多多百億補貼預(yù)售一般多久發(fā)貨(拼多多百億補貼預(yù)售)

      拼多多里面有很多優(yōu)惠活動,其中百億補貼活動非?;鸨?,一些里面的東西價格比別的平臺便宜,質(zhì)量也有保障,還有預(yù)售的活動,那么拼多多百億補貼預(yù)售一般多久發(fā)貨?下面小編為大家?guī)砥炊喽喟賰|…

      2022年11月25日
    • 北京疫情多久能解除封控(北京疫情還要多久結(jié)束)

      最近一段時間北京疫情形勢備受關(guān)注,馬上就要到年底了,不少人想要去北京辦事,。都非常關(guān)注當(dāng)?shù)匾咔橄嚓P(guān)政策,那么 北京疫情多久能解除封控?北京疫情什么時候恢復(fù)正常生活?下面小編為大家?guī)А?/p>

      2022年11月25日
    • 什么是推廣cpa一篇文章帶你看懂CPA推廣渠道

      CPA渠道 CPA指的是按照指定的行為結(jié)算,可以是搜索,可以是注冊,可以是激活,可以是搜索下載激活,可以是綁卡,實名認(rèn)證,可以是付費,可以是瀏覽等等。甲乙雙方可以根據(jù)自己的情況來定…

      2022年11月25日
    • 抖音直播帶貨有哪些方法技巧(抖音直播帶貨有哪些痛點)

      如今抖音這個短視頻的變現(xiàn)能力越來越突顯了,尤其是在平臺上開通直播,更具有超強的帶貨屬性,已經(jīng)有越來越多的普通人加入到其中了。不過直播帶貨雖然很火,但是也不是每個人都能做好的,那么在…

      2022年11月24日
    • 前三季度,市場規(guī)模超過五萬億元 信息消費展現(xiàn)蓬勃生機

      家居企業(yè)個性化全屋定制系統(tǒng),備受消費者青睞;主打?qū)I(yè)電競的新款高性能便攜式計算機,銷量表現(xiàn)創(chuàng)新高;物流企業(yè)推出數(shù)智化供應(yīng)鏈興農(nóng)服務(wù)項目,助力優(yōu)質(zhì)農(nóng)產(chǎn)品出深山…… 不久前,工信部發(fā)布…

      2022年11月24日
    • 明查|美國新冠后遺癥患者中有16%癥狀嚴(yán)重以致無法工作?

      點擊進入澎湃新聞全球事實核查平臺 速覽 – 網(wǎng)傳數(shù)據(jù)比例無權(quán)威信源佐證,該比例有可能是結(jié)合了美國疾病防控中心和布魯金斯學(xué)會的數(shù)據(jù)得出,但這兩個機構(gòu)的調(diào)研目的和樣本都不同…

      2022年11月24日

    聯(lián)系我們

    聯(lián)系郵箱:admin#wlmqw.com
    工作時間:周一至周五,10:30-18:30,節(jié)假日休息