C#动态获取本机可用串口的两种方式
1.
private void GetSerialPort() //获取串口列表
{
RegistryKey keyCom = Registry.LocalMachine.OpenSubKey("Hardware\\DeviceMap\\SerialComm");
if (keyCom != null)
{
string[] sSubKeys = keyCom.GetValueNames();
foreach (string sName in sSubKeys)
{
string sValue = (string)keyCom.GetValue(sName);
}
}
}
2.还有一种比较简单,直接通过SerialPort对象取得
string[] ports = System.IO.Ports.SerialPort.GetPortNames();
下面的内容都是转过来的.
在.NET Framework 2.0中提供了SerialPort类,该类主要实现串口数据通信等。下面主要介绍该类的主要属性(表13.1)和方法(表13.2)。
表13.1 SerialPort类的常用属性
|
名 称 |
说 明 |
|
BaseStream |
获取 SerialPort 对象的基础 Stream 对象 |
|
BaudRate |
获取或设置串行波特率 |
|
BreakState |
获取或设置中断信号状态 |
|
BytesToRead |
获取接收缓冲区中数据的字节数 |
|
BytesToWrite |
获取发送缓冲区中数据的字节数 |
|
CDHolding |
获取端口的载波检测行的状态 |
|
CtsHolding |
获取“可以发送”行的状态 |
|
DataBits |
获取或设置每个字节的标准数据位长度 |
|
DiscardNull |
获取或设置一个值,该值指示 Null 字节在端口和接收缓冲区之间传输时是否被忽略 |
|
DsrHolding |
获取数据设置就绪 (DSR) 信号的状态 |
|
DtrEnable |
获取或设置一个值,该值在串行通信过程中启用数据终端就绪 (DTR) 信号 |
|
Encoding |
获取或设置传输前后文本转换的字节编码 |
|
Handshake |
获取或设置串行端口数据传输的握手协议 |
|
IsOpen |
获取一个值,该值指示 SerialPort 对象的打开或关闭状态 |
|
NewLine |
获取或设置用于解释 ReadLine( )和WriteLine( )方法调用结束的值 |
|
Parity |
获取或设置奇偶校验检查协议 |
续表
|
名 称 |
说 明 |
|
ParityReplace |
获取或设置一个字节,该字节在发生奇偶校验错误时替换数据流中的无效字节 |
|
PortName |
获取或设置通信端口,包括但不限于所有可用的 COM 端口 |
|
ReadBufferSize |
获取或设置 SerialPort 输入缓冲区的大小 |
|
ReadTimeout |
获取或设置读取操作未完成时发生超时之前的毫秒数 |
|
ReceivedBytesThreshold |
获取或设置 DataReceived 事件发生前内部输入缓冲区中的字节数 |
|
RtsEnable |
获取或设置一个值,该值指示在串行通信中是否启用请求发送 (RTS) 信号 |
|
StopBits |
获取或设置每个字节的标准停止位数 |
|
WriteBufferSize |
获取或设置串行端口输出缓冲区的大小 |
|
WriteTimeout |
获取或设置写入操作未完成时发生超时之前的毫秒数 |
表13.2 SerialPort类的常用方法
|
方 法 名 称 |
说 明 |
|
Close |
关闭端口连接,将 IsOpen 属性设置为False,并释放内部 Stream 对象 |
|
Open |
打开一个新的串行端口连接 |
|
Read |
从 SerialPort 输入缓冲区中读取 |
|
ReadByte |
从 SerialPort 输入缓冲区中同步读取一个字节 |
|
ReadChar |
从 SerialPort 输入缓冲区中同步读取一个字符 |
|
ReadLine |
一直读取到输入缓冲区中的 NewLine 值 |
|
ReadTo |
一直读取到输入缓冲区中指定 value 的字符串 |
|
Write |
已重载。将数据写入串行端口输出缓冲区 |
|
WriteLine |
将指定的字符串和 NewLine 值写入输出缓冲区 |
C#动态获取本机可用串口的两种方式的更多相关文章
- Java通过图片url地址获取图片base64位字符串的两种方式
工作中遇到通过图片的url获取图片base64位的需求.一开始是用网上的方法,通过工具类Toolkit,虽然实现的代码比较简短,不过偶尔会遇到图片转成base64位不正确的情况,至今不知道为啥. 之后 ...
- mui 获取本地APP本版号的两种方式
第一种 mui.plusReady(function () { mui.getJSON("manifest.json", null, function (data) { vum = ...
- [转] python 获取本机ip地址的两种实现方法
#!/usr/bin/python import socket import fcntl import struct def get_ip_address(ifname): s = socket.so ...
- 手机App测试如何获取包名的入口【两种方式】
在进行手机APP测试的时候经常要获取包名.那么何为包名呢?简单来说其实就是手机APP的安装apk文件的名称,每个手机APP(软件)的包名都是唯一的. 那么我们怎样来获取包名以及包名的入口呢? 方法一: ...
- MyBatis_动态sql_foreach_mysql下foreach批量插入的两种方式
方法1: 笔记要点出错分析与总结工程组织数据库组织0.重新修改Bean类 修改1.定义接口 //批量插入 public void addEmps(@Param("emps") ...
- Mybatis获取自增主键的两种方式
<insert id="saveOne" parameterType="com.buwei.entity.User" > INSERT into u ...
- @Autowired获取配置文件中被注入实例的两种方式
一.说明 二.那么在JavaBean中如何通过@Autowired获取该实例呢?有两种方式: 1.直接获取 @RunWith(SpringJUnit4ClassRunner.class) @Conte ...
- java动态获取WebService的两种方式(复杂参数类型)
java动态获取WebService的两种方式(复杂参数类型) 第一种: @Override public OrderSearchListRes searchOrderList(Order_Fligh ...
- MyBatis开发Dao层的两种方式(Mapper动态代理方式)
MyBatis开发原始Dao层请阅读我的上一篇博客:MyBatis开发Dao层的两种方式(原始Dao层开发) 接上一篇博客继续介绍MyBatis开发Dao层的第二种方式:Mapper动态代理方式 Ma ...
随机推荐
- 十三 Struts2复杂类型的数据封装,List封装和Map封装
在实际开发当中,有可能遇到批量向数据库中插入记录,需要在页面中将数据封装到集合中.类似页面表达式方法 List封装: 前端JSP: <%@ page language="java&qu ...
- java模式之单例
懒汉式:需要实例的时候new public class Singleton_Lazy { private static Singleton_Lazy mSingleton; private Singl ...
- 高版本的Hibernate
我的查询语句是“from TA pojo where pojo.tbs.name='tb1'”,可结果报错. 高版本的Hibernate不能这样查Set了, 要改成这样: from TA pojo i ...
- js运算符的特殊应用
是否包含指定字符: ~ 取整: | 取半: >> 成长值评级: || 判断奇偶: & 交换两个数字的值: ^= 2的n次方: << 和 ** 1 << n- ...
- 图片的onload事件与better-scroll结合[ 当fastclick插件和better-scroll发生冲突导致点击事件失效时,可以给需要点击的元素加一个class="needsclick"]
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 「luogu1613」跑路
传送门 Luogu 解题思路 对于所有可以用 \(2^k\) 形式表示的 \(dis(i,j)\),将\(i,j\)之间的 \(dis\) 置为 \(1\),可以用倍增 \(\text{Floyd}\ ...
- CSS如何实现三列布局?如果两端固定、中间是自适应又该如何做?
使用浮动布局来实现 左侧元素与右侧元素优先渲染,分别向左和向右浮动 中间元素在文档流的最后渲染,并将 width 设为 100%,则会自动压到左右两个浮动元素的下面,随后在中间元素中再添加一个div元 ...
- Python中turtle绘图学习笔记和实例
一.既然本次讲的主角是turtle函数库,那肯定得先了解一下它是什么 turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x.纵轴为y的坐标系原点,(0,0)位 ...
- java 外卖店优先级
[问题描述] “饱了么”外卖系统中维护着 N 家外卖店,编号 1 ∼ N.每家外卖店都有 一个优先级,初始时 (0 时刻) 优先级都为 0. 每经过 1 个时间单位,如果外卖店没有订单,则优先级会减少 ...
- IDEA中maven工程打包时使用跳过test模式