• C#生成anb文件


    今天我们来看看C#中如何生成anb文件。

    这个anb文件本来是要对接别的平台的,人家提供给我们一个协议,然后通过程序来生成,然后对方会根据生成的anb文件进行解析,然后得到心电图啥的。

    代码如下:

    private void createFileBtn_Click(object sender, EventArgs e)
    {
    string fileName = “demo.anb”;
    string filePath = @“D:” + fileName;
    bool isFile = Directory.Exists(filePath);
    if (isFile)
    //{
    // Directory.CreateDirectory(filePath);
    //}
    //else
    {
    Directory.Delete(filePath);
    // Directory.CreateDirectory(filePath);
    }
    string txtJson = this.txtJson.Text;
    if (string.IsNullOrWhiteSpace(txtJson))
    {
    MessageBox.Show(“请输入对应的字符串”);
    return;
    }
    string fileOtherPath = this.txtFilePath.Text;
    if (string.IsNullOrWhiteSpace(fileOtherPath))
    {
    MessageBox.Show(“请输入ECG文件路径”);
    return;
    }
    // byte[] txtByte = Encoding.Unicode.GetBytes(txtJson);
    FileStream fs = new FileStream(fileOtherPath, FileMode.Open, FileAccess.Read);
    byte[] fsEcg = new byte[fs.Length];
    fs.Read(fsEcg, 0, Convert.ToInt32(fs.Length));
    fs.Close();

            var allVoltageText = File.ReadAllText(fileOtherPath);
            allVoltageText = allVoltageText.Trim('"');
            var allVoltageValues = allVoltageText.Split(',').Select(t => short.Parse(t)).ToArray();
    
            //List list = new List();
            //list.AddRange(txtByte);
            //list.AddRange(fsEcg);
            //byte[] data = list.ToArray();
            //Stream input = new MemoryStream(data);
            //FileStream file = new FileStream(filePath, FileMode.OpenOrCreate);
            //BinaryWriter binaryWriter = new BinaryWriter(file);
            //for (int i = 0; i < txtByte.Length; i++)
            //{
            //    binaryWriter.Write(txtByte[i]);
            //}
            //for (int i = 0; i < fsEcg.Length; i++)
            //{
            //    binaryWriter.Write(fsEcg[i]);
            //}
            //char[] cChar = Encoding.ASCII.GetChars(txtByte);
            //binaryWriter.Write(cChar);
            //char[] ecgChar = Encoding.ASCII.GetChars(fsEcg);
            //binaryWriter.Write(ecgChar);
            //binaryWriter.Flush();
            //binaryWriter.Close();
            //file.Close();
            Stream stream = new FileStream(filePath, FileMode.OpenOrCreate);
    
    
    
            //int count = fsEcg.Length >> 1;
            //short[] dest = new short[count];
            //for (int i = 0; i < count; i++)
            //{
            //    dest[i] = (short)(fsEcg[i * 2] << 8 | fsEcg[2 * i + 1] & 0xff);
            //}
    
            Write(stream, txtJson, allVoltageValues);
            stream.Dispose();
    
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    /// 
            /// 生成.anb文件
            /// 
            /// 目标文件流
            /// 文件头结构
            /// 心电数据
            /// 
            /// 
            public static bool Write(Stream stream, string header, short[] leadDatas)
            {
                BinaryWriter bw = new BinaryWriter(stream);
                try
                {
                    byte[] headerBuffer = Encoding.UTF8.GetBytes(header);
                    bw.Write(headerBuffer.Length);
                    bw.Write(headerBuffer);
                    for (int i = 0; i < leadDatas.Length; i++)
                    {
                        bw.Write(leadDatas[i]);
                    }
                    //if (header.IsTimeOrder)
                    //{
                    //    for (int i = 0; i < leadDatas[0].Length; i++)
                    //    {
                    //        for (int j = 0; j < leadDatas.Length; j++)
                    //        {
                    //            bw.Write(convertData(leadDatas[j][i]));
                    //        }
                    //    }
                    //}
                    //else
                    //{
                    //    foreach (short[] leadData in leadDatas)
                    //    {
                    //        foreach (short data in leadData)
                    //        {
                    //            bw.Write(convertData(data));
                    //        }
                    //    }
                    //}
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex);
                    return false;
                }
                finally
                {
                    bw.Flush();
                }
    
                return true;
            }
    
        }
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58

    生成的如下图所示:
    在这里插入图片描述

  • 相关阅读:
    服务器硬件基础知识
    redux、mobx
    C++之特殊函数成员
    4. Linux-riscv内存管理17-20问
    第5章 AOP中的代理模式应用
    MySQL - 4种基本索引、聚簇索引和非聚索引、索引失效情况
    1965. 丢失信息的雇员
    深入分布式一致性:Raft 和 etcdRaft
    英语写作中“限制”limit、restrict、constrain的用法
    Android 自定义view中根据状态修改drawable图片
  • 原文地址:https://blog.csdn.net/qq_34137397/article/details/126990050