win10系统rust串口通信实现

一、用cargo创建新工程

命令:cargo new comport

rust 复制代码
use std::env;
use std::{thread, time};
use serialport::{DataBits, StopBits, Parity, FlowControl};
use std::io::{self, Read, Write};
use std::time::Duration;

fn main() -> io::Result<()> {

    let mut args: Vec<String> = env::args().collect();
    if args.len() < 1+3 {
        println!("{} ComPort Baudrate Command [DelayMS]",args[0]);
        std::process::exit(-1);
    }

    let mut duration: u64 = 100;//seconds
    if args.len() > 1+3 {
        duration = args[args.len()-1].parse::<u64>().unwrap();
    }

    let mut port = serialport::new(&args[1], args[1+1].parse::<u32>().unwrap())
    .data_bits(DataBits::Eight).stop_bits(StopBits::One).parity(Parity::None)
    .flow_control(FlowControl::None).timeout(Duration::from_secs(1)).open()?;

    let offset = 1+1+1;
    args[offset]=args[offset].replace("\\r", "\r");
    args[offset]=args[offset].replace("\\n", "\n"); 
    let data = &args[offset];
    port.write_all(data.as_bytes())?;

    thread::sleep(time::Duration::from_millis(duration));
    let mut buffer: Vec<u8> = vec![0; 80000000];
    let bytes_read = port.read(buffer.as_mut_slice())?;
    let received_data = String::from_utf8_lossy(&buffer[..bytes_read]);
    println!("Received: {}", received_data);

    Ok(())
        
}

二、进入到新建工程文件夹并编译

命令:cd ./comport && cargo build

三、运行上面编译的工程

命令:cargo run COM6 921600 "AT\n"

相关推荐
小杍随笔4 小时前
【Rust 半小时速成(2024 Edition 更新版)】
开发语言·后端·rust
Source.Liu4 小时前
【office2pdf】office2pdf 纯 Rust 实现的 Office 转 PDF 库
rust·pdf·office2pdf
无名3874 小时前
讨论 RTPEngine 的 ICE-lite
通信
洛依尘5 小时前
深入浅出 Rust 生命周期:它不是语法负担,而是借用关系的说明书
后端·rust
Rust研习社5 小时前
通过示例学习 Rust 模式匹配
rust
PaytonD5 小时前
基于 GPUI 实现 WebScoket 服务端之服务篇
后端·rust
Source.Liu6 小时前
【Acadrust】Rust 语言的高性能 CAD 库
rust·acadrust
Bruce20489987 小时前
2026 云原生安全:Rust 编写微服务网关与零信任实践
安全·云原生·rust
迷藏49416 小时前
**发散创新:基于 Rust的开源权限管理系统设计与实战**在现代软件架构中,**权限控制**早已不
java·开发语言·rust·开源
迷藏4941 天前
# 发散创新:用 Rust实现高性能测试框架的底层逻辑与实战演练
java·开发语言·后端·python·rust