From 9acba79ec44a02e63d9cec898c9bf25e7018f42b Mon Sep 17 00:00:00 2001 From: rizky_denianto Date: Sat, 18 Jul 2026 01:09:08 +0700 Subject: [PATCH] Memindahkan fungsi komputer meja ke sini --- Cargo.toml | 1 + src/desktop.rs | 24 ++++++++++++++++++++++-- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 21d4325..04c5e08 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -21,6 +21,7 @@ debug = false tauri = { version = "2.11.5" } serde = "1.0" thiserror = "2" +serialport = "4.9.0" [build-dependencies] tauri-plugin = { version = "2.6.3", features = ["build"] } diff --git a/src/desktop.rs b/src/desktop.rs index 5f6ee09..53933ee 100644 --- a/src/desktop.rs +++ b/src/desktop.rs @@ -1,3 +1,5 @@ +use std::{mem, time::Duration}; + use serde::de::DeserializeOwned; use tauri::{AppHandle, Runtime, plugin::PluginApi}; @@ -15,10 +17,28 @@ pub struct Bluclas(AppHandle); impl Bluclas { pub fn daftar_perangkat(&self) -> crate::Result { - return Ok(SBlueclasResponDaftarPerangkat { data: vec![] }); + let port = serialport::available_ports().unwrap_or(Vec::new()); + let mut daftar_res: Vec = Vec::new(); + for i in port { + let res = SDaftarPerangkatBlueclasResponDaftarPerangkat { + nama: i.port_name.clone(), + alamat: i.port_name, + }; + daftar_res.push(res); + } + return Ok(SBlueclasResponDaftarPerangkat { data: daftar_res }); } - pub fn kirim(&self, _: SBlueclasMuatanKirim) -> crate::Result<()> { + pub fn kirim(&self, muatan: SBlueclasMuatanKirim) -> crate::Result<()> { + let mut pencetak = match serialport::new(&muatan.alamat, 9600) + .timeout(Duration::from_secs(4)) + .open() + { + Ok(it) => it, + Err(_) => return Ok(()), + }; + pencetak.write(&muatan.data).unwrap(); + mem::drop(pencetak); return Ok(()); } }