在 .NET 7.0 (C#) 中通过串口传输文件

问题描述 投票:0回答:1

我目前在 Visual Studio 中使用 .NET 7.0 框架。我正在尝试通过串行端口传输文件,但遇到了一些麻烦。我只是想知道是否有 NuGet 包或我必须做的事情才能使我能够传输所述文件。我在下面附上了我尝试过的代码,如果我犯了任何错误,请告诉我。

在 .NET4.8 中有一个 SerialPort 对象,但它在任何更高版本中都不适用。

SerialPort myPort = new SerialPort("COM3", 19200, Parity.None, 8, StopBits.One);
myPort.PortName = "COM3";
myPort.BaudRate = 19200;
myPort.Parity = Parity.None;
myPort.DataBits = 8;
myPort.StopBits = StopBits.One;

myPort.Open();

Data = FileBuild.SelectMany(s =>
        System.Text.Encoding.UTF8.GetBytes(s + Environment.NewLine)).ToArray();
// Data = FileBuild.SelectMany(BitConverter.GetBytes).ToArray();

myPort.Write(Data, 0, Data.Length);
myPort.Close();

提供的错误信息是:

System.IO.FileNotFoundException:“找不到文件‘COM3’。”

c# serial-port .net-7.0
1个回答
0
投票

您的代码看起来不错,但是您可以尝试配置 Handshake 属性以启用发送和接收数据的流量控制吗?你可以这样做:

SerialPort myPort = new SerialPort("COM3", 19200, Parity.None, 8, StopBits.One);
myPort.Handshake = Handshake.XOnXOff; // add this line to enable flow control
myPort.Open();

byte[] data = File.ReadAllBytes("path/to/your/file");
myPort.Write(data, 0, data.Length);

myPort.Close();

希望对你有帮助。如果不是,您应该检查您的 COM3 是否可用。该端口可能不可用或已被另一个进程使用。您可以放置 try catch 块并捕获异常以查看主要问题。

© www.soinside.com 2019 - 2024. All rights reserved.