首页 > 系统相关 >[记]Rust使用windows库开发串口功能

[记]Rust使用windows库开发串口功能

时间:2023-07-19 15:57:33浏览次数:31  
标签:windows writer read let 串口 device Rust

在Rust中,可以使用windows库来操作串口。以下是一个使用windows库实现串口功能的示例代码:

首先,在你的Cargo.toml文件中添加以下依赖项:

[dependencies]
windows = "0.36.0"

然后,可以按照以下代码示例使用windows库进行串口操作:

use std::io::{self, Read, Write};
use windows::DeviceId;
use windows::devices::serialcommunication::{SerialDevice, SerialStopBitCount, SerialParity, SerialDataBits};

fn main() -> io::Result<()> {
    // 打开串口(COM1为示例串口号,请根据实际情况修改)
    let com_port = "COM1";
    let device = SerialDevice::from_id(&DeviceId::new_pnp(com_port))?;

    // 设置串口参数
    let port = device.port_name()?;
    device.set_baud_rate(9600)?;
    device.set_data_bits(SerialDataBits::Eight)?;
    device.set_stop_bits(SerialStopBitCount::One)?;
    device.set_parity(SerialParity::None)?;

    // 读取数据
    let mut reader = device.into_reader()?;
    let mut buffer: [u8; 100] = [0; 100]; // 缓冲区大小为100字节,根据实际需求进行调整
    let bytes_read = reader.read(&mut buffer)?;
    println!("Read {} bytes: {:?}", bytes_read, &buffer[..bytes_read]);

    // 写入数据
    let mut writer = device.into_writer()?;
    let data_to_write: &[u8] = b"Hello, World!"; // 要写入的数据
    writer.write_all(data_to_write)?;
    writer.flush()?;

    Ok(())
}

请注意,使用windows库不需要直接调用Windows API,而是通过高级接口来进行串口操作。此外,代码中使用了标准库中的Read和Write trait,以便于对串口进行读写。

标签:windows,writer,read,let,串口,device,Rust
From: https://www.cnblogs.com/hardfood/p/17565801.html

相关文章

  • VMware Workstation 18 Tech Preview - 增强的 Windows 11 虚拟机安全性
    VMwareWorkstation18TechPreview-增强的Windows11虚拟机安全性VMwareWorkstationTechPreview2023请访问原文链接:https://sysin.org/blog/vmware-workstation-18/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org原文作者:MichaelRoyJuly13,2023准备......
  • 第7章 Windows Server 2012中的Active Directory
    第7章WindowsServer2012中的ActiveDirectory7.1ActiveDirectory基础知识简介在开始讨论ActiveDirectory之前,先介绍一些基础知识。由于ActiveDirectory使用很多特有的词汇,这里只解释管理员需要了解的那部分。工作组工作组是一个Windows网络(LAN)中的一台或名多台......
  • 第6章 Windows Server 2012 R2 中的DNS和名称解析
    第6章WindowsServer2012R2中的DNS和名称解析6.1理解DNS服务器角色下面简单总结本章涉及的DNS基本概念主机名指(用户友好)的计算机的名称,根据DNS标准,主机名可以多达255个字符,主机名等价于计算机的名字。名称空间这是域的名称,并不是具体指ActiveDirectory域......
  • ReadyBoost 是什么: ReadyBoost 是一种在 Windows 操作系统中使用外部闪存设备作为虚拟
    ReadyBoost是Windows操作系统中的一个功能,它可以利用闪存驱动器(如USB闪存驱动器)作为辅助内存来提高系统的响应速度和性能。下面是关于ReadyBoost的详细解释:ReadyBoost是什么:ReadyBoost是一种在Windows操作系统中使用外部闪存设备作为虚拟内存缓存的技术。它允许将US......
  • pagefile.sys是Windows操作系统中的一个系统文件,它用于实现虚拟内存功能 。虚拟内存是
    pagefile.sys是Windows操作系统中的一个系统文件,它用于实现虚拟内存功能。虚拟内存是一种由硬盘上的空间模拟出来的内存,它允许操作系统将物理内存(RAM)之外的空间用作扩展内存。当物理内存不足时,操作系统会将一部分数据从物理内存转移到pagefile.sys文件中,以释放物理内存空间给其他......
  • Windows修改远程桌面3389端口bat脚本
    使用Bat脚本修改Windows服务器3389远程端口脚本;食用时将以下代码保存为.bat或.cmd即可,注意编码格式否则会出现乱码;使用管理员模式打开,否则可能无法修改。@echooffecho————————————————-echo–%~nx0echo–echo–Windows远程桌面端口修改echo–......
  • Windows 7 操作系统
    2.2.1Windows7的基础知识Windows7的主要特性有: 更简单 更安全 更好的连接 更低的成本安装Windows7操作系统所需的硬件配置 Windows7系统的软件需求只是指对硬盘系统的要求。安装Windows7系统的硬盘分期必须采用NTFS结构,要确保至少有16GB的可用空间,最好能提供40GB可用......
  • Android 串口开发记录
    一、导入在我们的认识中Android系统是手机系统,它的物理接口一般只有usbhost接口(之前的手机还有耳机接口,不过近几年取消了)。但其实安卓支持各种各样的工业接口,如HDMI、usb、网口、串口等等。本文将来说一下在安卓下开发串口通信。二、串口是什么?串行接口简称串口,也称串行通信接口或......
  • Windows远程“要求的函数不受支持”解决办法
    Windows远程“要求的函数不受支持”解决办法 解决方法:开启组策略中远程桌面链接安全层。1、开始-运行-gpedit.msc,进入组策略编辑器;2、找到左侧边栏计算机配置-管理模板-Windows组件-远程桌面服务-远程桌面会话主机-安全项;3、修改以下两项:  A,远程(RDP)连接要求使用指......
  • windows用户态程序高效排错
    windows用户态程序高效排错256页2007年12月第一次印刷20MB  ......