国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Vue3項(xiàng)目(Vite+TS)使用Web Serial Api全記錄

這篇具有很好參考價(jià)值的文章主要介紹了Vue3項(xiàng)目(Vite+TS)使用Web Serial Api全記錄。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

前言

之前寫了一個(gè)vue+django的一個(gè)通過串口控制的上位機(jī)系統(tǒng)。但是實(shí)際生產(chǎn)中,不如部署到服務(wù)器上,這樣可以更好的節(jié)約成本。但是這樣就需要弄一個(gè)客戶端來控制處理串口信息。那我就在想能不能通過網(wǎng)頁直接拿到客戶端的串口信息。所以問了萬能的chatgpt,得到了以下答案:
是的,前端可以使用 Web SerialAPI直接與客戶端機(jī)器的串口通信,而Diango只需要負(fù)責(zé)存儲(chǔ)數(shù)據(jù)。當(dāng)客戶端機(jī)器發(fā)送數(shù)據(jù)時(shí),前端可以將數(shù)據(jù)發(fā)送到 Diango服務(wù)器,Diango 服務(wù)器再將數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫中。當(dāng)需要讀取數(shù)據(jù)時(shí),前端可以從 Django服務(wù)器中獲取數(shù)據(jù)并顯示在頁面上。
所以我去研究了下Web Serial Api

一、什么是Web Serial Api

官方:https://wicg.github.io/serial/#open-method
Web Serial API 是一個(gè)用于訪問串行設(shè)備的 Web API,它允許 web 應(yīng)用程序與串行設(shè)備(如 Arduino、傳感器、GPS 接收器等)進(jìn)行通信。使用 Web Serial API,你可以在 web 應(yīng)用程序中讀取和寫入串行數(shù)據(jù),就像使用本地應(yīng)用程序一樣。

Web Serial API 是由 W3C Web 原生設(shè)備和傳感器工作組開發(fā)的,它已經(jīng)成為標(biāo)準(zhǔn)的一部分,目前已經(jīng)在主流瀏覽器中得到了支持,包括 Chrome、Edge、Firefox 和 Opera。

使用 Web Serial API,你可以在 web 應(yīng)用程序中執(zhí)行以下操作:

  • 請求用戶授權(quán)訪問串行端口
  • 打開和關(guān)閉串行端口
  • 讀取和寫入串行數(shù)據(jù)
  • 監(jiān)聽來自串行設(shè)備的數(shù)據(jù)
  • 設(shè)置串行端口的參數(shù),例如波特率、數(shù)據(jù)位、停止位、奇偶校驗(yàn)等。

Web Serial API 的優(yōu)點(diǎn)在于它可以在沒有任何插件或安裝軟件的情況下訪問串行設(shè)備,因此它非常適合用于構(gòu)建基于 web 的物聯(lián)網(wǎng)應(yīng)用程序。

二、vite項(xiàng)目運(yùn)行在https協(xié)議

如果想使用Web Serial Api就需要把項(xiàng)目運(yùn)行在https模式下
其實(shí)可以簡單驗(yàn)證下:

if ("serial" in navigator) {  
console.log("Web Serial API is supported!");  
} else {  
console.log("Web Serial API is not supported!");  
}

正常在http模式下是不成功的。

Vue3項(xiàng)目(Vite+TS)使用Web Serial Api全記錄

首先需要把項(xiàng)目在https模式運(yùn)行,這里先用簡單證書去處理。
錯(cuò)誤示范:

Vue3項(xiàng)目(Vite+TS)使用Web Serial Api全記錄
直接加--https?運(yùn)行時(shí)在https上 但是會(huì)報(bào)錯(cuò):

Vue3項(xiàng)目(Vite+TS)使用Web Serial Api全記錄

這個(gè)時(shí)候需要自己獲取SSL證書

Windows使用mkcert頒發(fā)證書及應(yīng)用
1、下載:

https://github.com/FiloSottile/mkcert/releases/tag/v1.4.4

Vue3項(xiàng)目(Vite+TS)使用Web Serial Api全記錄

在下載好的文件下

打開cd 找到文件 輸入mkcert-v1.4.3-windows-amd64.exe -install(根據(jù)你實(shí)際包來)

Vue3項(xiàng)目(Vite+TS)使用Web Serial Api全記錄
這個(gè)時(shí)候我們就看到2個(gè)pem文件了

Vite配置

把上面生成的兩個(gè)文件放到項(xiàng)目根目錄keys文件夾
在vite.config.ts中修改為(請根據(jù)情況按需修改):

import?*?as?fs?from?'fs'
import?path?from?'path'

