Sebia电泳绘图

Sebia这仪器真是个奇葩的存在。自己仪器有图不存文件,LIS要的话还得自己按数据绘制。还有蛋白电泳、固定电泳、画不画参考线等不同要求(奇葩的很)。按理这种事不属于lis范围,无奈国内lis太卷,各种舔狗厂商才让这种仪器大行其道。

蛋白电泳机器原图
在这里插入图片描述

蛋白电泳绘制图
在这里插入图片描述

按文档位置取数据绘图
在这里插入图片描述

在这里插入图片描述

绘图逻辑片段(数据以J开头)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using PreDeal.Interface;
using LIS.Model.Bussiness;
using LIS.DAL.DataAccess;
using PreDeal.Ftp;
using PreDeal.Attributes;
using System.Text.RegularExpressions;
using System.Drawing;
using System.Windows.Forms;
using System.Drawing.Drawing2D;
using System.IO;
using System.Collections;

namespace PreDeal
{
    ///<summary  NoteObject="Class">
    /// [功能描述:Sebia电泳仪的数据和图像处理 蛋白电泳] <para/>
    /// [创建者:zlz] <para/>
    /// [创建时间:] <para/>
    ///<说明>
    ///  [说明:Sebia电泳仪的数据和图像处理处理,处理数据格式
    ///  J00012022012401                                            000                            00000g/dl                                                                                                                                                          ADM2712202106Albumin   Alpha 1   Alpha 2   Beta 1    Beta 2    Gamma                                             051.2005.3008.2003.9002.6028.800000000000000000000000000000000000000000000000000000000000000000000001         2                             026.4002.8000000000000000000000000000000001.0501.00                                                                                                                                                                                                                                      000300A0100006400440111010000000000000000008000000000000000000000000000000000000000000000010001000100010002000200020004000400040005000500050006000700080009000B000B000B000C000D000E001100120013001400150015001500140012000F000D000C0009000900090009000B000B000C000D000E0011001300150019001B00210027002F003900450051006000710085009E00BA00D900FC0123014D017F01BC0203025A02C103450402052206CA090B0BAF0E180FA40FFF0F060CED0A3D078B053D037F026701B0012D00CD0088005D00410033002A0024001F001C001B801A001B001C00200025002B003200390042004D0059006700740086009A00B200D100F80124014D01690168014D011F00E500AD008100650059005480530053005300530053005300540058005E0065006E00780081008B0093009E00AC00BE00D400EB01000111011C011F011D0116010D010100F600E700D700C500B1009E008D007F0074006B0065005F005900550051004E804E005000530058005F00670075008B00A500C400E000F60104010600F800DD00BD009B007D00640054004E804D004E005100520052005200520053005A00650071007A00830087008A0086007F0074006B0064005F805E0061006A00720078007B00810088009400A600BE00DE01070140018E01FD0295035F045E058A06C207DB08A008D60853073F05D5045702FB01E5012600B800800060004D00400037002E0026001E00170012000E000B0008000700050004000200010001000000000000000000000001000100020002000200020002000200040004000400040004000400040004000400028002|**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
    ///  ]<para/>
    ///</说明>
    ///<修改记录>
    ///    [修改时间:]<para/>
    ///    [修改内容:]<para/>
    ///</修改记录>
    ///<修改记录>
    ///    [修改时间:本次修改时间]<para/>
    ///    [修改内容:本次修改内容]<para/>
    ///</修改记录>
    ///</summary>
    [Remark(Remark = "Sebia血清蛋白电泳仪的数据和图像处理\n")]
    public class DealSebiaELPJ : BaseDeal, IPreDeal, ITimer
    {

        /// <summary>
        /// 流水号
        /// </summary>
        private static string epis = "";

