SerialDevice 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
表示串行端口。 对象提供方法和属性,应用可以使用这些方法和属性来查找系统上的串行端口并与之交互。
public ref class SerialDevice sealed : IClosable
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
class SerialDevice final : IClosable
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
public sealed class SerialDevice : System.IDisposable
Public NotInheritable Class SerialDevice
Implements IDisposable
- 继承
- 属性
- 实现
Windows 要求
设备系列 |
Windows 10 (在 10.0.10240.0 中引入)
|
API contract |
Windows.Foundation.UniversalApiContract (在 v1.0 中引入)
|
示例
using System;
using Windows.Devices.Enumeration;
using Windows.Devices.SerialCommunication;
using Windows.Storage.Streams;
...
DeviceInformationCollection serialDeviceInfos = await DeviceInformation.FindAllAsync(SerialDevice.GetDeviceSelector());
foreach (DeviceInformation serialDeviceInfo in serialDeviceInfos)
{
try
{
SerialDevice serialDevice = await SerialDevice.FromIdAsync(serialDeviceInfo.Id);
if (serialDevice != null)
{
// Found a valid serial device.
// Reading a byte from the serial device.
DataReader dr = new DataReader(serialDevice.InputStream);
int readByte = dr.ReadByte();
// Writing a byte to the serial device.
DataWriter dw = new DataWriter(serialDevice.OutputStream);
dw.WriteByte(0x42);
}
}
catch (Exception)
{
// Couldn't instantiate the device
}
}
注解
需要串行设备功能 serialCommunication
才能使用 SerialDevice
类。 有关详细信息,请参阅 Windows.Devices.SerialCommunication。
创建 SerialDevice 对象
- (AQS) 字符串生成高级查询语法,该字符串包含用于在枚举的设备集合中查找设备的搜索条件。 如果你有供应商和产品标识符,请调用 GetDeviceSelectorFromUsbVidPid。
- 将检索到的字符串传递给 FindAllAsync。 调用检索 DeviceInformationCollection 对象。
- 循环访问集合。 每次迭代都会获取 一个 DeviceInformation 对象。
- 获取 DeviceInformation.Id 属性值。 字符串值是设备接口路径。 (例如
\\?\usb#vid_03eb&pid_2157&mi_01#7&1435ec7f&0&0001#{86e0d1e0-8089-11d0-9ce4-08003e301f73}
) 。 - 通过传递设备接口字符串调用 FromIdAsync 并获取
SerialDevice
对象。 如果这会引发异常或返回 null,则可能是:- 设备接口路径无效
- 设备接口路径不重新表示串行设备
- 应用程序缺少
serialCommunication
功能 - 无法访问串行设备。 (请参阅 Windows.Devices.SerialCommunication)
读取和写入数据
然后,可以使用 SerialDevice 对象通过 Windows.Storage.Streams 命名空间从串行端口读取或写入串行端口。
- 通过获取 SerialDevice.InputStream 属性来获取对输入流的引用。
- 通过在 DataReader 构造函数中指定输入流来创建 DataReader 对象。
- 通过获取 SerialDevice.OutputStream 属性来获取对输出流的引用。
- 通过在 DataWriter 构造函数中指定输出流,创建 DataWriter 对象。
属性
BaudRate |
获取或设置波特率。 |
BreakSignalState |
获取或设置中断信号状态。 |
BytesReceived |
表示输入流的上次读取操作接收的字节数。 |
CarrierDetectState |
获取运营商检测 (CD) 行的状态。 |
ClearToSendState |
获取 Clear-to-Send (CTS) 行的状态。 |
DataBits |
传输或接收的每个字符值中的数据位数,不包括奇偶校验位或停止位。 |
DataSetReadyState |
获取数据设置就绪 (DSR) 信号的状态。 |
Handshake |
获取或设置流控制的握手协议。 |
InputStream |
包含串行端口上接收的数据的输入流。 |
IsDataTerminalReadyEnabled |
获取或设置一个值,该值启用数据终端就绪 (DTR) 信号。 |
IsRequestToSendEnabled |
获取或设置一个值,该值使请求发送 (RTS) 信号。 |
OutputStream |
获取一个输出流,应用可以写入要通过串行端口传输的数据。 |
Parity |
获取或设置用于错误检查的奇偶校验位。 |
PortName |
获取串行通信的端口名称。 |
ReadTimeout |
获取或设置读取操作的超时值。 |
StopBits |
获取或设置每个字节的标准停止位数。 |
UsbProductId |
获取 USB 设备描述符的 idProduct 字段。 此值指示特定于设备的产品标识符,由制造商分配。 |
UsbVendorId |
获取 USB 设备描述符的 idVendor 字段。 该值指示 USB 规范委员会分配的设备供应商标识符。 |
WriteTimeout |
获取或设置写入操作的超时值。 |
方法
Close() |
释放对之前通过调用 FromIdAsync 获取的 SerialDevice 对象的引用。 |
Dispose() |
执行与释放或重置非托管资源关联的应用程序定义的任务。 |
FromIdAsync(String) |
启动创建 SerialDevice 对象的异步操作。 |
GetDeviceSelector() |
获取高级查询语法 (AQS) 字符串,应用可以传递给 DeviceInformation.FindAllAsync 以查找系统上的所有串行设备。 |
GetDeviceSelector(String) |
获取高级查询语法 (AQS) 字符串,应用可以传递给 DeviceInformation.FindAllAsync ,以便通过指定串行设备端口名称来查找该设备。 |
GetDeviceSelectorFromUsbVidPid(UInt16, UInt16) |
获取高级查询语法 (AQS) 字符串,应用可以传递给 DeviceInformation.FindAllAsync ,以便通过指定其 VID 和 PID 来查找特定的串行转 USB 设备。 |
事件
ErrorReceived |
在串行端口上发生错误时调用的事件处理程序。 |
PinChanged |
当信号或线路的状态在串行端口上更改时调用的事件处理程序。 |