// https://vitejs.dev/config/
export?default?defineConfig({
? plugins:?[vue()],
? resolve:?{
? ? alias:?{
? ? ? '@':?path.join(__dirname, 'src')
? ? }
? },
? server:{
? ? host:"192.168.149.1",
? ? port:8080,
? ? open:true,
? ? https:{
? ? ? key:fs.readFileSync(path.join(__dirname, 'key/install-key.pem')),
? ? ? cert:fs.readFileSync(path.join(__dirname, ?'key/install.pem')),
? ? },
? },
})

Vue3項(xiàng)目(Vite+TS)使用Web Serial Api全記錄
選擇高級
Vue3項(xiàng)目(Vite+TS)使用Web Serial Api全記錄
這樣我們的項(xiàng)目就運(yùn)行在

Vue3項(xiàng)目(Vite+TS)使用Web Serial Api全記錄
這樣就解決了這個(gè)問題。

三、Web Serial Api簡單使用

串口的選擇

<script>
    const port = await navigator.serial.requestPort();
    await port.open({baudRate:9600});
    const reader = port.readable.getReader();
</script>
<template>
</template>
<style scoped>
</style>

Vue3項(xiàng)目(Vite+TS)使用Web Serial Api全記錄

串口接受消息

// 提示用戶選擇一個(gè)串口
const port = await navigator.serial.requestPort();
await port.open({baudRate:9600});

const reader = port.readable.getReader();

let buffer = ''; // 緩沖區(qū)

// 監(jiān)聽來自串口的數(shù)據(jù)
while (true) {
  const { value } = await reader.read();
  if (value) {
    const textDecoder = new TextDecoder('utf-8');
    const str = textDecoder.decode(value);
    buffer += str; // 將讀取到的數(shù)據(jù)添加到緩沖區(qū)中

    // 判斷緩沖區(qū)中是否存在完整的數(shù)據(jù)包
    const completePacketIndex = buffer.indexOf('\n');
    if (completePacketIndex !== -1) {
      const completePacket = buffer.substring(0, completePacketIndex);
      buffer = buffer.substring(completePacketIndex + 1);

      // 處理完整的數(shù)據(jù)包
      console.log(completePacket);
    }
  }
}

串口發(fā)送消息文章來源地址http://www.zghlxwxcb.cn/news/detail-434252.html

 const writer = port.writable.getWriter();

 const data = new Uint8Array([104, 101, 108, 108, 111]); // hello

 setInterval(async () => {
   await writer.write(data);
 }, 2000);

