我可以用第三方DLL将远程机床的完整数控程序读取到字节缓冲区中.之后,我必须逐行读取字节缓冲区并将其传输到字符串array.(我不想将程序写到文件中,我想在Blazor页面中逐行显示程序行)

我编写了以下代码,将整个缓冲区读入一个字符串.但我不能把它分成几行.我怎么能做到这一点? 我通常应该阅读数控程序,例如:

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;
    }

更新-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()并替换空终止符.

Csharp相关问答推荐

不要在 Blazor Server 应用程序中包含特定配置的所有 @page

单击 UI 按钮时统一光标锁定

EF Core 异步 LINQ Where(predicate).ToListAsync() 错误:CS1061 IEnumerable 不包含 ToListAsync()

向嵌套 JSON 文档中的数组添加新对象

在 struct 中使用字节数组是不是一个坏主意(与使用多个基本类型相比)?

C# 从 JSON 反序列化 KeyValuePair

C# - Microsoft Graph - 无法访问 OneDrive/SharePoint 站点文档库

vb.net 中的 IComparer 问题,但在 C# 中同样有效

与..匹配的记录和位置模式

是否可以通过脚本向游戏对象添加渲染纹理?

奇怪的编译器错误,在任务运行中的 lambda 中返回类型

无法覆盖返回 Task 的方法

是否可以在 C# 11 中自动实现 IEquatable 和 IComparable

FromBody 不会忽略在 POST 上用 JsonIgnore 修饰的属性

C# Regex 使用空格拆分但排除 [: 和 :] 特殊字符之间的文本

使用 Entity Framework 在 datagridview 中编辑列标题标题

如何在循环中等待 x 秒 c# - unity

System.CommandLine 命令自定义验证器:如何搜索

HttpListener 忽略请求中#(哈希)之后的所有内容

string.Equals() 和 "string".Equals() 之间的区别