Wos*_*ame 2 string serialization ada stream
我正在尝试编写一个快速程序,以将AT命令发送到串行端口调制解调器。我已经使用正确的设置(B115200、8N1等)打开了端口,下面的代码示例中的String'Write调用实际上可以正常工作。
现在,我要添加代码以将调制解调器的响应读回字符串。但是,我无法事先知道响应的长度,因此out String除非我不知道长度,否则无法创建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;
Run Code Online (Sandbox Code Playgroud)
我这里有鸡肉/鸡蛋的情况。
答案可能是一次读取输入的一个字符,直到到达终止符。
您可以分配足够长的缓冲区以容纳尽可能长的响应(例如1024个字节!)(或者可以使用递归-但这会更复杂,并且难以诊断可能的溢出错误)。