        /// <summary>
        /// 前处理
        /// </summary>
        /// <param name="result">结果</param>
        /// <param name="machID">仪器ID</param>
        /// <param name="dealProcess">处理程序</param>
        /// <param name="index">当前文件的第几行</param>
        /// <param name="fileName">当前读取的文件全名</param>
        /// <returns></returns>
        public bool PreDeal(string result, string machID, string dealProcess, int index, string fileName)
        {
            try
            {
                string head = result.Split(' ')[0];
                string sampleNo = head.Substring(5, head.Length - 5);
                string episAll = result.Split(' ')[0];
                epis = sampleNo.Split('-')[0];

                string value1Name = result.Substring(266, 10);
                string value1 = result.Substring(367, 5);
                string value2Name = result.Substring(276, 10);
                string value2 = result.Substring(372, 5);
                string value3Name = result.Substring(286, 10);
                string value3 = result.Substring(377, 5);
                string value4Name = result.Substring(296, 10);
                string value4 = result.Substring(382, 5);
                string value5Name = result.Substring(306, 10);
                string value5 = result.Substring(387, 5);
                string value6Name = result.Substring(316, 10);
                string value6 = result.Substring(392, 5);
                string value7Name = result.Substring(326, 10);
                string value7 = result.Substring(397, 5);
                string value8Name = result.Substring(336, 10);
                string value8 = result.Substring(402, 5);
                string value9Name = result.Substring(346, 10);
                string value9 = result.Substring(407, 5);
                string value10Name = result.Substring(356, 10);
                string value10 = result.Substring(412, 5);
                string value11 = result.Substring(557, 170).Trim();

                //分割坐标
                List<string> TroughsArr = new List<string>();
                string val = result.Substring(798, 4);
                TroughsArr.Add(val.TrimStart('0'));
                val = result.Substring(802, 4);
                TroughsArr.Add(val.TrimStart('0'));
                val = result.Substring(806, 4);
                TroughsArr.Add(val.TrimStart('0'));
                val = result.Substring(810, 4);
                TroughsArr.Add(val.TrimStart('0'));
                val = result.Substring(814, 4);
                TroughsArr.Add(val.TrimStart('0'));
                val = result.Substring(818, 4);
                TroughsArr.Add(val.TrimStart('0'));
                val = result.Substring(822, 4);
                TroughsArr.Add(val.TrimStart('0'));
                val = result.Substring(826, 4);
                TroughsArr.Add(val.TrimStart('0'));
                List<int> flagList = new List<int>();
                for (int zi = TroughsArr.Count - 1; zi >= 0; zi -= 2)
                {
                    string start = TroughsArr[zi - 1];
                    string end = TroughsArr[zi];
                    if (start != "")
                    {
                        flagList.Add(300 - Convert.ToInt32(start));
                    }
                    if (end != "")
                    {
                        flagList.Add(300 - Convert.ToInt32(end));
                    }
                }

                //处理数据
                DealData(value1Name + "\\" + value1 + "," + value2Name + "\\" + value2 + "," + value3Name + "\\" + value3 + "," + value4Name + "\\" + value4 + "," + value5Name + "\\" + value5 + "," + value6Name + "\\" + value6 + "," + value7Name + "\\" + value7 + "," + value8Name + "\\" + value8 + "," + value9Name + "\\" + value9 + "," + value10Name + "\\" + value10 + ",Remark" + "\\" + value11 + ",episall\\" + episAll + ",resall\\" + result, machID, sampleNo, dealProcess);
                //取出图形串
                string imgStr = result.Substring(830, 1200);
                List<Dto> dataList = new List<Dto>();
                int maxY = 0;
                int max1Index = 0;
                int max1Data = 0;

                int max2Index = 0;
                int max2Data = 0;

                int max3Index = 0;
                int max3Data = 0;

                for (int i = 0; i < imgStr.Length && i < 1200; i += 4)
                {
                    int startIndex = i;
                    int endIndex = i + 4;
                    if (endIndex > imgStr.Length)
                    {
                        endIndex = imgStr.Length;
                    }
                    Dto dto = new Dto();
                    dto.Type = imgStr.Substring(startIndex, 1);
                    if (dto.Type == "4" || dto.Type == "C" || dto.Type == "1" || dto.Type == "5")
                    {
                        continue;
                    }
                    else
                    {
                        dto.Y = Convert.ToInt32(imgStr.Substring(startIndex + 1, endIndex - startIndex - 1), 16);
                    }
                    if (dto.Y > maxY)
                    {
                        maxY = dto.Y;
                    }
                    if (i / 4 > 135 && i / 4 < 165)
                    {
                        if (max1Data < dto.Y)
                        {
                            max1Data = dto.Y;
                            max1Index = i / 4;
                        }
                    }
                    if (i / 4 > 170 && i / 4 < 195)
                    {
                        if (max2Data < dto.Y)
                        {
                            max2Data = dto.Y;
                            max2Index = i / 4;
                        }
                    }
                    if (i / 4 > 230 && i / 4 < 245)
                    {
                        if (max3Data < dto.Y)
                        {
                            max3Data = dto.Y;
                            max3Index = i / 4;
                        }
                    }
                    dataList.Add(dto);
                }
                int imgY = 580;
                //创建空位图
                Image img = new Bitmap(680, imgY);
                //获得画图句柄
                Graphics g = Graphics.FromImage(img);
                g.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;
                g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
                g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
                g.Clear(Color.White);
                int x = 40;
                int y = 40;
                //画坐标
                Pen pen = new Pen(Color.Black);
                pen.Width = 2;
                g.DrawLine(pen, 40, imgY - y, 640, imgY - y);
                for (int i = 0; i < 300; i += 15)
                {
                    g.DrawLine(pen, 40 + i * 2, imgY - y, 40 + i * 2, imgY - y - 4);
                    Point p = new Point(40 + i * 2, imgY - y + 3);
                    Font myFont = new Font("宋体", 8, FontStyle.Regular);
                    Brush bush = new SolidBrush(Color.Black);
                    g.DrawString(i.ToString(), myFont, bush, p);
                }

                int preY = -1;
                int curindex = 0;
                List<string> colorStr = new List<string>();
                colorStr.Add("#F80000");
                colorStr.Add("#1E90FF");
                colorStr.Add("#FFA500");
                colorStr.Add("#800080");
                colorStr.Add("#FFC0CB");
                colorStr.Add("#008000");
                colorStr.Add("#FFFF00");
                colorStr.Add("#DEB887");
                int indexColor = 0;
                int drawX = -1;
                Pen pen1 = new Pen(Color.Black);
                pen1.Color = ColorTranslator.FromHtml(colorStr[indexColor]);
                //遍历点画图
                foreach (var d in dataList)
                {
                    drawX++;
                    if (indexColor < flagList.Count() && drawX == flagList[indexColor])
                    {
                        indexColor++;
                        pen1.Color = ColorTranslator.FromHtml(colorStr[indexColor]);
                    }
                    if (preY == -1)
                    {
                        pen = new Pen(Color.Black);
                        pen.Width = 1;
                        g.DrawLine(pen, x, imgY - Convert.ToInt32(d.Y * (imgY - y - 65.0) / maxY) - y, x, imgY - Convert.ToInt32(d.Y * (imgY - y - 25.0) / maxY) - y);
                    }
                    else
                    {
                        pen = new Pen(Color.Black);
                        pen.Width = 1;
                        g.DrawLine(pen, x, imgY - Convert.ToInt32(d.Y * (imgY - y - 65.0) / maxY) - y, x - 1, preY - y);
                    }
                    //画竖线填充
                    g.DrawLine(pen1, x, imgY - Convert.ToInt32(d.Y * (imgY - y - 65.0) / maxY) - y, x, imgY - y);
                    if (curindex == max1Index)
                    {
                        if (value1Name != "          ")
                        {
                            Point p = new Point(x - 8, imgY - Convert.ToInt32(d.Y * (imgY - y - 65.0) / maxY) - y - 20);
                            Font myFont = new Font("宋体", 12, FontStyle.Regular);
                            Brush bush = new SolidBrush(Color.Black);
                        }
                    }
                    if (curindex == max2Index)
                    {
                        if (value2Name != "          ")
                        {
                            Point p = new Point(x - 8, imgY - Convert.ToInt32(d.Y * (imgY - y - 65.0) / maxY) - y - 20);
                            Font myFont = new Font("宋体", 12, FontStyle.Regular);
                            Brush bush = new SolidBrush(Color.Black);
                        }
                    }
                    if (curindex == max3Index)
                    {
                        if (value3Name != "          ")
                        {
                            Point p = new Point(x - 8, imgY - Convert.ToInt32(d.Y * (imgY - y - 65.0) / maxY) - y - 20);
                            Font myFont = new Font("宋体", 12, FontStyle.Regular);
                            Brush bush = new SolidBrush(Color.Black);
                        }
                    }
                    preY = imgY - Convert.ToInt32(d.Y * (imgY - y - 65.0) / maxY);
                    x += 2;
                    curindex++;
                }
                img.Save(Application.StartupPath + "\\temp\\" + epis + ".bmp");
                string ftpPath = "";
                //得到ftp
                FtpService ftp = GetFtpHelper(machID, dealProcess, out ftpPath);
                //上传图片
                ftp.Upload(Application.StartupPath + "\\temp\\" + epis + ".bmp");
                System.IO.FileInfo fInfo = new System.IO.FileInfo(Application.StartupPath + "\\temp\\" + epis + ".bmp");
                System.IO.File.Delete(Application.StartupPath + "\\temp\\" + epis + ".bmp");
                //保存图片
                SaveImg(machID, epis, epis, ftpPath.Split('^')[3] + fInfo.Name, dealProcess, episAll);
                return false;
            }
            catch (Exception ex)
            {
                LIS.Core.Util.LogUtils.WriteExceptionLog("绘制Sebia电泳图发生错误", ex);
                return false;
            }
        }


