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"

相关推荐
晚风吹长发15 小时前
初步理解Linux中的进程间通信以及管道通信
linux·运维·服务器·c++·进程·通信
栈与堆1 天前
LeetCode 21 - 合并两个有序链表
java·数据结构·python·算法·leetcode·链表·rust
冷凝雨1 天前
逻辑分析仪隔离模块 —— 基于π121M31
通信·逻辑分析仪·解码器·数字·隔离模块·隔离芯片·高压隔离
盛者无名2 天前
Rust的所有权(Owenership)
开发语言·rust
BlockChain8882 天前
MPC 钱包实战(三):Rust MPC Node + Java 调度层 + ETH 实际转账(可运行)
java·开发语言·rust
分布式存储与RustFS2 天前
RustFS在AI场景下的实测:从GPU到存储的完整加速方案
开发语言·人工智能·rust·对象存储·企业存储·rustfs·minio国产化替代
柠檬丶抒情2 天前
Rust no_std 裸机移植:9 条避坑与实战手册
开发语言·mongodb·rust
FAFU_kyp2 天前
Rust 流程控制学习教程
学习·算法·rust
FAFU_kyp2 天前
Rust 模式匹配:match 与 if let 详解
开发语言·后端·rust
Mr -老鬼3 天前
Java VS Rust
java·开发语言·rust