[英]How to Change Name of Ports for use with Libraries?
我希望在运行 Windows 10 IoT Core 的 SBC 上使用串行 Modbus。 当使用Windows.Devices.SerialCommunication库中的 SerialDevice class 时,我能够使用 RS-485 通过串行端口进行写入。
我的 SBC 上的串行端口没有标记为 COM1、COM2 等。我必须使用devcon.exe stack *
命令找到它们。 我的端口名称为 PNP0501#1 和 PNP0501#2,我可以将它们用作 SerialDevice 中的端口名称,并且可以正常工作。
此代码适用于通过串口发送消息
DeviceInformationCollection devices = await DeviceInformation.FindAllAsync();
if (devices.Count > 0)
{
for (int i = 0; i < devices.Count; i++)
{
if (devices[i].Id.Contains("PNP0501#2"))
{
GpioStatus = string.Format("Connecting... {0} found", devices[i].Id);
DeviceInformation deviceInfo = devices[i];
SerialDevice serialDevice = await SerialDevice.FromIdAsync(deviceInfo.Id);
serialDevice.BaudRate = 9600;
serialDevice.DataBits = 8;
serialDevice.StopBits = SerialStopBitCount.Two;
serialDevice.Parity = SerialParity.None;
serialDevice.Handshake = SerialHandshake.None;
DataWriter data = new DataWriter(serialDevice.OutputStream);
for (int j = 0; j < 15; j++)
{
data.WriteString("Test message");
GpioStatus = string.Format("Message sent {0}", j);
await data.StoreAsync();
await Task.Delay(250);
}
data.DetachStream();
我希望使用 Modbus 库来更轻松地遵循 Modbus 协议。 我正在研究 EasyModbusTCP,但对任何与串行通信一起使用的库都是开放的。
当我尝试使用此库设置 modbus 客户端时,它会询问端口名称,然后我输入 PNP0501#1,因为这是该端口的名称,它成功地用于直接串行消息传递。 但是,每次说该名称不以 COM 开头时都会引发错误。
SerialPort serialPort = new SerialPort("PNP0501#2");
IModbusSerialMaster f = ModbusSerialMaster.CreateRtu(serialPort);
byte slaveId = 1;
ushort startAddress = 100;
ushort[] registers = new ushort[] { 1, 2, 3 };
f.WriteMultipleRegisters(slaveId, startAddress, registers);
有什么方法可以更改此设备的名称以使用 COM 名称,以便它可以与此库一起使用? 是否有任何库可以使用该设备的全名,而没有 COM 这个词。 任何帮助将非常感激!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.