隨著科技的不斷進步,越來越多的設備和傳感器使用串口進行數據通信。而對于網頁應用來說,javascript是不可避免的一項技術。因此,在javascript中使用串口已經成為不可或缺的一部分。而隨著計算機硬件的發展,64位系統已經成為主流,因此javascript串口也需要適配64位系統。
在使用javascript串口時,首先需要明確的是,瀏覽器本身并不支持串口通信,因此需要使用第三方庫來實現。比如Popular Web Serial是一個用于在web客戶端中訪問串行端口的庫,可以輕松地將串行端口暴露給javascript。而Popular Web Serial庫中的64位適配基本類似于32位,只需要根據操作系統不同進行少量調整即可。
一些設備廠商也提供了自己的串口庫或插件,比如插件Realterm可以用于在web客戶端中訪問串口。而該插件的64位適配則需要與64位瀏覽器的配合使用。例如,如果使用64位系統的Chrome,則需要使用64位版本的Realterm插件,否則在插件執行IO操作時會出現異常。
除了第三方庫和設備廠商提供的插件,javascript串口還可以使用瀏覽器自帶的WebUSB API來進行通信。WebUSB API可以讓web應用程序訪問USB設備,從而實現串口通信。而這種方式的好處是不需要任何插件或控件,原生的瀏覽器支持即可。然而,這種方式目前只有Chrome瀏覽器支持,并且需要用戶授權才能完成通訊。
//使用Popular Web Serial進行串口操作的例子 navigator.serial.requestPort() .then(port =>{ console.log(`串口名稱: ${port.name}`); // 讀取串口數據 port.onmessage = ({data}) =>console.log(`接收到數據: ${data}`); // 發送數據到串口 port.write(new TextEncoder().encode('Hello World!')); }) .catch(err =>console.error(`串口連接失敗: ${err}`));
//使用WebUSB API進行串口操作的例子 navigator.usb.requestDevice({ filters: [{ vendorId: 0x1234 }] }) .then(device =>{ console.log(`設備名稱: ${device.productName}`); // 打開串口連接 device.open() .then(() =>device.selectConfiguration(1)) .then(() =>device.claimInterface(2)) .then(() =>device.transferIn(5, 64)) .then(data =>console.log(`接收到數據: ${data}`)) .catch(err =>console.error(`串口連接失敗: ${err}`)); // 發送數據到串口 let data = new Uint8Array([0x01, 0x02, 0x03]); device.transferOut(4, data.buffer); }) .catch(err =>console.error(`串口連接失敗: ${err}`));
總之,在使用javascript進行串口通信時,需要選擇適合自己的庫或插件,并根據操作系統的位數進行相應的適配。同時,需要注意的是串口通信不支持跨域請求,因此網頁應用需要與串口通信的設備在同一電腦上進行操作,或者可以通過網絡通信,將串口操作轉發到設備所在的電腦上進行處理。