        /// <summary>
        /// 内部数据实体
        /// </summary>
        private class Dto
        {
            /// <summary>
            /// 类型
            /// </summary>
            public string Type
            {
                get;
                set;
            }

            /// <summary>
            /// Y坐标
            /// </summary>
            public int Y
            {
                get;
                set;
            }
        }
    }
}

固定电泳,有参考线,出多个图
在这里插入图片描述

在这里插入图片描述

绘图逻辑片段(数据以F开头)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using PreDeal.Interface;
using LIS.Model.Bussiness;
using LIS.DAL.DataAccess;
using PreDeal.Ftp;
using PreDeal.Attributes;
using System.Text.RegularExpressions;
using System.Drawing;
using System.Windows.Forms;
using System.Drawing.Drawing2D;
using System.IO;
using System.Collections;

namespace PreDeal
{
    ///<summary  NoteObject="Class">
    /// [功能描述:Sebia电泳仪的数据和图像处理 固定电泳] <para/>
    /// [创建者:zlz] <para/>
    /// [创建时间:] <para/>
    ///<说明>
    ///  [说明:Sebia电泳仪的数据和图像处理处理,处理数据格式
    ///F00011907171832-ELP                                        000                            00000g/dl                                                                                                                                                          TS 2207201901?                                                                                                   100.0000.0000.0000.0000.0000.0000.0000.0000.0000.000000000000000000000000000000000000000000000000000                                        000.0000.0000.0000.000000000000000000000001.0001.00                                                                                                                                                                                                                                      000300A01000000000000000000000000000000000080060006000600060006000600060006000600060006000600060007000800080008000900090009000A000C000E00110015001B0023002C0039004700560067007C009800C50106015901B301FF022B022901F701A5014500ED00A600740055003F002F00220017000F000B0009000800060006000600060005000500050005000500050005000500050005000500050005000500050005000500050005000500050005000500050005000600060006000600060006000600060006000600060006000600060007000800080009000A000B000C000E000F001100140017001B0020002500280029002800260022001D00180015001400120012001300130014001400140014001500150017001A001C001F002100240027002A002E003100340035003500340031002D0029002600230020001D001B0018001500130011000F000D000C000B000A0009000900090009000A000B000B000E001100180021002A00310032002F0028001F00170011000E000B000900080007000600060006000600080009000C0011001400170018001700150013001200120015001B002600390057008800D6014E020303150487060A073207A1071F05C604090263012C007A002B000E00060003000300030003000300040004000500050005000400040003000300030003000200020002000200020001000100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000|**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
    ///F00021907171832-IgG                                        000                            00000g/dl                                                                                                                                                          TS 2207201901?                                                                                                   100.0000.0000.0000.0000.0000.0000.0000.0000.0000.000000000000000000000000000000000000000000000000000                                        000.0000.0000.0000.000000000000000000000001.0001.00                                                                                                                                                                                                                                      000300A01000000000000000000000000000000000080720074007500770079007C007E00800082008500870089008B008E0090009200950097009A009D00A100A600AB00B200B900C200CD00DA00EB00FE0114012E0150017E01BF0211026E02C40301031202F202A9024B01ED019E01670144012F012201190112010D010B010B010C010D010E010F010F010F010E010D010C010A01070104010000FB00F600F000EA00E400DD00D600CE00C700C000B900B100AA00A3009D00960090008B00860081007D007A007600730071006E006C006A00690068006700670067006600670067006700680069006A006C006F00720076007B007F0084008700880087008500830081007F007F007F0080008200830084008300820081007E007C007900760073006F006B006800650063006200610060005E005C005900550050004B00460042003E003B0038003600330030002E002C002A002800270027002700270027002700280029002B002D002F003300390042004A005200550054005000490042003D003A00380038003800380039003B003E00410046004D0056005F00690072007A008100890091009C00AA00BB00CF00E6010201220146016E019C01CE02010229023C022B01F10194012600BD0068002F00130006000200010000000000000000000000000001000100010001000100010000000000000000000000000000000000000000000000000000000000000000000000000001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100018001|**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
    ///F00031907171832-IgA                                        000                            00000g/dl                                                                                                                                                          TS 2207201901?                                                                                                   100.0000.0000.0000.0000.0000.0000.0000.0000.0000.000000000000000000000000000000000000000000000000000                                        000.0000.0000.0000.000000000000000000000001.0001.00                                                                                                                                                                                                                                      000300A01000000000000000000000000000000000080080008000800080008000800080008000800080008000800080008000900090009000A000A000A000B000D001000140018001E00260031003E004F00610079009600C10100014F01A901F9022B0231020701B7015600FB00B0007C0059004300330025001A0012000C00090008000700070006000600060005000500050006000600060005000500050005000500050005000500050005000500050005000500050005000500050005000500050006000600070007000700070007000700070007000700070008000800080009000A000C000D000F001100140017001B001F002400270029002A002800250020001B00170014001300120012001300130013001300140014001500170019001B001E002000230026002A002D0031003400360037003700340031002E002A002600230020001E001C00190016001400120010000E000D000D000C000B000B000B000C000C000D000E00110014001B0023002B00310032002F0028002000180013000F000C000A0009000800080008000800080009000B000F0012001600180018001700140011001000110015001C0029003D005E009200E601660226034204AF0620072B077906E1058803D80245011F0077002B000E00060004000400040003000300030004000400040004000400040003000200020002000100010001000100010001000100010001000100000000000000010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100018001|**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
    ///F00041907171832-IgM                                        000                            00000g/dl                                                                                                                                                          TS 2207201901?                                                                                                   100.0000.0000.0000.0000.0000.0000.0000.0000.0000.000000000000000000000000000000000000000000000000000                                        000.0000.0000.0000.000000000000000000000001.0001.00                                                                                                                                                                                                                                      000300A010000000000000000000000000000000000800700070006000600060005000500050006000600060006000700070007000700070007000700080009000C000E00120016001B0021002900360046005A0073009000BD00FB014C01A801FE023A024B022901DB0177011000B9007C0054003B002B001F0015000F000A000700060006000500050005000500050005000500050004000400040004000400040004000400040004000400040004000400040004000400040005000500050005000500060006000600060006000600060006000600060006000700070008000800080009000A000C000D000F00120016001A001E002300260027002700250021001D0019001500110010001000100010001000100010001000100011001400160019001C001F002200260029002D0030003300360036003500330030002C0028002600230020001D001A001700140011000F000D000C000B000A000A000900090009000A000A000B000E00110016001E0027002F00330031002C0024001B00140010000D000A00080007000700070007000700080009000B000F00120015001600150012000F000D000E00100015001F002E0047006F00AE011301AB028F03D1054606980769076C068F0512036601F000ED005F0020000A00030002000200020002000200030003000300030002000200010001000100000000000000000000000000000000000000000000000000000000000000000001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100018001|**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
    ///F00051907171832-K                                          000                            00000g/dl                                                                                                                                                          TS 2207201901?                                                                                                   100.0000.0000.0000.0000.0000.0000.0000.0000.0000.000000000000000000000000000000000000000000000000000                                        000.0000.0000.0000.000000000000000000000001.0001.00                                                                                                                                                                                                                                      000300A0100000000000000000000000000000000008010000F000E000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000E000F0010001300160019001D0022002A00330040004F0064007D009E00CB0108015601AD01FF02380248022901E00180011C00C50085005B004000300024001A00140010000D000C000C000B000B000B000B000B000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000D000D000E000F000F00100011001200140016001A001F00230027002A002B002B002900250021001C0018001500130013001300140014001400140015001600170019001C001E002100240027002A002E003200350038003A0039003800360033002F002C002800250022001F001C001A00170015001300110010000F000E000D000D000D000D000D000E000F001100140018001F0026002D003200340031002B0023001B00150011000E000C000B000A000900090009000A000C000E001200150019001A0019001700140012001100130018002100310049007100B0011401AA028A03C505370687075E076F069F052A0383020900FB00650022000900030002000200020002000200020002000300030003000300030002000200020002000200020002000200020001000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000|**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
    ///F00061907171832-L                                          000                            00000g/dl                                                                                                                                                          TS 2207201901?                                                                                                   100.0000.0000.0000.0000.0000.0000.0000.0000.0000.000000000000000000000000000000000000000000000000000                                        000.0000.0000.0000.000000000000000000000001.0001.00                                                                                                                                                                                                                                      000300A010000000000000000000000000000000000802C002B002B002B002B002A002A002A002A002B002B002B002B002C002C002C002D002D002E0030003100330036003A003F0044004C005600620072008700A000C000ED012B017C01DB0238027D0297027C023301D0016B011800DD00BB00A8009D0096009300910092009400960098009A009C009E009F00A0009F009E009C009A009600930090008B00860081007D00780073006D00680063005E005A00560052004E004A004700440041003F003D003B003A003800370035003400330032003100310031003100310031003200320033003400360037003A003C004000450049004D00500051004F004D004A004700440044004400460048004B004E0050005200540055005700580059005900590059005800580057005700570057005600540051004D004900440040003D003A003700340031002E002C0029002700260025002500240024002400240024002500260028002A002C00310037003F0048004E00510050004B0043003C00380035003400330033003400350037003A003C00400047004F00590064006E00780081008B009600A400B500CC00E8010B0136016A01A801F0024302A10306036203A203B0037B0302025901A501020087003C0018000900040003000300030003000400040004000400040004000400040003000300020002000200020002000200020001000100010001000000000000000000010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100018001|**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
    ///F00071907171832-Ref                                        000                            00000g/dl                                                                                                                                                          TS 2207201901?                                                                                                   100.0000.0000.0000.0000.0000.0000.0000.0000.0000.000000000000000000000000000000000000000000000000000                                        000.0000.0000.0000.000000000000000000000001.0001.00                                                                                                                                                                                                                                      000300A010000000000000000000000000000000000800C000B000B000B000B000B000B000B000B000B000B000B000B000C000C000D000E000E000F000F0011001200140017001B001F002400290031003A0048005D007E00AC00E9012D016E01A601CD01DF01D901BC018A014700FD00B7007D0054003A002A002000190013000F000D000B000900090008000800070007000700060006000500050005000500050005000500050005000500050005000400040003000300040004000500050005000500050004000400030003000200020002000100010000000000000000000000000000000000010002000400060009000C000F001200160018001900190018001600130012000E000D000C000B000B000B000C000C000D000E000E0010001200140017001A001D002100250029002D003000320034003400330032002F002C00290027002400210020001D001B0019001800160014001300120012001100100010001000110012001200140017001A001E002100250029002B002B002800240020001B001600130011000F000E000E000E000E000E0011001200160018001B001B001B001B001A00190019001C002400300046006A00A300FD01840251035D047D05800634066305F4050303D20299018900C7005600240011000B000900090009000900090009000900090009000900090009000900080007000600050005000500050004000300030002000200020002000200020001000100010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000|**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

