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 ...
随机推荐
- 9 HTML DOM事件监听&版本兼容&元素(节点)增删改查
事件监听: 语法:element.addEventListener(event, function, useCapture); event:事件的类型,触发什么事件,注意不需要on作为前缀,比如cli ...
- tensorflow简介、目录
目前工作为nlp相关的分类及数据治理,之前也使用tensorflow写过一些简单分类的代码,感受到深度学习确实用处较大,想更加系统和全面的学习下tensorflow的相关知识,于是我默默的打开了b站: ...
- KNN-学习笔记
仅供学习使用 练习1 # coding:utf-8 # 2019/10/16 16:49 # huihui # ref: import numpy as np from sklearn import ...
- USACO 2019 December Contest 随记
Forewords 今年 USACO 的比赛变化挺大的,有部分分了,而且不再是固定十个点了(部分分只说这几个点满足这几个性质,以为十个点的我还高兴了一会,一提交,...),除此之外居然赛后还排名了.这 ...
- Centos7精简版安装常用扩展插件
一.安装ifconfig *确认本机是否真实存在ifconfig* echo $PATH 查看环境变量路径 ls /usr/sbin/ 查看此路径下是否有ifconfig这个程序 find / -na ...
- win10安装Oracle11g
第一步,下载 oracle 下载地址,官网(需要登录注册): http://download.oracle.com/otn/nt/oracle11g/112010/win64_11gR2_databa ...
- Rabbitmq概念用法
MQ全称为Message Queue, 是一种分布式应用程序的的通信方法,它是消费-生产者模型的一个典型的代表,producer往消息队列中不断写入消息,而另一端consumer则可以读取或者订阅队列 ...
- LUOGU P6034 Ryoku与最初之人笔记 简要题解
比赛的时候有个地方忘记取模怒砍80,调了一下午Orz(虽然我总共貌似就打这个比赛半个多小时 我们一眼看到涉及到公约数/同余 和 xor,所以我们想到了一些关于xor的性质 a+b >= a xo ...
- 横竖屏切换Activity的生命周期
横竖屏切换的时候Activity的生命周期如下: 1.新建一个Activity,并把各个生命周期打印出来 2.运行Activity,得到如下信息 onCreate--> onStart--> ...
- luogu P2756 飞行员配对方案问题(Dinic板子)
建立一个超级源点,将每个外籍飞行员连一条capacity为1的路,一个超级汇点,每个英国飞行员也连一条capacity为1的路,根据读入在英国飞行员和外籍飞行员连接capacity为1的路,匹配方案就 ...