整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          Qt編寫地圖綜合應用4-儀表盤

          Qt編寫地圖綜合應用4-儀表盤

          # 一、前言

          儀表盤在很多汽車和物聯網相關的系統中很常用,最直觀的其實就是汽車儀表盤,這個以前主要是機械的儀表,現在逐步改成了智能的帶屏帶操作系統的儀表,這樣美觀性和拓展性功能性大大增強了,上了操作系統的話,除了基本的儀表指示以外,還可以聽歌導航接電話等,這應該也是目前汽車領域發展的一個大趨勢,Qt在這方面還單獨搞了個3D studio設計的,可以讓美工直接設計好效果圖,設置一些動畫效果之類的,可以說這些年Qt公司也在不斷謀求新的發展,探索新的機遇,找到新的增長點和突破口。

          用Qt開發儀表盤控件非常方便,無論是用widget的painter還是qml,尤其是qml,內置的那些動畫效果非常適合做這類的應用,這次不討論如何用qt開發儀表盤,而是直接用echart內置的儀表盤控件,做的也挺好的,不知道echart這么小的一個文件,還能有如此多的效果,連儀表盤都有,這個非常震驚,儀表盤的使用在官網非常詳細,與Qt的結合難點可能就在如何交互,Qt中無論是webkit也還還是webengine,都提供了runJavaScript或者evaluateJavaScript函數類來執行js函數,只需要在html文件寫好對應的js文件函數就可以直接觸發執行,比如設置儀表盤的角度我這里寫的是setGaugeValue(value),則只需要runJavaScript或者evaluateJavaScript參數傳入 setGaugeValue(88)這個即可,只需要根據界面上的滾動條或者滑塊的值動態改變setGaugeValue的參數即可。

          ## 二、功能特點

          1. 同時支持閃爍點圖、遷徙圖、區域地圖、儀表盤等。

          2. 可以設置標題、提示信息、背景顏色、文字顏色、線條顏色、區域顏色等各種顏色。

          3. 可設置城市的名稱、值、經緯度 集合。

          4. 可設置地圖的放大倍數、是否允許鼠標滾輪縮放。

          5. 內置世界地圖、全國地圖、省份地圖、地區地圖,可以精確到縣,所有地圖全部離線使用。

          6. 內置了各省市json數據文件轉js文件功能,如有數據更新自行轉換即可,支持單個文件轉換和一鍵轉換所有文件。

          7. 內置了從json文件或者js文件獲取該區域的所有名稱和經緯度信息集合的功能,可以通過該方法獲取到信息用來顯示。

          8. 依賴瀏覽器組件顯示地圖,提供的demo支持webkit、webengine、ie 三種方式加載網頁。

          9. 拓展性極強,可以依葫蘆畫瓢自行增加各種精美的echarts組件,做出牛逼的效果。

          10. 內置的儀表盤組件提供交互功能,demo演示中包含了對應的代碼。

          11. 函數接口友好和統一,使用簡單方便,就一個類。

          12. 支持任意Qt版本、任意系統、任意編譯器。

          ## 三、體驗地址

          國內站點:[https://gitee.com/feiyangqingyun](https://gitee.com/feiyangqingyun)

          國際站點:[https://github.com/feiyangqingyun](https://github.com/feiyangqingyun)

          ## 四、效果圖



          ## 五、相關代碼

          線制”是指儀表供電和標準信號傳輸采用的導線數。幾線制的稱謂,是在兩線制變送器誕生后才有的。這是電子放大器在儀表中廣泛應用的結果, 放大的本質就是一種能量轉換過程,這就離不開供電。因此最先出現的是四線制的變送器,即兩根線負責電源的供應,另外兩根線負責輸出被轉換放大的信號(如電壓、電流等)。
          ◆AC220V供電的儀表一定是四線制
          四線制信號的儀表是指:供電回路和信號回路各自獨立,采用隔離電路分開,用于隔離的4-20mA標準信號。所以信號一定是隔離的,通常不接地。電源可以是DC24V,也可以是AC220V。
          儀表線制yunrun.com.cn/tech/2312.html
          ◆當用兩線制提供的功率不足以給儀表供電時,采用三線制方式,信號為4-20mA標準信號
          三線制的三根線是:一根為電源線(通常為DC24V+),一根為信號線,一根為電源與信號的公共線,用于電壓參考點和電流回路。


          ◆非4-20mA標準信號不稱為兩線制
          二線制是兩根導線供電的同時傳輸4-20mA標準信號。非此標準信號不稱為兩線制。兩線制最少供電能力為:4mA×24V-接收儀表功耗-線路損耗。


          ◆在實際現場操作中,四線制,三線制,二線制主要供電方式是?
          ①四線制供電大多為AC220V,也有供電為DC24V的
          四線制變送器如下圖所示,其供電大多為AC220V,也有供電為DC24V的。輸出信號有4-20mA/負載電阻為250Ω,或者0-10mA/負載電阻為0-1.5KΩ;有的還有mA和mV信號,但負載電阻或輸入電阻,因輸出電路形式不同而數值有所不同。


          ②三線制供電大多為DC24V。
          三線制變送器如下圖所示,所謂三線制就是電源正端用一根線,信號輸出正端用一根線,電源負端和信號負端共用一根線。其供電大多為DC24V,輸出信號有4-20mADC,負載電阻為250Ω或者0-10mA,負載電阻為0-1.5KΩ;有的還有mA和mV信號,但負載電阻或輸入電阻,因輸出電路形式不同而數值有所不同。


          ③二線制供電為DC24V
          二線制變送器如下圖所示,其供電為DC24V,輸出信號為DC4-20mA,負載電阻為250Ω,24V電源的負線電位最低,它就是信號公共線,對于智能變送器還可在4-20mA信號上加載HART協議的FSK鍵控信號。
          由于各種變送器的工作原理和結構不同,從而出現了不同的產品,也就決定了變送器的兩線制、三線制、四線制接線形式。


          ◆如何選用四線制、三線制、二線制儀表
          ①功率大于10W,精度要求較高時,一般選用四線制儀表。
          四線制儀表的應用,最早始于DDZ-II型電動單元組合儀表的出現,供電為AC220V,后續輸出信號為0-10mA的四線制變送器得到了廣泛的應用。由于轉換電路復雜、功耗大等原因,現在很多儀表仍優先選用四線制,最常見的像科氏力質量流量計和電磁流量計,到現在還是四線制,因為質量流量計需要振動功耗,電磁流量計需要勵磁功耗,2個表的功率都到了10W以上,所以得四線制。


          ②減少非安全電壓供電,一般選用三線制儀表。
          三線制的應用,為了滿足儀表需要的供電功率設計,把變送器的供電由AC220V改為低壓直流供電,如電源從DC24V電源箱取用,減少非安全電壓供電。這樣就有了三線制的變送器產品。


          ③功率較小且經濟實惠,一般選用二線制。
          二線制儀表的應用,采用4-20mA信號,現場儀表就可實現二線制,現在國內二線制變送器的產品應用非常廣泛。


          綜上所述,對于用戶而言,選型時應根據本單位的實際情況,如信號制的統一、防爆要求、接收設備的要求、投資等問題來綜合考慮選擇。
          昌暉儀表要指出的是三線制和四線制變送器輸出的4-20mA信號,由于其輸出電路原理及結構與二線制的是不一樣的,因此在應用中其輸出負端能否和24V電源的負線相接能否共地這是要注意的,必要時可采取隔離措施,如用配電器、安全柵等,以便和其它儀表共電、共地及避免附加干擾的產生。

          者: 俊欣

          來源:關于數據分析與可視化

          今天小編來為大家安利另外一個用于繪制可視化圖表的Python框架,名叫Dash,建立在Flask、Plotly.js以及React.js的基礎之上,在創建之出的目的是為了幫助前端知識匱乏的數據分析人員,以純Python編程的方式快速制作出交互特性強的數據可視化大屏,在經過多年的迭代發展,如今不僅僅可以用來開發在線數據可視化作品,即便是輕量級的數據儀表盤、BI應用甚至是博客或者是常規的網站都隨處可見Dash框架的影子,今天小編就先來介紹一下該框架的一些基礎知識,并且來制作一個簡單的數據可視化大屏。

          Dash框架中的兩個基本概念

          我們先來了解一下Dash框架中的兩個基本概念

          • Layout
          • Callbacks

          Layout顧名思義就是用來設計可視化大屏的外觀和布局,添加一些例如下拉框、單選框、復選框、輸入框、文本框、滑動條等組件,其中Dash框架對HTML標簽也進行了進一步的封裝,使得我們直接可以通過Python代碼來生成和設計每一個網頁所需要的元素,例如

          <div>
              <h1>Hello World!!</h1>
              <div>
                  <p>Dash converts Python classes into HTML</p>
              </div>
          </div>
          

          我們轉化成DashPython結構就是

          html.Div([
              html.H1('Hello Dash'),
              html.Div([
                  html.P('Dash converts Python classes into HTML'),
              ])
          ])
          

          Callbacks也就是回調函數,基本上是以裝飾器的形式來體現的,實現前后端異步通信的交互,例如我們在點擊按鈕或者下拉框之后出現的功能就是通過回調函數來實現的。

          安裝和導入模塊

          在導入模塊之前,我們先用pip命令來進行安裝,

          ! pip install dash   
          ! pip install dash-html-components
          ! pip install dash-core-components                           
          ! pip install plotly
          

          然后我們導入這些剛剛安裝完的模塊,其中dash-html-components用來生成HTML標簽,dash-core-components模塊用來生成例如下拉框、輸入框等組件,這里我們還需要用到plotly模塊,因為我們需要用到的數據來自該模塊,里面是一眾互聯網公司過去一段時間中股價的走勢

          import dash
          import dash_html_components as html
          import dash_core_components as dcc
          import plotly.graph_objects as go
          import plotly.express as px
          

          讀取數據并且繪制折線圖

          那么我們讀取數據并且用plotly來繪制折線圖,代碼如下

          app=dash.Dash()   #實例化Dash
          df=px.data.stocks() #讀取股票數據 
          
          def stock_prices():
              # 繪制折線圖
              fig=go.Figure([go.Scatter(x=df['date'], y=df['AAPL'],
                                          line=dict(color='firebrick', width=4), name='Apple')
                               ])
              fig.update_layout(title='股價隨著時間的變幻',
                                xaxis_title='日期',
                                yaxis_title='價格'
                                )
              return fig
              
          app.layout=html.Div(id='parent', children=[
              html.H1(id='H1', children='Dash 案例一', style={'textAlign': 'center',
                                                           'marginTop': 40, 'marginBottom': 40}),
              dcc.Graph(id='line_plot', figure=stock_prices())
          ])
          
          if __name__=='__main__':
              app.run_server()
          

          我們點擊運行之后會按照提示將url復制到瀏覽器當中便可以看到出來的結果了,如下所示

          從代碼的邏輯上來看,我們通過Dash框架中的Div方法來進行頁面的布局,其中有參數id來指定網頁中的元素,以及style參數來進行樣式的設計,最后我們將會指出來的圖表放在dcc.Graph()函數當中。

          添置一個下拉框

          然后我們再添置一個下拉框,當我們點擊這個下拉框的時候,可是根據我們的選擇展示不同公司的股價,代碼如下

          dcc.Dropdown(id='dropdown',
                       options=[
                           {'label': '谷歌', 'value': 'GOOG'},
                           {'label': '蘋果', 'value': 'AAPL'},
                           {'label': '亞馬遜', 'value': 'AMZN'},
                       ],
                       value='GOOG'),
          

          output

          options參數中的label對應的是下拉框中的各個標簽,而value對應的是DataFrame當中的列名

          df.head()
          

          output

          添加回調函數

          最后我們將下拉框和繪制折線圖的函數給連接起來,我們點擊下拉框選中不同的選項的時候,折線圖也會相應的產生變化,

          @app.callback(Output(component_id='bar_plot', component_property='figure'),
                        [Input(component_id='dropdown', component_property='value')])
          def graph_update(dropdown_value):
              print(dropdown_value)
              # Function for creating line chart showing Google stock prices over time
              fig=go.Figure([go.Scatter(x=df['date'], y=df['{}'.format(dropdown_value)],
                                          line=dict(color='firebrick', width=4))
                               ])
              fig.update_layout(title='股價隨著時間的變幻',
                                xaxis_title='日期',
                                yaxis_title='價格'
                                )
              return fig
          

          我們看到callback()方法中指定輸入和輸出的媒介,其中Input參數,里面的component_id對應的是下拉框的id也就是dropdown,而Output參數,當中的component_id對應的是折線圖的id也就是bar_plot,我們來看一下最后出來的結果如下

          最后,全部的代碼如下所示


          主站蜘蛛池模板: 国产成人精品一区在线| 国产精品一区三区| 一区二区三区四区在线视频| 国产精品一区二区在线观看| 精品国产一区二区三区免费| 无码国产精品久久一区免费 | 亚洲国产精品一区| 亚洲国产高清在线一区二区三区 | 精品中文字幕一区在线| 国产精品成人一区无码| 一区二区三区在线播放视频| 久久精品视频一区二区三区| 国产精品一区二区久久乐下载| 一区二区三区美女视频| 精品在线一区二区| 亚洲色婷婷一区二区三区| 制服丝袜一区在线| 一区视频免费观看| 国产一区二区三区亚洲综合| 亚欧在线精品免费观看一区| 亚洲高清偷拍一区二区三区 | 高清精品一区二区三区一区| 91秒拍国产福利一区| 国产在线一区二区三区av| 精品视频一区二区观看| 国产主播一区二区| 国产一区在线播放| 人妻无码久久一区二区三区免费| 亚洲av日韩综合一区久热| 天海翼一区二区三区高清视频| 国产成人片视频一区二区| 蜜桃臀无码内射一区二区三区| 午夜爽爽性刺激一区二区视频| 国产在线精品一区二区夜色| 国产精品无码一区二区三区不卡 | 国产高清在线精品一区小说| 美女免费视频一区二区三区| 国产一区二区三区免费看| AV无码精品一区二区三区宅噜噜| 一区二区三区福利视频| 一区二区三区四区无限乱码|