整合營銷服務商

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

          免費咨詢熱線:

          使用JavaScript訪問設備硬件的新標準

          ebHID,WebNFC和WebUSB開辟了新的途徑,可以與用戶用于Web應用程序的設備硬件進行交互。

          你是否遇到過需要訪問用戶的設備硬件,并只為該功能實現一個桌面應用程序?你并不孤單。直到最近,實現上述目的的方式還很牽強和麻煩。然而,隨著最近Chrome DevTools的更新,使用JavaScript與硬件對話已經成為現實。

          因此,在本文中,我將介紹三個新的JavaScript API,即WebHID,WebNFC和WebUSB可用于設備硬件訪問。讓我們分別看一下這些技術。

          1.什么是WebHID?

          在將HID(人機界面設備)集成到軟件中時,開發人員面臨的一個主要問題是,軟件應適應大量的品種;舊設備、新設備、常見的型號、不常見的型號等。

          WebHID通過提供一個在JavaScript中實現設備特定邏輯的API來解決這個問題。

          基本上,如果你想用任天堂Switch的Joy-Con控制器玩Chrome Dino??離線游戲,WebHID使你有可能做到這一點。很酷,不是嗎?

          你可以使用下面的代碼片段來了解是否支持WebHID。

          if ("hid" in navigator) { /* The WebHID API is supported. */ } 

          應用程序實施WebHID連接設備后,將顯示以下提示。

          你需要做的是,選擇正確的設備并點擊連接。就這么簡單!

          WebHID API是異步的。因此,在等待新設備連接或輸入時,它不會阻止UI。

          安全注意事項

          我相信這是在發現WebHID能做什么之后想到的事情。

          該API的開發采用了《控制對強大的網絡平臺功能的訪問》中定義的核心原則,包括用戶控制、透明度和人體工程學。此外,一次僅允許一個HID設備連接。

          此外,Chrome DevTools通過提供瀏覽器所連接的設備的日志,使其更容易調試與設備的連接。這可以在chrome://device-log(Chrome的一個內部頁面)查看。

          瀏覽器兼容性

          WebHID目前在桌面上被Chrome和Edge支持。

          接下來讓我們看一下WebNFC。

          2.什么是WebNFC?

          我相信,你以前一定遇到過NFC(近場通信)這個縮寫。

          有了WebNFC,現在你可以讀取或寫入NFC標簽,當它在你的設備范圍內。這是通過NDEF (NFC數據交換格式)完成的,它是由NFC標簽格式支持的。

          使用WebNFC

          比方說,你需要管理你店里的庫存。你可以用WebNFC建立一個庫存管理網站,它可以將數據讀/寫到你庫存的NFC標簽上。

          可能性是無窮的。這是一個將許多事情自動化的機會,使我們的日常工作更有效率。

          與WebHID相似,你可以使用下面的代碼片段檢查WebNFC支持。

          if ('NDEFReader' in window) { /* Scan and write NFC tags */ } 

          安全注意事項

          作為一項安全預防措施,Web NFC僅適用于頂級框架和安全瀏覽環境(僅HTTPS)。

          如果實現WebNFC的網頁消失或不可見,所有與NFC標簽的連接將被暫停。當頁面再次變得可見時,這些將被恢復。頁面可見性API(Page Visibility API)幫助你識別NFC操作的連接狀態。

          瀏覽器兼容性

          到目前為止,Chrome Android僅支持WebNFC。

          接下來,讓我們一起看看WebUSB API。

          3.什么是WebUSB?

          WebUSB API允許你使用JavaScript與USB端口通信,從Chrome 61開始可用。

          然而,你可能會想,我們如何訪問每個USB設備的相關驅動程序,對嗎?在WebHID API的支持下,它允許硬件制造商為其硬件設備建立跨平臺的JavaScript SDK。

          與上面討論的API類似,對WebUSB的支持可以用下面的代碼片斷來檢測。

          if ("usb" in navigator) { /* The WebUSB API is supported. */ } 

          安全

          在安全方面有許多控制措施來保護未經授權的USB訪問,而且它只在支持HTTPS的安全上下文中工作,以保護傳輸中的任何數據。此外,標準的瀏覽器同意程序是用來請求和授予訪問權的。

          調試WebUSB API相關的任務也可以通過內部的chrome://device-log頁面進行,該頁面列出所有連接的USB設備和相關的事件。

          瀏覽器兼容性

          WebUSB得到了Chrome瀏覽器、桌面上的Edge和安卓設備上的Chrome的支持。

          有關WebUSB API的更多詳細信息,可以參考Web上的訪問USB設備。

          文譯自:How To Find Hardware Specifications On Linux

          譯者:開源視界

          校對:OpenView

          原文鏈接:https://www.ostechnix.com/getting-hardwaresoftware-specifications-in-linux-mint-ubuntu/

          原文遵循 CC BY-NC 4.0 協議

          BY SK · PUBLISHED AUGUST 1, 2019 · UPDATED AUGUST 2, 2019

          有許多工具可用于在Linux系統上查詢硬件規格。這里,我列出了四個主要的常被用于獲取Linux上幾乎所有硬件(和軟件)信息的工具。好消息是這些工具在一些Linux發行版上已經默認預裝好了。我在Ubuntu 18.04 LTS桌面系統上對這些工具進行了測試,然而它們在其它Linux發行版上也能工作良好。


          1. LSHW

          Lshw (Hardware Lister)是一個簡單但具有完整功能特性的工具,其能夠在Linux系統上提供詳細的硬件配置。它能夠報告出精確地內存配置、硬件版本、主板配置、CPU版本和速度、緩存配置和總線速度等。信息可以以純文本、XML或者HTML的形式導出。

          其目前支持DMI(X86 和 EFI),開源固件設備樹(只包括PowerPC),PCI/AGP,ISA PnP(x86),CPUID(x86),IDE/ATA/ATAPI,PCMCIA(只在x86上進行過測試),USB和SCSI。

          如我所講,lshw在Ubuntu上已經默認安裝好了。如果它在你的Ubuntu系統上沒有安裝,可以使用下面的命令進行安裝:

          $ sudo apt install lshw lshw-gtk
          

          在其它Linux發行版上,比如Arch Linux,運行:

          $ sudo pacman -S lshw lshw-gtk
          

          一旦安裝完成,運行lshw來查詢你的系統硬件信息:

          $ sudo lshw
          

          你將看到你的系統的硬件規格的詳細輸出。

          輸出示例:

          在Linux上使用lshw查找硬件規格

          一定要注意,如果你沒有用sudo權限來運行lshw命令,輸出可能是不完整或者不準確的。

          Lshw能夠以HTML頁面來顯示輸出,要達成次目的,使用:

          $ sudo lshw -html
          

          同樣的,我們可以以XML和json格式輸出設備數,就像下面一樣:

          $ sudo lshw -xml
          $ sudo lshw -json
          

          要輸出顯示了硬件路徑的設備樹,使用-short選項:

          $ sudo lshw -short
          

          使用lshw顯示帶有路徑的設備樹

          要列出設備及其總線信息,詳細的SCSI、USB、IDE和PCI地址等,運行:

          $ sudo lshw -businfo
          

          默認上,lshw會顯示所有硬件信息。你也可以通過Class選項來查看特定硬件的信息,比如處理器,內存,顯示器等。class選項可以通過lshw -short或者lshw -businfo命令來找到。

          要顯示特定硬件的信息,例如處理器,運行:

          $ sudo lshw -class processor
          

          輸出示例:

          *-cpu 
          description: CPU
          product: Intel(R) Core(TM) i3-2350M CPU @ 2.30GHz
          vendor: Intel Corp.
          physical id: 4
          bus info: cpu@0
          version: Intel(R) Core(TM) i3-2350M CPU @ 2.30GHz
          serial: To Be Filled By O.E.M.
          slot: CPU 1
          size: 913MHz
          capacity: 2300MHz
          width: 64 bits
          clock: 100MHz
          capabilities: x86-64 fpu fpu_exception wp vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer xsave avx lahf_lm epb pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid xsaveopt dtherm arat pln pts md_clear flush_l1d cpufreq
          configuration: cores=2 enabledcores=1 threads=2
          

          類似的,我們可以使用下面的命令獲取系統信息:

          $ sudo lshw -class system
          

          獲取硬盤信息:

          $ sudo lshw -class disk
          

          獲取網絡信息:

          $ sudo lshw -class network
          

          獲取內存信息:

          $ sudo lshw -class memory
          

          同樣,我們可以像下面這樣列出多個硬件設備的信息.

          $ sudo lshw -class storage -class power -class volume
          

          如果你同時想要查看帶有硬件路徑的信息,只需要添加-short選項即可.

          $ sudo lshw -short -class processor
          

          輸出:

          H/W path Device Class Description
          =======================================================
          /0/4 processor Intel(R) Core(TM) i3-2350M CPU @ 2.30GHz
          

          有時,你可能想要向某人分享你的硬件信息,例如客戶。如果是這樣,你可以移除潛在的敏感信息,比如IP地址,序列號等。

          $ lshw -sanitize
          

          Lshw-gtk GUI 工具

          如果你不適應使用命令行,你可以使用lshw-gtk,它是lshw命令行工具的圖形接口。可以直接從終端或者Dash中打開。

          要從終端打開,簡單執行:

          $ sudo lshw-gtk
          

          下圖是lshw工具的默認GUI界面.

          在Linux上使用lshw-gtk查找硬件信息

          雙擊"Portable Computer"來進一步展開它.

          在Linux上使用lshw GUI來獲取硬件信息

          你可以繼續雙擊后續的硬件標簽來得到信息。

          欲了解更多信息,參見manpage。

          $ man lshw
          

          2. Inxi

          Inxi是另一個我很喜歡的工具,可以獲取Linux系統上幾乎所有的信息。它是一個自由,開源且功能完整的命令行系統信息工具。它可以獲取系統硬件,CPU,驅動,Xorg,桌面,內核,GCC版本,處理器,內存占用等許多有用的信息。無論是硬盤還是CPU,主板韓式整個系統的所有信息,inxi都會很快為你精確地呈現出來。由于它是一個命令行工具,你可以在桌面或者服務器上使用它。欲了解更多信息,參見下面這篇文章(也是本號曾翻譯過的文章)。

          使用inxi來獲得Linux系統詳細信息

          3. Hardinfo

          Hardinfo會同時為你獲取系統的硬件和軟件信息,后者是在lshw中不能獲取的。

          HardInfo可以獲取你的系統的硬件和操作系統性能基準測試,并以HTML或者純文本形式產生可以打印的報告。

          如果Hardinfo沒有在你的Ubuntu中安裝,通過下面的命令來安裝它:

          $ sudo apt install hardinfo
          

          一旦安裝完成,HardInfo工具可以從菜單或者終端啟動。

          下面是HardInfo的默認界面

          在Linux上使用HardInfo獲取硬件信息

          如你所見,Hardinfo具有簡潔只管的GUI界面。

          所有的硬件信息被分組為四個主要的組,即Computer,Devices,Network,和Benchmarks。每個組展示了特定的硬件信息。

          例如,要查看處理器信息,點擊"Devices"組下面的Processor選項即可。

          使用Hardinfo獲取處理器信息

          與lshw不同,Hardinfo可以幫助你獲取基本的軟件信息,比如操作系統,內核模塊,本地化,文件系統使用,用戶/群組,以及開發工具等。

          使用Hardinfo展示系統信息

          Hardinfo的另一個值得注意的特性是,其允許我們對CPU和FPU能力以及部分圖形顯卡能力進行簡單的基準測試。

          Hardinfo進行性能基準測試


          推薦閱讀:

          使用inxi來獲得Linux系統詳細信息

          Ubuntu中如何在插入外部鼠標時自動禁用觸摸板

          查詢Linux發行版名字、版本和內核信息

          在Linux上如何校驗ISO鏡像文件


          我們可以從整個系統生成報告也可以只從單個設備生成報告。

          要生成報告,簡單點擊"Generate Report"按鈕并選擇你想要在報告中包含的信息即可。

          使用Hardinfo生成系統報告

          Hardinfo也有一些命令行選項。

          例如,要產生報告并在終端商進行展示,可以運行:

          $ hardinfo -r
          

          列出模塊信息:

          $ hardinfo -l
          

          欲了解更多信息,參見manpage

          $ man hardinfo
          

          4. Sysinfo

          Sysinfo是另一個HardInfo和lshw-gtk工具的替代平,其可以被用來獲取如下所列出的硬件和軟件信息:

          • 系統信息,比如發行版版本,GNOME版本,內核和gcc以及Xorg和主機名
          • CPU信息,比如廠商,架構名稱,頻率,二級緩存等
          • 內存信息,比如總內存大小,空閑內存,交換空間和激活/未激活內存等
          • 存儲控制器,比如IDE接口,所有的IDE設備,SCSI設備
          • 硬件信息,比如主板,吸納卡,聲卡和網卡等

          讓我們使用命令安裝sysinfo:

          $ sudo apt install sysinfo
          

          Sysinfo可以從終端或者Dash中啟動。

          要從終端中啟動它,運行:

          $ sysinfo
          

          下面是Sysinfo工具的默認界面。

          sysinfo界面

          如你所見,所有的硬件(和軟件)信息被分組為5個種類,即System, CPU, Memory, Storage和Hardware。點擊一個類別,可以在導航欄中獲取各自的信息。

          使用Sysinfo在Linux上獲取硬件信息

          欲了解更多信息,參見manpage。

          $ man sysinfo
          

          好了,這就是所有內容了。就像我已經提到的,可能有許多工具都可以用于顯示硬件/軟甲信息。然而,這四個工具對于獲取你的Linux發行版的信息來說已經綽綽有余了。

          推薦閱讀(點擊跳轉)

          Linux下掛載使用Windows的NTFS分區

          Linux使用圖形界面連接WiFi

          Linux中使用snap和flatpak來安裝和管理應用程序

          Linux下常用的圖形應用下載工具

          Linux下制作系統的U盤啟動盤

          使用inxi來獲得Linux系統詳細信息

          Ubuntu中如何在插入外部鼠標時自動禁用觸摸板

          查詢Linux發行版名字、版本和內核信息

          在Linux上如何校驗ISO鏡像文件

          如何迅速方便地在Ubuntu 18.04中配置IP地址

          喜歡使用Linux辦公、學習、hack的朋友們可以點擊關注小編,小編將竭力提供更多內容給大家交流~

          avaScript本身不提供直接訪問串口的功能。然而,可以使用Web API和JavaScript與串口進行通信,一般需要在瀏覽器環境中進行。


          步驟

          1. Web Serial API:Web Serial API是一種Web API,允許JavaScript在瀏覽器中與串口設備通信。要使用它,需要在支持該API的瀏覽器中運行JavaScript。通常需要使用最新的Chrome瀏覽器。
          2. 請求串口訪問:在JavaScript中,我們可以通過使用navigator.serial.requestPort()方法請求訪問串口設備。這將提示用戶選擇串口設備。
          const port = await navigator.serial.requestPort();
          1. 打開串口連接
          await port.open({ baudRate: 9600 });
          1. 讀寫數據:可以使用port.readable和port.writable屬性來讀取和寫入數據。例如,我們可以使用readable.getReader()獲取一個可讀數據流,并使用read()方法讀取數據。對于寫入,可以使用writable.getWriter()獲取一個可寫數據流,并使用write()方法寫入數據。
          2. 關閉串口:在完成通信后,應該使用port.close()方法關閉串口連接。

          使用Web Serial API進行串口通信需要在瀏覽器環境中運行,并且通常需要用戶授權。不是所有瀏覽器都支持Web Serial API,而且它主要用于Web應用程序,而不是傳統的本地JavaScript應用程序。

          Demo

          // 請求串口訪問權限
          async function requestSerialAccess() {
            try {
              const port = await navigator.serial.requestPort();
              await port.open({ baudRate: 9600 }); // 打開串口連接
          
              // 讀取數據
              const reader = port.readable.getReader();
          
              while (true) {
                const { value, done } = await reader.read();
                if (done) {
                  break;
                }
                // 處理從串口讀取的數據
                console.log(value);
              }
          
              // 關閉串口連接
              await port.close();
            } catch (error) {
              console.error("Error:", error);
            }
          }
          
          // 添加事件監聽器,用于在用戶點擊按鈕時請求串口訪問權限
          const connectButton = document.getElementById("connect-button");
          connectButton.addEventListener("click", requestSerialAccess);

          首先我們創建了一個函數requestSerialAccess(),它請求串口訪問權限,打開串口連接,然后使用一個循環來不斷讀取數據,將數據輸出到控制臺。最后,它在完成后關閉串口連接。


          主站蜘蛛池模板: 国产综合一区二区| 在线欧美精品一区二区三区| 国产精品女同一区二区久久| 亚洲国产精品一区第二页| 精品国产免费一区二区三区| 无码一区二区三区老色鬼| 精品熟人妻一区二区三区四区不卡| 精品国产鲁一鲁一区二区| 亚洲熟女综合色一区二区三区 | 国产伦精品一区二区三区免费下载 | 制服丝袜一区二区三区| 国产香蕉一区二区在线网站| 日韩一区二区在线免费观看| 亚洲色无码一区二区三区| 国产成人一区二区三中文| 中文字幕一区二区人妻性色| 欧美日韩国产免费一区二区三区 | 国产精品成人一区二区三区| 日韩亚洲一区二区三区| 亚洲第一区精品观看| 色天使亚洲综合一区二区| 少妇激情一区二区三区视频 | 精品一区二区久久久久久久网站| 免费看AV毛片一区二区三区| 日韩亚洲AV无码一区二区不卡| 久久精品一区二区三区中文字幕| 精品久久综合一区二区| 国产乱码精品一区二区三区 | 国产日韩一区二区三免费高清| 国产一区高清视频| 国产福利电影一区二区三区,日韩伦理电影在线福 | 精彩视频一区二区三区| 亚洲欧美日韩中文字幕一区二区三区| 国产精品毛片一区二区三区| 久久免费国产精品一区二区| 97一区二区三区四区久久| 成人中文字幕一区二区三区| 国模大胆一区二区三区| 一区二区三区电影网| 中文字幕视频一区| 精品视频一区在线观看|