20190626_ вторичного развития BarTender _C принтера # Код _ _ печать на стороне принтера во время чтения POSTEK TID_

 

демо-код выглядит следующим образом:

аннулированию btnPrint_Click скрыто (Sender объект, EventArgs E) 
        { 
            IF (this.btnPrint.Text == "остановить печать") 
            { 
                SetBtnPrintUIEnable (); 
                возвращение; 
            } 
       // отключить соответствующую кнопку на интерфейсе 
            SetBtnPrintUIDisable (); 
            вар DT = новый новый в DataTable ();   
            новый новый Целевой ( 
                () => 
                { 
                    /// начать печать 
                    @ 1 приобретает выбранный источник DGV. 
                    дт = GetDgvDataSourceChecked (); 

                    ЕСЛИ (dt.Rows.Count <= 0) 
                    {
                        SetTxtMessageInfo (this.txtMessageError, "ничто не выбранные данные не могут быть напечатаны"); 
                    SetTxtMessageInfo (this.txtMessageInfo, $ "имя шаблона используется в настоящее время TempPath} {"); 
                    IF (String.IsNullOrEmpty (TempPath.Отделка()))
                        Common.Contactor.ShowErrorMessage ($ "ничего выбранные данные не могут быть напечатаны"); 
                        SetBtnPrintUIEnable (); 
                        возвращение; 
                    } 
                    Thread.Sleep (500); 
                    SetTxtMessageInfo (this.txtMessageInfo, "проверка данных ..."); 

                    / / начало печати 
                    строки TempPath = ConfigHelper.GetConfigString ( "TemplateName" ); // имя шаблона 
                    Thread.sleep (500); 
                         SetTxtMessageInfo (this.txtMessageError, $ "файл шаблона {TempPath} не может существовать, пожалуйста , настроить"); 
                       Общий .Contactor.ShowErrorMessage ($ "файл шаблона {TempPath} может не существовать, пожалуйста , настроить");

                    { 
                    Thread.Sleep (500);
                        SetBtnPrintUIEnable (); 
                        возвращение; 
                    } 
                    IF (Path.GetExtension (TempPath) .equals ( "BTW")) 
                    { 
                        SetTxtMessageInfo (this.txtMessageError, $ "формат файла не поддерживает TempPath} {"); 
                        Common.Contactor.ShowErrorMessage ($ "неподдерживаемый формат файла TempPath} {"); 
                        SetBtnPrintUIEnable (); 
                        возвращение; 
                    } 

                    Строка имя_файла = Path.GetFileName (TempPath); 
                    Строка primkey = ConfigHelper.GetConfigString ( "primkey");
                    SetTxtMessageInfo (this.txtMessageInfo, "данные четности завершен, чтобы начать печать ..."); 
                    использование (Двигатель двигатель нового новый = (истина)) 
                    { 
                        engine.Start (); 
                        IF (! Формат = NULL) 
                        { 
                            format.Close (SaveOptions.DoNotSaveChanges); 
                        } 
                        формат = engine.Documents.Open (TempPath); // открытые кСТАТИ файлы шаблонов на пути 
                        // установить принтер по умолчанию 
                        format.PrintSetup.PrinterName = новый System.Drawing.Printing.PrintDocument () PrinterSettings. .PrinterName; 
                        format.PrintSetup.IdenticalCopiesOfLabel = PrintCount; // Convert.ToInt32 ( GetControlText (this.cboPrintCount)); // 
                        format.PrintSetup.NumberOfSerializedLabels = 1;. 
                        вар DCS = dt.Columns.Cast <DataColumn> => dc.Caption {возвращение;} () Выбрать ((DC.)) Пропустить (. 1); // первый выскочить, по сути, первый прыгать, не прыгать все права 
                        вар templateStrs = format.SubStrings.Select ((с) => { s.Name возвращение ;.}) ToArray (); 

                        Строка diffStr string.join = ( "", templateStrs.Except (DCS)); 

                        . ЕСЛИ (diffStr.Trim () длина> 0) 
                        { 
                            SetTxtMessageInfo (это. после того, как txtMessageError, $ «в файле шаблон {FileName}, есть такой \ г п {diffStr} \ г \ идентификация содержания п полей не собирается печатать \, \ г \ п Вам необходимо настроить шаблон или изменить заявление сбора данных продолжить «); 
                            Common.Contactor.ShowErrorRestart ($» в файле шаблона {FileName}, есть такие \ г {diffStr} \ г п идентификации содержимого поля не собираются печатать \ п \, \ г \ п Тобой вы должны корректировать или изменять данные шаблона , чтобы продолжить «после получения заявления); 
                            SetBtnPrintUIEnable (); 
                            формат = NULL; 
                            возвращение; 
                        }
                        // значение «templateStr» = «номер расслоения, шаблон, длина, вес, машина осмотр ткани станция, номер стойка, даже клип флага, записывает время, состояние числа пучка, дата электронной метки, электронный номер тега» 
                            { 
                                Object oPrimKey = dt.Rows [I] [primKey] ; // получить значение , соответствующее столбца первичного ключа 
                                IF (oPrimKey == oPrimKey.ToString DBNull.Value || () Длина <= 0) 
                                { 
                                    SetTxtMessageInfo (this.txtMessageError, $ «первичный ключ {} primKey ошибка данных, она не может быть NULL или пустая строка «); 
                                    Common.Contactor.ShowErrorMessage ($» {primKey} первичный ключ ошибка данных, она не может быть NULL или пустая строка «); 
                                    SetBtnPrintUIEnable (); 
                                    формат = NULL;
                                    вернуть;
                                } 
                                Строка currentPrimkey oPrimKey.ToString = (); 
                                Строка operatorRFIDLabel.GetRFID_TID TID = (); // чтение тегов TID

                                (! RegValidate.WordOrNumber (TID)) IF 
                                { 
                                    SetTxtMessageInfo (this.txtMessageError, $ "ошибка приобретения содержания этикетки TID {TID}, печать остановится"); 
                                    Common.Contactor.ShowErrorMessage ($ «Получить Tag Content Ошибки {TID}, печать останавливается «); 
                                    SetBtnPrintUIEnable (); 
                                    формат = NULL; 
                                    возвращение; 
                                } 

                                для (Int J = 0, J <templateStrs.Length; j ++) 
                                {
                                    format.SubStrings. [templateStrs [J]] Значение = dt.Rows [I] [templateStrs [J]] ToString () ;. // шаблоны печати , соответствующие SN ввода параметров 
                                } 
                                сообщений сообщений; 
                                INT = 10000 waitForCompletionTimeout; / / 10 секунд 
                                System.Diagnostics.Trace.WriteLine ( "→→→→→→→→→ в TID является" TID +); 
                                Результат = R & л format.Print ( "", waitForCompletionTimeout, OUT сообщения); 
                                // Строка = messageString " \ n- \ nMessages: "; 
                                // Thread.Sleep (500); 
                                SetTxtMessageInfo (this.txtMessageInfo, $" является печать из частей {я + 1},Его основной код ключа {oPrimKey} «);
                                Thread.Sleep (2000); измеряли // Принтер по Booz, необходимо , чтобы остановить 2s, в противном случае TID будет повторять 
                                //// написать базу данных, не может блокировать библиотеку для записи, влияют на принтер считывает TID тайм - аута 
                                queuePrint.Enqueue (string.Format (ConfigHelper.GetConfigString ( "updateTid"), TID, currentPrimkey.Trim ())); 

                                String = ConfigHelper.GetConfigString COM ( "insertMysql"); 
                                Строка HN_NO dt.Rows = [I] , [ "образец"] == DBNull ? .Value String.Empty: dt.Rows [I] [ " шаблон"] .ToString (); 
                                Строка GH_NO = dt.Rows [I] [ "расслоение Нет"] == DBNull.Value string.Empty: дт? .Rows [I] [ "номер расслоение"] .ToString (); 
                                строка QTY_XD dt.Rows = [I] , [ "длина"] == DBNull.Value строка ?.Пустые: dt.Rows [я] [ "长度"] .ToString ();
                                Строка QTY_GJ = dt.Rows [я] [ "重量"] == DBNull.Value? String.Empty: dt.Rows [I] [ "重量"] .ToString (); 
                                Строка JT_NO = dt.Rows [я] [ "机台"] == DBNull.Value? String.Empty: dt.Rows [I] [ "机台"] .ToString (); 
                                Строка YB_NO = dt.Rows [I] [ "验布工"] == DBNull.Value? String.Empty: dt.Rows [I] [ "验布工"] .ToString (); 
                                Строка FJ_NO = dt.Rows [я] [ "货架号"] == DBNull.Value? String.Empty: dt.Rows [I] [ "货架号"] .ToString (); 
                                Строка LF_ID = dt.Rows [I] [ "连幅标记"] == DBNull.Value? String.Empty: dt.Rows [I] [ "连幅标记"] .ToString (); 
                                DateTime USR_DD = Dt.
                                Строка GH_STA = dt.Rows [I] [ " расслоение номер состояния"] == DBNull.Value String.Empty: dt.Rows [ я] [ " расслоение номер состояния"] .ToString () ;? 

                                Строка = strSQL String.Format (ConfigHelper.GetConfigString ( "insertMysql"), TID, HN_NO, GH_NO, QTY_XD, QTY_GJ, JT_NO, YB_NO, FJ_NO, LF_ID, USR_DD, GH_STA); 
                                queuePrint.Enqueue (strSQL); 
                            } 
                        } 
                        format.Close (SaveOptions.DoNotSaveChanges) ; 
                        формат = NULL; 
                        engine.Stop (); 

                        // начать кнопки 
                        SetBtnPrintUIEnable ();
                    } 
                }
                ) .Start (); 

          / * 1) Метод печати: Это наиболее часто используемый способ печати, который может быть установлен , чтобы напечатать имя задачи, будь то ждать завершения печати, подождите тайм - аут, вывод информации процесса печати. 
            2) PrintOut метод: Если нужно напечатать настройки появляется диалоговое окно и состояний на момент печати, вы можете выбрать для реализации этого метода. 
            3) Сохранить метод: Сохранить изменения в формат. 
            4) Метод SetNamedSubStringValue: установка конкретного значения подстроки здесь , может быть использован в качестве способа для динамического изменения содержимого печати. 
            5) Метод SetPromt: с SetNamedSubStringValue аналогичным способом, но он устанавливает значение печати строки, определенные метки могут всплывающее диалоговое окно во время печати, установив значение входного определенных переменных , чтобы изменить содержание печати, этот метод является динамическая настройка эти переменные. Но он редко используется в процессе интеграции. 
            6) IdenticalCopiesOfLabel свойство: Это установить тег одинаковое количество печатаемых копий при печати настройки по умолчанию для метки. 
            7) NumberSerializedLabels свойство: Это последовательность времени , используемое для печати, когда вы начинаете серию этикеток, это свойство представляет количество копий печатается, например, вы исходная последовательность данных 1, приращение 1, NumberSerializedLabels установлен на 5, он будет печатать 1,2,3,4,5, пять вкладок из. 
            8) Свойство принтера: Принтер вы хотите использовать по умолчанию , указанное для принтера по умолчанию системы
            9) PrintToFile свойство: немедленно отмечено с принтером для распечатки, или это создает файл для печати. 
            * / 
        }

  

 

рекомендация

отwww.cnblogs.com/wxylog/p/11093361.html
рекомендация