    ///  ]<para/>
    ///</说明>
    ///<修改记录>
    ///    [修改时间:]<para/>
    ///    [修改内容:]<para/>
    ///</修改记录>
    ///<修改记录>
    ///    [修改时间:本次修改时间]<para/>
    ///    [修改内容:本次修改内容]<para/>
    ///</修改记录>
    ///</summary>
    [Remark(Remark = "Sebia血清蛋白电泳仪的数据和图像处理处理带有ELP参照线。F00011907171832-ELP                                        000                            00000g/dl                                                                                                                                                          TS 2207201901?                                                                                                   100.0000.0000.0000.0000.0000.0000.0000.0000.0000.000000000000000000000000000000000000000000000000000                                        000.0000.0000.0000.000000000000000000000001.0001.00                                                                                                                                                                                                                                      000300A01000000000000000000000000000000000080060006000600060006000600060006000600060006000600060007000800080008000900090009000A000C000E00110015001B0023002C0039004700560067007C009800C50106015901B301FF022B022901F701A5014500ED00A600740055003F002F00220017000F000B0009000800060006000600060005000500050005000500050005000500050005000500050005000500050005000500050005000500050005000500050005000600060006000600060006000600060006000600060006000600060007000800080009000A000B000C000E000F001100140017001B0020002500280029002800260022001D00180015001400120012001300130014001400140014001500150017001A001C001F002100240027002A002E003100340035003500340031002D0029002600230020001D001B0018001500130011000F000D000C000B000A0009000900090009000A000B000B000E001100180021002A00310032002F0028001F00170011000E000B000900080007000600060006000600080009000C0011001400170018001700150013001200120015001B002600390057008800D6014E020303150487060A073207A1071F05C604090263012C007A002B000E00060003000300030003000300040004000500050005000400040003000300030003000200020002000200020001000100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000|**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               \nF00021907171832-IgG                                        000                            00000g/dl                                                                                                                                                          TS 2207201901?                                                                                                   100.0000.0000.0000.0000.0000.0000.0000.0000.0000.000000000000000000000000000000000000000000000000000                                        000.0000.0000.0000.000000000000000000000001.0001.00                                                                                                                                                                                                                                      000300A01000000000000000000000000000000000080720074007500770079007C007E00800082008500870089008B008E0090009200950097009A009D00A100A600AB00B200B900C200CD00DA00EB00FE0114012E0150017E01BF0211026E02C40301031202F202A9024B01ED019E01670144012F012201190112010D010B010B010C010D010E010F010F010F010E010D010C010A01070104010000FB00F600F000EA00E400DD00D600CE00C700C000B900B100AA00A3009D00960090008B00860081007D007A007600730071006E006C006A00690068006700670067006600670067006700680069006A006C006F00720076007B007F0084008700880087008500830081007F007F007F0080008200830084008300820081007E007C007900760073006F006B006800650063006200610060005E005C005900550050004B00460042003E003B0038003600330030002E002C002A002800270027002700270027002700280029002B002D002F003300390042004A005200550054005000490042003D003A00380038003800380039003B003E00410046004D0056005F00690072007A008100890091009C00AA00BB00CF00E6010201220146016E019C01CE02010229023C022B01F10194012600BD0068002F00130006000200010000000000000000000000000001000100010001000100010000000000000000000000000000000000000000000000000000000000000000000000000001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100018001|**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               \nF00031907171832-IgA                                        000                            00000g/dl                                                                                                                                                          TS 2207201901?                                                                                                   100.0000.0000.0000.0000.0000.0000.0000.0000.0000.000000000000000000000000000000000000000000000000000                                        000.0000.0000.0000.000000000000000000000001.0001.00                                                                                                                                                                                                                                      000300A01000000000000000000000000000000000080080008000800080008000800080008000800080008000800080008000900090009000A000A000A000B000D001000140018001E00260031003E004F00610079009600C10100014F01A901F9022B0231020701B7015600FB00B0007C0059004300330025001A0012000C00090008000700070006000600060005000500050006000600060005000500050005000500050005000500050005000500050005000500050005000500050005000500050006000600070007000700070007000700070007000700070008000800080009000A000C000D000F001100140017001B001F002400270029002A002800250020001B00170014001300120012001300130013001300140014001500170019001B001E002000230026002A002D0031003400360037003700340031002E002A002600230020001E001C00190016001400120010000E000D000D000C000B000B000B000C000C000D000E00110014001B0023002B00310032002F0028002000180013000F000C000A0009000800080008000800080009000B000F0012001600180018001700140011001000110015001C0029003D005E009200E601660226034204AF0620072B077906E1058803D80245011F0077002B000E00060004000400040003000300030004000400040004000400040003000200020002000100010001000100010001000100010001000100000000000000010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100018001|**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               \nF00041907171832-IgM                                        000                            00000g/dl                                                                                                                                                          TS 2207201901?                                                                                                   100.0000.0000.0000.0000.0000.0000.0000.0000.0000.000000000000000000000000000000000000000000000000000                                        000.0000.0000.0000.000000000000000000000001.0001.00                                                                                                                                                                                                                                      000300A010000000000000000000000000000000000800700070006000600060005000500050006000600060006000700070007000700070007000700080009000C000E00120016001B0021002900360046005A0073009000BD00FB014C01A801FE023A024B022901DB0177011000B9007C0054003B002B001F0015000F000A000700060006000500050005000500050005000500050004000400040004000400040004000400040004000400040004000400040004000400040005000500050005000500060006000600060006000600060006000600060006000700070008000800080009000A000C000D000F00120016001A001E002300260027002700250021001D0019001500110010001000100010001000100010001000100011001400160019001C001F002200260029002D0030003300360036003500330030002C0028002600230020001D001A001700140011000F000D000C000B000A000A000900090009000A000A000B000E00110016001E0027002F00330031002C0024001B00140010000D000A00080007000700070007000700080009000B000F00120015001600150012000F000D000E00100015001F002E0047006F00AE011301AB028F03D1054606980769076C068F0512036601F000ED005F0020000A00030002000200020002000200030003000300030002000200010001000100000000000000000000000000000000000000000000000000000000000000000001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100018001|**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               \nF00051907171832-K                                          000                            00000g/dl                                                                                                                                                          TS 2207201901?                                                                                                   100.0000.0000.0000.0000.0000.0000.0000.0000.0000.000000000000000000000000000000000000000000000000000                                        000.0000.0000.0000.000000000000000000000001.0001.00                                                                                                                                                                                                                                      000300A0100000000000000000000000000000000008010000F000E000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000E000F0010001300160019001D0022002A00330040004F0064007D009E00CB0108015601AD01FF02380248022901E00180011C00C50085005B004000300024001A00140010000D000C000C000B000B000B000B000B000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000D000D000E000F000F00100011001200140016001A001F00230027002A002B002B002900250021001C0018001500130013001300140014001400140015001600170019001C001E002100240027002A002E003200350038003A0039003800360033002F002C002800250022001F001C001A00170015001300110010000F000E000D000D000D000D000D000E000F001100140018001F0026002D003200340031002B0023001B00150011000E000C000B000A000900090009000A000C000E001200150019001A0019001700140012001100130018002100310049007100B0011401AA028A03C505370687075E076F069F052A0383020900FB00650022000900030002000200020002000200020002000300030003000300030002000200020002000200020002000200020001000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000|**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               \nF00061907171832-L                                          000                            00000g/dl                                                                                                                                                          TS 2207201901?                                                                                                   100.0000.0000.0000.0000.0000.0000.0000.0000.0000.000000000000000000000000000000000000000000000000000                                        000.0000.0000.0000.000000000000000000000001.0001.00                                                                                                                                                                                                                                      000300A010000000000000000000000000000000000802C002B002B002B002B002A002A002A002A002B002B002B002B002C002C002C002D002D002E0030003100330036003A003F0044004C005600620072008700A000C000ED012B017C01DB0238027D0297027C023301D0016B011800DD00BB00A8009D0096009300910092009400960098009A009C009E009F00A0009F009E009C009A009600930090008B00860081007D00780073006D00680063005E005A00560052004E004A004700440041003F003D003B003A003800370035003400330032003100310031003100310031003200320033003400360037003A003C004000450049004D00500051004F004D004A004700440044004400460048004B004E0050005200540055005700580059005900590059005800580057005700570057005600540051004D004900440040003D003A003700340031002E002C0029002700260025002500240024002400240024002500260028002A002C00310037003F0048004E00510050004B0043003C00380035003400330033003400350037003A003C00400047004F00590064006E00780081008B009600A400B500CC00E8010B0136016A01A801F0024302A10306036203A203B0037B0302025901A501020087003C0018000900040003000300030003000400040004000400040004000400040003000300020002000200020002000200020001000100010001000000000000000000010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100018001|**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               \nF00071907171832-Ref                                        000                            00000g/dl                                                                                                                                                          TS 2207201901?                                                                                                   100.0000.0000.0000.0000.0000.0000.0000.0000.0000.000000000000000000000000000000000000000000000000000                                        000.0000.0000.0000.000000000000000000000001.0001.00                                                                                                                                                                                                                                      000300A010000000000000000000000000000000000800C000B000B000B000B000B000B000B000B000B000B000B000B000C000C000D000E000E000F000F0011001200140017001B001F002400290031003A0048005D007E00AC00E9012D016E01A601CD01DF01D901BC018A014700FD00B7007D0054003A002A002000190013000F000D000B000900090008000800070007000700060006000500050005000500050005000500050005000500050005000400040003000300040004000500050005000500050004000400030003000200020002000100010000000000000000000000000000000000010002000400060009000C000F001200160018001900190018001600130012000E000D000C000B000B000B000C000C000D000E000E0010001200140017001A001D002100250029002D003000320034003400330032002F002C00290027002400210020001D001B0019001800160014001300120012001100100010001000110012001200140017001A001E002100250029002B002B002800240020001B001600130011000F000E000E000E000E000E0011001200160018001B001B001B001B001A00190019001C002400300046006A00A300FD01840251035D047D05800634066305F4050303D20299018900C7005600240011000B000900090009000900090009000900090009000900090009000900080007000600050005000500050004000300030002000200020002000200020001000100010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000|**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               ")]
    public class DealSebiaELP : BaseDeal, IPreDeal, ITimer
    {
        /// <summary>
        /// 图片数据
        /// </summary>
        private static Dictionary<string, string> imgdata = new Dictionary<string, string>();

