gpt4 book ai didi

c# - SerialPort 不使用长字符串写入数据 - 已修复

转载 作者:太空宇宙 更新时间:2023-11-03 17:03:06 24 4
gpt4 key购买 nike

我正在编写一个程序,将 channel urlchannel names 写入设备。我正在尝试编写长度为 254 的 channel urls。较短的 url(我还没有找到阈值)确实有效。更奇怪的是 channel names 只有 16 个字符长,而且这些也只在 channel urls 较短时写入。

我有以下有效的代码:

            for (int i = 0; i < numberOfChannels; i++)
{
string hexString = String.Format("{0:X1}", i);
Serialport.WriteLine("channel 2 " + hexString + " " + channelURLs[i]);
System.Threading.Thread.Sleep(1000);
Serialport.WriteLine("channel 1 " + hexString + " " + channelnames[i]);
System.Threading.Thread.Sleep(1000);
}

但是,我不想让我的代码为写入 1 个 channel 而休眠 2 秒。问题:如何在不等待 2 秒的情况下通过串口写入那些长字符串?

这不起作用:

            for (int i = 0; i < numberOfChannels; i++)
{
string hexString = String.Format("{0:X1}", i);
if (Serialport.WriteLine("channel 2 " + hexString + " " + channelURLs[i]))
{
Debug.WriteLine("this should happen before the string is written");
}
if(Serialport.WriteLine("channel 1 " + hexString + " " + channelnames[i]))
{
Debug.WriteLine("this should happen before the string is written");
}
}

调试行是写的,字符串不是通过comport写的。

我的 Serialport.WriteLine 函数如下所示:

    public static bool WriteLine(string data)
{
if (SerPort.IsOpen)
{
Debug.WriteLine("PORT OPEN, WRITING "+ data);
SerPort.WriteLine(data);
return true;
}
else return false;

}

更新:我发现当我断开连接并重新连接时,会写入第一个 URL。显然它与一些缓冲区有关?

更新 2:这是我设置串口的方式:

                    SerPort.BaudRate = 115200;
SerPort.DataBits = 8;
SerPort.StopBits = StopBits.One;
SerPort.PortName = comnr;
SerPort.Handshake = Handshake.None;
Serialport.SerPort.ReadTimeout = 1000;
Serialport.SerPort.WriteTimeout = 1000;
SerPort.DataReceived += SerPort_Datareceived;
SerPort.Open();
SerPort.DiscardInBuffer();
SerPort.DiscardOutBuffer();

更新 3:修复了问题我找到了我的问题所在。在发送这里显示的命令之前,我发送了一个需要一些时间来处理的命令。如果设备在此过程中收到数据,它将停止接收数据。我用计时器更新了我的代码,以在发送下一个命令之前检查设备的 OK 响应。

最佳答案

这取决于您正在使用的设备。如果您向它发送太多字节,它可能无法处理所有字节。

您可以尝试将等待时间从 1000 毫秒减少到例如 200 毫秒。

您也可以尝试发送数据包...例如,以 50 个字符的包发送长字符串,在它们之间等待一段时间(例如 100 毫秒)。

更新 1:

同时尝试将波特率从 115200 降低到 9600。

关于c# - SerialPort 不使用长字符串写入数据 - 已修复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16546762/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com