繁体   English   中英

如何更改用于库的端口名称?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM