我可以使用第三方 dll 将远程机器的完整 CNC 程序读取到字节缓冲区。之后,我必须逐行读取字节缓冲区并将其传输到字符串数组。(我不想将程序写入文件,我想在我的 Blazor 页面中逐行显示程序)
我编写了以下代码,将完整的缓冲区读入一个字符串。但我不能把它分成几行。我怎样才能做到这一点? 我通常应该阅读 CNC 程序,例如:
G0 G603
AAA:
Z=IC(-50)
Z=IC(50)
GOTOB AAA
M30
但是我的代码将 CNC 程序作为一行读取。
G0 G603 AAA:Z=IC(-50) Z=IC(50) GOTOB AAA M30
public Int32 doNCK_CopyFromNCAlloc(Int32 connnr, Int32 timeout, string path, out string CNC_File_Out)
{
Int32 result = 0;
Byte[] buff = null;
Int32 bufflen = 0;
String filename = path;
CNC_File_Out = "";
result = AGL4.NCK_CopyFromNCAlloc(connnr, filename, out buff, out bufflen, timeout);
if (result == 0)
{
b = buff;
parameter_value_string = BitConverter.ToString(b, 0);
parameter_value_string_UTF8 = System.Text.Encoding.UTF8.GetString(b);
CNC_File_Out= parameter_value_string_UTF8.Replace("\0", string.Empty);
}
Return_Read_CNC_File = result;
return result;
}
Update-1(字节输出如下)
47-30-20-47-36-30-33-0D-0A-41-41-41-3A-0D-0A-5A-3D-49-43-28-2D-35-30-29 -0D-0A-5A-3D-49-43-28-35-30-29-0D-0A-47-4F-54-4F-42-20-41-41-41-0D-0A-4D-33 -30-0D-0A-0D-0A
最佳答案
只需读取字节即可得到所需的字符串,包括 Windows 系统换行符:
CNC_File_Out = Encoding.UTF8.GetString(buff, 0, buff.length);
不需要 BitConverter.ToString()
并替换空终止符。
关于c# - 在我的 C# 应用程序中。我正在将远程机器的 CNC 程序读入字节缓冲区。如何将这个字节缓冲区逐行读取到字符串数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73259537/