Explorar el Código

try fix:0018664: 【PC端】【登记工作站】先登录家医exe,再插入usb标签打印机,点击打印无响应,需要退出重登exe,且重登后第一次打开标签,标签上姓名等信息显示为XXX

loki.wu hace 10 meses
padre
commit
6a30f68d1b

+ 2 - 1
FisPrintDrive/FisPrintDrive/Program.cs

@@ -84,8 +84,9 @@ namespace FisPrintDrive
                             Console.WriteLine($"response:{response}");
                             break;
                         case FisPrintDriveFuncEnum.PrintTestPage:
-                            response = FisPrintDrive.PrintTestPage(executeInfos[2], _h).ToString();
+                            response = true.ToString();
                             await StreamWriter.WriteLineAsync(response);
+                            FisPrintDrive.PrintTestPage(executeInfos[2], _h);
                             Console.WriteLine($"printResponsexxxxxxxxxxxxx:{response}");
                             break;
                         case FisPrintDriveFuncEnum.GetUninstalledPrinters:

BIN
FisPrintDrive/FisPrintDrive/bin/Debug/FisPrintDrive.exe


BIN
fis/FisTools/FisPrintDrive.exe


+ 17 - 7
fis/Managers/PrinterManager.cs

@@ -24,10 +24,10 @@ namespace fis.Win.Dev.Managers
     {
         private IList<string> _allPrinterNames;
 
-        Process FrameworkRunner;
-        NamedPipeClientStream FisPipeClient;
-        StreamReader StreamReader;
-        StreamWriter StreamWriter;
+        Process? FrameworkRunner;
+        NamedPipeClientStream? FisPipeClient;
+        StreamReader? StreamReader;
+        StreamWriter? StreamWriter;
 
         public const string ZipExtension = ".zip";
 
@@ -64,9 +64,10 @@ namespace fis.Win.Dev.Managers
         public void PrintLabels(List<string> labels)
         {
             Task.Run(() => {
-                if (FrameworkRunner == null)
+                if (FrameworkRunner == null || StreamWriter == null || !FisPipeClient.IsConnected)
                 {
                     FisPrintDriveInit();
+                    Thread.Sleep(1000);
                 }
                 foreach (string label in labels)
                 {
@@ -77,7 +78,6 @@ namespace fis.Win.Dev.Managers
                     StreamReader.ReadLine();
                     Thread.Sleep(200);
                 }
-
             });
             
         }
@@ -132,13 +132,23 @@ namespace fis.Win.Dev.Managers
 
         private void FisPrintDriveInit()
         {
+            StreamReader?.Close();
+            StreamWriter?.Close();
+            StreamReader = null;
+            StreamWriter = null;
+            string processName = "FisPrintDrive";
+            Process[] processes = Process.GetProcessesByName(processName);
+            foreach (Process process in processes)
+            {
+                process.Kill();
+            }
             ProcessStartInfo startInfo = new ProcessStartInfo
             {
                 FileName = "./FisPrintDrive.exe",
                 //Debug时FileName可以指定至对应项目的Debug目录,方便调试
                 //FileName = "F://NetCode//FisPrintDrive//FisPrintDrive//bin//Debug//FisPrintDrive.exe",
                 UseShellExecute = false,
-            CreateNoWindow = true
+                CreateNoWindow = true
             };
 #if DEBUG
             startInfo.CreateNoWindow = false;