到了這里,關(guān)于Vue3項(xiàng)目(Vite+TS)使用Web Serial Api全記錄的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • vite+vue3+ts搭建項(xiàng)目八(打包性能優(yōu)化三:使用CDN)

    vite+vue3+ts搭建項(xiàng)目八(打包性能優(yōu)化三:使用CDN)

    使用vite-plugin-cdn-import 下載npm包 官方github:https://github.com/MMF-FE/vite-plugin-cdn-import 開發(fā)環(huán)境使用本地的npm包,cdn是打包時(shí)候才生效 在vite.config.ts中通過importToCDN引入 注意事項(xiàng) :網(wǎng)上很多教程,還需要在 build 的 rollupOptions 添加對應(yīng)的 external ,如上注釋所示,其實(shí)是不需要的,

    2024年02月02日
    瀏覽(98)
  • 使用vue3 + TS + Pinia + Vant4 + vite搭建商城H5項(xiàng)目框架

    使用vue3 + TS + Pinia + Vant4 + vite搭建商城H5項(xiàng)目框架

    本文主要將如何利用搭建一個(gè)初始化的商城H5項(xiàng)目框架。初始化階段使用的技術(shù)棧有:vue3.2、vue-router、?TS 、 Pinia 、 Vant4、Less、vite ????????????????????????node -v 檢測是否有安裝node.js,未安裝請先去官網(wǎng)安裝node.js ? ? ? ? 終端輸入:?npm?init vite ????????自定

    2024年02月12日
    瀏覽(96)
  • 使用模板創(chuàng)建【vite+vue3+ts】項(xiàng)目出現(xiàn) “找不到模塊‘vue‘或其相應(yīng)的類型聲明” 的解決方案

    使用模板創(chuàng)建【vite+vue3+ts】項(xiàng)目出現(xiàn) “找不到模塊‘vue‘或其相應(yīng)的類型聲明” 的解決方案

    項(xiàng)目前臺(tái)需要使用Vue3+Ts來寫一個(gè)H5應(yīng)用,然后我用模板創(chuàng)建 創(chuàng)建完后進(jìn)入 HelloWorld.vue ,兩眼一黑 然后在 tsconfig.json 的 \\\"compilerOptions\\\" 中添加 修改 \\\"moduleResolution\\\" 值為 \\\"node\\\"

    2024年02月17日
    瀏覽(26)
  • vite vue3項(xiàng)目打包,跳過ts檢查

    vite vue3項(xiàng)目打包,跳過ts檢查

    遇到這個(gè)問題是因?yàn)関ue文件中script標(biāo)簽沒有寫lang造成的? 剩下的ts類型檢查錯(cuò)誤 ?\\\"build\\\": \\\"vue-tsc --noEmit --skipLibCheck vite build\\\",是因?yàn)檫@個(gè)vue-tsc打包對ts進(jìn)行了類型檢查,需要全部解決了才行,可以關(guān)閉,直接改成\\\"build\\\": \\\"vite build\\\",

    2024年02月16日
    瀏覽(97)
  • vue3+vite+ts+elementplus創(chuàng)建項(xiàng)目

    # vue3+vite+ts+pinia 學(xué)習(xí)筆記 ## 1、創(chuàng)建項(xiàng)目: npm init vite@latest ? ? 選擇: vue、ts ## 2、進(jìn)入項(xiàng)目目錄后:npm install 安裝 ## 3、運(yùn)行項(xiàng)目: npm run dev ## 4、安裝常用插件: ? ? 1、安裝 npm install vue-router@latest 配置:在src目錄下新建router目錄,創(chuàng)建index.ts文件代碼如下: ? ? ? ```javascript 創(chuàng)建

    2024年02月09日
    瀏覽(19)
  • vue3+ts+vite項(xiàng)目引入echarts,vue3項(xiàng)目echarts組件封裝

    vue3+ts+vite項(xiàng)目引入echarts,vue3項(xiàng)目echarts組件封裝

    技術(shù)棧 :Vue3 + Ts + Vite + Echarts 簡介 : 圖文詳解,教你如何在 Vue3 項(xiàng)目中 引入Echarts , 封裝Echarts組件 ,并實(shí)現(xiàn)常用Echarts圖例 1.1 靜態(tài)效果 1.2 動(dòng)態(tài)效果 2.1 安裝 Echarts npm: pnpm: 2.2 main.ts 中引入 2.3 Echarts 組件封裝 /src/components/ReEcharts/index.vue 文件中寫入如下代碼 3.1 柱狀圖 實(shí)現(xiàn)

    2024年02月09日
    瀏覽(33)
  • 基于Vue3+TS+Vite+Cesium創(chuàng)建項(xiàng)目

    基于Vue3+TS+Vite+Cesium創(chuàng)建項(xiàng)目

    隨著近幾年社會(huì)的發(fā)展,人們對三維可視化的需求也是越來越多,三維GIS如今真的越來越火了,對于做GIS前端開發(fā)的人員來說,Cesium開發(fā)是絕對繞不開的一門技術(shù),所以今天來說說如何利用當(dāng)下最火的 Vue3+TS+Vite 來搭建一個(gè)基于Cesium的項(xiàng)目開發(fā)環(huán)境。 1.使用 yarn create vite 創(chuàng)建

    2024年02月05日
    瀏覽(22)
  • Vue3通透教程【十七】Vite構(gòu)建TS版本Vue項(xiàng)目

    專欄介紹: 涼哥作為 Vue 的忠實(shí) 粉絲輸出過大量的 Vue 文章,應(yīng)粉絲要求開始更新 Vue3 的相關(guān)技術(shù)文章,Vue 框架目前的地位大家應(yīng)該都曉得,所謂三大框架使用人數(shù)最多,公司選型最多的框架,涼哥之前在文章中也提到過就是 Vue 框架之所以火起來的原因,和 Vue 框架相比其

    2024年02月13日
    瀏覽(88)
  • 【前端】vue3+ts+vite,el-table表格渲染記錄重復(fù)情況

    給自己一個(gè)目標(biāo),然后堅(jiān)持一段時(shí)間,總會(huì)有收獲和感悟! 在使用vue的過程中,總會(huì)遇到一些有疑問的地方,總結(jié)就能夠加深印象,下次再出現(xiàn)的時(shí)候也有個(gè)參考的地方。 Element UI 的 el-table 組件是一個(gè)強(qiáng)大的表格組件,提供了許多常見的屬性來配置和定制表格的外觀和行為

    2024年02月04日
    瀏覽(32)
  • vite+vue3+ts項(xiàng)目中提示無法找到模塊

    今天在開發(fā)過程中碰到了導(dǎo)入模塊時(shí)提示無法找到模塊這個(gè)問題,分享一下我的解決思路 首先產(chǎn)生這個(gè)錯(cuò)誤是: 無法找到模塊XXX,并且提示\\\'XXX\\\' is declared but its value is never read 產(chǎn)生這個(gè)問題的原因是我們使用了ts語法,他只能識(shí)別.ts文件,并不能識(shí)別.vue文件,所以在引入組件

    2024年02月11日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包