diff --git a/app.config b/app.config index 1e803cb..6658842 100644 --- a/app.config +++ b/app.config @@ -90,6 +90,8 @@ - + + + diff --git a/deviceAnalysis.cs b/deviceAnalysis.cs index 249fc66..b764077 100644 --- a/deviceAnalysis.cs +++ b/deviceAnalysis.cs @@ -2219,6 +2219,140 @@ namespace FlyDockTool else dataOutPutShow("数据提交失败:" + jsonStr, null); + } + if (apiOptions.CurrentDevice == "BC-6800")//BC-6800 + { + //string filePath = @"D:\FLOW\网络接受工具\Debug\txt.txt"; + + //// 追加模式写入 + //using (StreamWriter sw = new StreamWriter(filePath, true)) + //{ + // sw.WriteLine("----------------------------------------"); + // sw.WriteLine($"时间: {DateTime.Now:yyyy-MM-dd HH:mm:ss}"); + // sw.WriteLine(deviceDataStr); + // sw.WriteLine("----------------------------------------"); + //} + List ermList = new List(); + string MachineCode = apiOptions.MachineCode; + string MachineID = apiOptions.MachineID; + // 分割消息为行 + // 分割消息为行,并处理特殊字符 + // string[] lines = deviceDataStr.Replace("\r", "").Split('\n'); + string[] lines = deviceDataStr.Replace("\r", "") + .Replace("\n", "") + .Split(new[] { "OBX|", "MSH|", "PID|", "PV1|", "OBR|" }, StringSplitOptions.RemoveEmptyEntries); + //// 记录拆分后的内容 + //string filePath2 = @"D:\FLOW\网络接受工具\Debug\split_lines.txt"; + //using (StreamWriter sw = new StreamWriter(filePath2, true)) + //{ + // sw.WriteLine("=========================================="); + // sw.WriteLine($"记录时间: {DateTime.Now:yyyy-MM-dd HH:mm:ss}"); + // sw.WriteLine($"拆分后行数: {lines.Length}"); + // sw.WriteLine("------------------------------------------"); + + // // 记录每一行内容 + // for (int i = 0; i < lines.Length; i++) + // { + // sw.WriteLine($"第{i + 1}行: {lines[i]}"); + // } + + // sw.WriteLine("=========================================="); + // sw.WriteLine(); + //} + // 获取样本号(从OBR段) + string sampleNo = ""; + foreach (string line in lines) + { + if (line.Contains("^Automated Count^99MRC")) // 检查是否包含样本号的行 + { + string[] obrParts = line.Split('|'); + if (obrParts.Length > 2) + { + sampleNo = obrParts[2].Trim(); // 获取样本号 + break; + } + } + } + // 解析OBX段(检测结果) + foreach (string line in lines) + { + if (char.IsDigit(line[0])) + { + string[] parts = line.Split('|'); + if (parts.Length >= 6) + { + // 获取OBX序号 + int obxNumber = int.Parse(parts[0]); + + // 只解析序号11及以后的OBX(从WBC开始) + if (obxNumber >= 11) + { + examResultMode erm = new examResultMode(); + + // 设置基本信息 + erm.machineCode = MachineCode; // 固定值 + erm.machineID = MachineID; // 固定值 + erm.sampleNo = sampleNo; + erm.testDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); + + // 解析项目代号和名称 + string[] itemInfo = parts[2].Split('^'); + if (itemInfo.Length >= 2) + { + string itemCode = itemInfo[0]; // 获取代码 + string itemName = itemInfo[1]; // 获取名称 + + // 处理特殊字符 + if (itemName.Contains("InR")) + { + if (itemCode == "10033") + { + itemName = "InR%"; + } + else if (itemCode == "10032") + { + itemName = "InR#"; + } + } + + + erm.chanelNo = itemName; // 项目名称 + } + + // 解析结果值 + erm.itemValue = parts[4]; + erm.itemUnit = ""; + ermList.Add(erm); + } + } + } + } + // string filePath1 = @"D:\FLOW\网络接受工具\Debug\txt1.txt"; + + //using (StreamWriter sw = new StreamWriter(filePath1, true)) + //{ + // sw.WriteLine("=========================================="); + // sw.WriteLine($"记录时间: {DateTime.Now:yyyy-MM-dd HH:mm:ss}"); + // sw.WriteLine($"数据条数: {ermList.Count}"); + // sw.WriteLine("------------------------------------------"); + + // foreach (var item in ermList) + // { + // sw.WriteLine($"项目: {item.chanelNo}, 值: {item.itemValue}, 单位: {item.itemUnit}"); + // } + + // sw.WriteLine("=========================================="); + // sw.WriteLine(); // 空行 + //} + string jsonStr = JsonConvert.SerializeObject(ermList); + + //将结果提交到LIS系统 + baseMsgModel bmm1 = apiOptions.CreateInstance().upLoadExamResult(ermList); + if (bmm1.code == 200) + dataOutPutShow("数据提交成功:" + jsonStr, null); + else + dataOutPutShow("数据提交失败:" + jsonStr, null); + } if (apiOptions.CurrentDevice == "URIT-8460")//URIT-8460 { @@ -3904,6 +4038,22 @@ namespace FlyDockTool clientSocket.Connect(ipAddress, int.Parse(tcp_port)); _tcpResult.Change(0, 10);//开始tcp数据接收,10毫秒频率 } + if (apiOptions.CurrentDevice == "BC-6800")//BC-6800 + { + // 设置IP地址和端口号 + string tcp_ip = ConfigurationManager.AppSettings[apiOptions.CurrentDevice].Split(',')[3]; + string tcp_port = ConfigurationManager.AppSettings[apiOptions.CurrentDevice].Split(',')[4]; + IPAddress ipAddress = IPAddress.Parse(tcp_ip); + // IPAddress ipAddress = IPAddress.Any; + //// 创建一个监听Socket + if (listener == null) + { + listener = new Socket(ipAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp); + listener.Bind(new IPEndPoint(ipAddress, int.Parse(tcp_port))); + listener.Listen(10000); + } + _tcpResult.Change(0, 10);//开始tcp数据接收,10毫秒频率 + } if (apiOptions.CurrentDevice == "URIT-8460")//URIT-8460 { // 设置IP地址和端口号 @@ -4222,6 +4372,20 @@ namespace FlyDockTool deviceAnalysisOption(tempData_temp); } } + if (apiOptions.CurrentDevice == "BC-6800")//BC-6800 + { + if (tempData.Contains("MSH|")&&tempData.Contains("OBX|46|"))//OBX|22| 为结束符 说明字符串完整了 OBX|17| + { + + string tempData_temp = tempData; + tempData = string.Empty; + deviceAnalysisOption(tempData_temp); + + + + } + } + if (apiOptions.CurrentDevice == "URIT-8460")//URIT-8460 { string tempData_temp = tempData; @@ -4638,6 +4802,11 @@ namespace FlyDockTool _tcpResult.Change(-1, 10);//停止tcp数据接收 clientSocket.Close(); } + if (apiOptions.CurrentDevice == "BC-6800")//BC-6800 + { + _tcpResult.Change(-1, 10);//停止tcp数据接收 + clientSocket.Close(); + } if (apiOptions.CurrentDevice == "URIT-8460")//URIT-8460 { _tcpResult.Change(-1, 10);//停止tcp数据接收 diff --git a/mainForm.Designer.cs b/mainForm.Designer.cs index d2d507a..ce37122 100644 --- a/mainForm.Designer.cs +++ b/mainForm.Designer.cs @@ -200,7 +200,7 @@ this.MinimizeBox = false; this.Name = "mainForm"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; - this.Text = "福乐云软硬件数据对接工具V1.1(2025050701)"; + this.Text = "福乐云软硬件数据对接工具V1.1(2025052801)"; this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.mainForm_FormClosing); this.Load += new System.EventHandler(this.Form1_Load); this.groupBox2.ResumeLayout(false); diff --git a/mainForm.cs b/mainForm.cs index f4a28eb..feee641 100644 --- a/mainForm.cs +++ b/mainForm.cs @@ -38,8 +38,8 @@ namespace FlyDockTool apiOptions.MachineID = ConfigurationManager.AppSettings[CurrentDevice].Split(',')[2]; lb_currentDeviceInfo.Text = CurrentDevice; //////测试代码 测试完毕后注释调一下两行代码 - // string resultDataStr = File.ReadAllText(@"D:\工作\接受数据工具 list\尿常规URIT-560.txt", Encoding.GetEncoding("GB18030")); - // deviceAnalysis.CreateInstance().deviceAnalysisOption(resultDataStr); + // string resultDataStr = File.ReadAllText(@"D:\工作\接受数据工具 list\BC-6800.txt", Encoding.GetEncoding("GB18030")); + // deviceAnalysis.CreateInstance().deviceAnalysisOption(resultDataStr); btn_start_or_stop_Click(null, null);//启动数据接收