gpt4 book ai didi

string - Ada - (Streams) 如何在事先不知道字符串长度的情况下正确调用 String'Read()

转载 作者:行者123 更新时间:2023-12-02 11:40:28 24 4
gpt4 key购买 nike

我正在尝试编写一个快速程序来将 AT 命令发送到串行端口调制解调器。我已经使用正确的设置(B115200、8N1 等)打开了端口,并且下面代码示例中的 String'Write 调用实际上工作正常。

现在我添加代码以将调制解调器的响应作为字符串读回。但是,我无法事先知道响应的长度,因此无法创建字符串变量来传递给 out String 参数,除非我确实知道长度。

  package GSC renames GNAT.Serial_Communications;

SP : aliased GSC.Serial_Port;

function Send (Port : in GSC.Serial_Port; S : in String) return String is
begin
String'Write (SP'Access, S);
delay 0.1;

declare
Retval : String; -- NOT VALID - needs to be initialised
begin
String'Read (SP'Access, Retval);
return Retval;
end;
end Send;

我这里有先有鸡还是先有蛋的情况。

最佳答案

答案可能是一次读取一个字符,直到到达终止符。

您可以分配一个足够长的缓冲区来容纳最长的响应(例如 1024 字节!)(或者可以使用递归 - 但这会更复杂,并且很难诊断可能的溢出错误)。

关于string - Ada - (Streams) 如何在事先不知道字符串长度的情况下正确调用 String'Read(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59033818/

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