        /// <summary>
        /// 前一个文件名称
        /// </summary>
        private static string preFileName = "";

        /// <summary>
        /// 前一个流水
        /// </summary>
        private static string preEpis = "";

        /// <summary>
        /// 参照数据索引
        /// </summary>
        private static string  refIndex = "";

        /// <summary>
        /// 流水号
        /// </summary>
        private static string epis = "";

        /// <summary>
        /// 前处理
        /// </summary>
        /// <param name="result">结果</param>
        /// <param name="machID">仪器ID</param>
        /// <param name="dealProcess">处理程序</param>
        /// <param name="index">当前文件的第几行</param>
        /// <param name="fileName">当前读取的文件全名</param>
        /// <returns></returns>
        public bool PreDeal(string result, string machID, string dealProcess, int index, string fileName)
        {
            string head=result.Split(' ')[0];
            string sampleNo = head.Substring(5, head.Length-5);
            string episAll = result.Split(' ')[0];
            epis =sampleNo.Split('-')[0];
            //记录参照数据位置
            if(sampleNo.Contains("-ELP"))
            {
                refIndex = sampleNo;
            }
            if ((preFileName != fileName)||(epis != preEpis))
            {
                imgdata.Clear();
            }
            if(!imgdata.ContainsKey(sampleNo))
            {
                imgdata.Add(sampleNo, result);
            }
            preFileName = fileName;
            preEpis = epis;
            //累计到七个数据才画图
            if (imgdata.Keys.Count == 6||index==-1)
            {
                if(imgdata.Keys.Count == 1)
                {
                    refIndex = sampleNo;
                    string fenStart = result.Substring(824, 4);
                    string fenEnd = result.Substring(828, 4);
                }
                foreach (var key in imgdata.Keys)
                {
                    result = imgdata[key];
                    string value1Name = result.Substring(266, 10);
                    string value1 = result.Substring(367, 5);
                    string value2Name = result.Substring(276, 10);
                    string value2 = result.Substring(372, 5);
                    string value3Name = result.Substring(286, 10);
                    string value3 = result.Substring(377, 5);
                    string value4Name = result.Substring(296, 10);
                    string value4 = result.Substring(382, 5);
                    string value5Name = result.Substring(306, 10);
                    string value5 = result.Substring(387, 5);
                    string value6Name = result.Substring(316, 10);
                    string value6 = result.Substring(392, 5);
                    string value7Name = result.Substring(326, 10);
                    string value7 = result.Substring(397, 5);
                    string value8Name = result.Substring(336, 10);
                    string value8 = result.Substring(402, 5);
                    string value9Name = result.Substring(346, 10);
                    string value9 = result.Substring(407, 5);
                    string value10Name = result.Substring(356, 10);
                    string value10 = result.Substring(412, 5);
                    string value11 = result.Substring(557, 170).Trim();


                    //处理数据
                    DealData(value1Name + "\\" + value1 + "," + value2Name + "\\" + value2 + "," + value3Name + "\\" + value3 + "," + value4Name + "\\" + value4 + "," + value5Name + "\\" + value5 + "," + value6Name + "\\" + value6 + "," + value7Name + "\\" + value7 + "," + value8Name + "\\" + value8 + "," + value9Name + "\\" + value9 + "," + value10Name + "\\" + value10 + ",Remark" + "\\" + value11 + ",episall\\" + episAll + ",resall\\" + result, machID, sampleNo, dealProcess);
                    //取出图形串
                    string imgStr = result.Substring(830, 1200);
                    string imgStrRef = imgdata[refIndex].Substring(830, 1200);
                    List<Dto> dataListRef = new List<Dto>();
                    List<Dto> dataList = new List<Dto>();
                    int maxY = 0;
                    int max1Index = 0;
                    int max1Data = 0;

                    int max2Index = 0;
                    int max2Data = 0;

                    int max3Index = 0;
                    int max3Data = 0;
                    //分割点数据
                    for (int i = 0; i < imgStrRef.Length && i < 1200; i += 4)
                    {
                        int startIndex = i;
                        int endIndex = i + 4;
                        if (endIndex > imgStrRef.Length)
                        {
                            endIndex = imgStrRef.Length;
                        }
                        Dto dto = new Dto();
                        dto.Type = imgStrRef.Substring(startIndex, 1);
                        if (dto.Type == "4" || dto.Type == "C" || dto.Type == "1" || dto.Type == "5")
                        {
                            continue;
                        }
                        else
                        {
                            dto.Y = Convert.ToInt32(imgStrRef.Substring(startIndex + 1, endIndex - startIndex - 1), 16);
                        }
                        if (dto.Y > maxY)
                        {
                            maxY = dto.Y;
                        }
                        dataListRef.Add(dto);
                    }
                    for (int i = 0; i < imgStr.Length && i < 1200; i += 4)
                    {
                        int startIndex = i;
                        int endIndex = i + 4;
                        if (endIndex > imgStr.Length)
                        {
                            endIndex = imgStr.Length;
                        }
                        Dto dto = new Dto();
                        dto.Type = imgStr.Substring(startIndex, 1);
                        if (dto.Type == "4" || dto.Type == "C" || dto.Type == "1" || dto.Type == "5")
                        {
                            continue;
                        }
                        else
                        {
                            dto.Y = Convert.ToInt32(imgStr.Substring(startIndex + 1, endIndex - startIndex - 1), 16);
                        }
                        if (dto.Y > maxY)
                        {
                            maxY = dto.Y;
                        }
                        if (i / 4 > 135 && i / 4 < 165)
                        {
                            if (max1Data < dto.Y)
                            {
                                max1Data = dto.Y;
                                max1Index = i / 4;
                            }
                        }
                        if (i / 4 > 170 && i / 4 < 195)
                        {
                            if (max2Data < dto.Y)
                            {
                                max2Data = dto.Y;
                                max2Index = i / 4;
                            }
                        }
                        if (i / 4 > 230 && i / 4 < 245)
                        {
                            if (max3Data < dto.Y)
                            {
                                max3Data = dto.Y;
                                max3Index = i / 4;
                            }
                        }
                        dataList.Add(dto);
                    }
                    int imgY = 580;
                    //创建空位图
                    Image img = new Bitmap(680, imgY);
                    //获得画图句柄
                    Graphics g = Graphics.FromImage(img);
                    g.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;
                    g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
                    g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
                    g.Clear(Color.White);
                    int x = 40;
                    int y = 40;
                    //画坐标
                    Pen pen = new Pen(Color.Black);
                    Pen penRef = new Pen(Color.Black);
                    if (imgdata.Keys.Count == 6)
                    {
                        penRef = new Pen(Color.Blue);
                    }
                    penRef.Width = 2;
                    pen.Width = 2;
                    g.DrawLine(pen, 40, imgY - y, 640, imgY - y);
                    for (int i = 0; i < 300; i += 15)
                    {
                        g.DrawLine(pen, 40 + i * 2, imgY - y, 40 + i * 2, imgY - y - 4);
                        Point p = new Point(40 + i * 2, imgY - y + 3);
                        Font myFont = new Font("宋体", 8, FontStyle.Regular);
                        Brush bush = new SolidBrush(Color.Black);
                        g.DrawString(i.ToString(), myFont, bush, p);
                    }

                    int preYRef = -1;
                    int preY = -1;
                    int curindex = 0;
                    //遍历点画图
                    foreach (var d in dataList)
                    {
                        if (preY == -1)
                        {
                            pen = new Pen(Color.Black);
                            pen.Width = 2;
                            g.DrawLine(pen, x, imgY - Convert.ToInt32(d.Y * (imgY - y - 65.0) / maxY) - y, x, imgY - Convert.ToInt32(d.Y * (imgY - y - 25.0) / maxY) - y);
                            g.DrawLine(penRef, x, imgY - Convert.ToInt32(dataListRef[curindex].Y * (imgY - y - 65.0) / maxY) - y, x, imgY - Convert.ToInt32(dataListRef[curindex].Y * (imgY - y - 25.0) / maxY) - y);
                        }
                        else
                        {
                            pen = new Pen(Color.Black);
                            pen.Width = 2;
                            g.DrawLine(pen, x, imgY - Convert.ToInt32(d.Y * (imgY - y - 65.0) / maxY) - y, x - 2, preY - y);
                            g.DrawLine(penRef, x, imgY - Convert.ToInt32(dataListRef[curindex].Y * (imgY - y - 65.0) / maxY) - y, x - 2, preYRef - y);
                        }
                        if (curindex == max1Index)
                        {
                            if (value1Name != "          ")
                            {
                                Point p = new Point(x - 8, imgY - Convert.ToInt32(d.Y * (imgY - y - 65.0) / maxY) - y - 20);
                                Font myFont = new Font("宋体", 12, FontStyle.Regular);
                                Brush bush = new SolidBrush(Color.Black);
                            }
                        }
                        if (curindex == max2Index)
                        {
                            if (value2Name != "          ")
                            {
                                Point p = new Point(x - 8, imgY - Convert.ToInt32(d.Y * (imgY - y - 65.0) / maxY) - y - 20);
                                Font myFont = new Font("宋体", 12, FontStyle.Regular);
                                Brush bush = new SolidBrush(Color.Black);
                            }
                        }
                        if (curindex == max3Index)
                        {
                            if (value3Name != "          ")
                            {
                                Point p = new Point(x - 8, imgY - Convert.ToInt32(d.Y * (imgY - y - 65.0) / maxY) - y - 20);
                                Font myFont = new Font("宋体", 12, FontStyle.Regular);
                                Brush bush = new SolidBrush(Color.Black);
                            }
                        }
                        preY = imgY - Convert.ToInt32(d.Y * (imgY - y - 65.0) / maxY);
                        preYRef = imgY - Convert.ToInt32(dataListRef[curindex].Y * (imgY - y - 65.0) / maxY);
                        x += 2;
                        curindex++;
                    }
                    img.Save(Application.StartupPath + "\\temp\\" + key + ".bmp");
                    
                }
            }
            return false;
        }


        /// <summary>
        /// 内部数据实体
        /// </summary>
        private class Dto
        {
            /// <summary>
            /// 类型
            /// </summary>
            public string Type
            {
                get;
                set;
            }

            /// <summary>
            /// Y坐标
            /// </summary>
            public int Y
            {
                get;
                set;
            }
        }
    }
}


国内lis还是该反思一下无底线越界改最后自己也反受其害,像酶标仪厂商的控制软件要收费不想买要每个lis开发,有人开先例做了别的人都被迫只能做了。抵制下舔狗行为

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小乌鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值