घर
Top.Mail.Ru Yandeks.Metrika
मंच: "शुरुआती";
वर्तमान संग्रह: 2018.09.16;
डाउनलोड करें: [xml.tar.bz2];

नीचे

पीओएस प्रिंटर इसी तरह की शाखाएँ खोजें


Raisa   (2016-07-25 16:26) [0]

var prn : System.Text;
शुरू करना
//ASCII   GS V  m
//Hex     1D 42 m
//Decimal 29 66 m
//Edit1.Text:="COM1";
कोशिश
  AssignFile(prn,trim(Edit1.Text));
  Rewrite(prn);
  Write(prn,#29#86#0#5);//
सिवाय
  ShowMessage("Ошибка!");
अंत;

CloseFile(prn);



Raisa   (2016-07-25 16:30) [1]

Принтер CITIZEN. MODEL PPU-700
После вышеприведенного кода никакой реакции принтера нет.
Помогите, пожалуйста, послать команду на принтер. Напечатать, например, цифру "1", обрезать бумагу и выдать чек.



DayGaykin ©   (2016-07-25 18:13) [2]

Отправь "1"#10#13#29"V0" .

И используй TFileStream.
AssignFile - морально устаревшая функция.



Игорь Шевченко ©   (2016-07-25 18:15) [3]


> AssignFile - морально устаревшая функция.


Я-то, дурак, использую. Не знал.



Kilkennycat ©   (2016-07-25 20:18) [4]

क्या यह समानांतर रूप से जुड़ा हुआ है? वे और कॉम और यूएसबी विकल्प हैं।



Kilkennycat ©   (2016-07-25 20:20) [5]

а, увидел, ком1... ну, я б еще проверил настройки ком на принтере, дип-переключатели.
А то слать-то, может и шлет, но принтеру пофиг.



DayGaykin ©   (2016-07-25 23:57) [6]


> किलकेनीकट © (25.07.16 20: 20) [5]

हां.
Для настройки https://msdn.microsoft.com/ru-ru/library/windows/desktop/aa363194(v=vs.85).aspx пригодится.



Raisa   (2016-07-26 00:20) [7]

Оправила "1"#10#13#29"V0"
На следующую строку программа не переходит. Висит.
Такое у меня уже было, когда я пробовала другие команды отправлять.

> किलकेनीकट © (25.07.16 20: 20) [5]
настройки ком на принтере, дип-переключатели

Не поняла, как проверить. Можно поподробнее?



Германн ©   (2016-07-26 01:01) [8]


> настройки ком на принтере, дип-переключатели
>
> Не поняла, как проверить. Можно поподробнее?
>

Подробнее в данном случае написано в документации к принтеру.



Raisa   (2016-07-26 01:50) [9]

Принтер старый, раньше работал в платежном терминале. При нажатии на кнопочку Feed вылезает кусочек бумаги.

http://kiosksoft.ru/devices/citizen-ppu-700ii

Информация по принтеру имеется по ссылке выше. Мне непонятно, что и как проверить.



Raisa   (2016-07-26 02:14) [10]

Надо или нет устанавливать драйвер?
У меня Windos 10 64-bit. Скачала драйвер, в списке принтеров ничего не появляется и не находится.



Kilkennycat ©   (2016-07-26 09:42) [11]


> Мне непонятно, что и как проверить.

в инструкции есть описание малюсеньких переключателей, которые устанавливают параметры ком-порта: четность, битность, скорость (и мож че еще), которые должны быть идентичными при использованию в программе.


> Скачала драйвер, в списке принтеров ничего не появляется
> и не находится.


в случае ком-порта принтер вряд ли появится.



Kilkennycat ©   (2016-07-26 09:44) [12]

इसलिए और प्रिंटर नागरिक-पीपीयू-एक्सएनयूएमएक्सएक्सआई या सिर्फ एक्सएनयूएमएक्स? सिर्फ 700, जैसा कि मैं समझता हूं, ड्राइवरों की जरूरत नहीं है, इसमें केवल एक कॉम पोर्ट है।



Kilkennycat ©   (2016-07-26 09:47) [13]


> 700, как я понял, драйвера не нужны, у него только ком-порт.

ошибся, могут быть и дргие интерфейсы...

http://kiosksoft.ru/ в Инструкция принтера Citizen PPU 700 на 33 странице указано положение дипсвичей



DayGaykin ©   (2016-07-26 20:16) [14]


> इगोर शेवचेंको © (25.07.16 18: 15) [3]
>
> > AssignFile - морально устаревшая функция.
>
>
> Я-то, дурак, использую. Не знал.

मैं बहस नहीं करूंगा।



Raisa   (2016-07-27 00:11) [15]

Не понимаю, зачем нужно проверять положение dip switch. Принтер же работал раньше.

Уже второй месяц я мучаюсь со стоящим на моем столе POS принтером.

Сегодня соединила принтер с компьютером еще одним кабелем,  к компьютеру USB-порт.

Результата нет....  Помогите, пожалуйста.



Raisa   (2016-07-27 00:27) [16]

प्रिंटर की सूची में दिखाई दिया। मैंने एक नोटबुक से प्रिंट करने की कोशिश की। कागज के दो मीटर पर एक नोटबुक से मुद्रित पाठ।



Kilkennycat ©   (2016-07-27 08:46) [17]


> Raisa (27.07.16 00:11) [15]
> Не понимаю, зачем нужно проверять положение dip switch.

На принтере, например, кто-то установил скорость передачи 9600 и проверку
четности. Вы уверены, что работаете с ком-портом именно с такими параметрами?
http://www.microridge.com/comtestserial.htm - поможет.


> Принтер же работал раньше.

В Вашей программе?


> В списке принтеров появился

ну и обращайтесь тогда к принтеру из списка, как блокнот.



DayGaykin ©   (2016-07-27 13:46) [18]

Могу подключиться по тимвьюверу и при вас написать программу-пример на делфи, которая будет печатать на этом принтере. Не более чем за час.

Не бесплатно. Если интересно пишите на почту. 77@vilker.ru



iop ©   (2016-07-27 15:00) [19]

Принтер же работал раньше.

следовательно он обязан работать сегодня.
завтра он обязан работать потому что обязан работать сегодня (потому что работал вчера).
послезавтра...... ну вы понели.

единожны что-то напечатавший принтер бессмертен.



KSergey ©   (2016-07-29 14:32) [20]

> किलकेनीकट © (27.07.16 08: 46) [17]
> > Принтер же работал раньше.
> В Вашей программе?

А СОМ-порт непременно под каждую программу следует настраивать?
Я просто уточняю, сам не работал ни разу.



sniknik ©   (2016-07-29 16:05) [21]

> А СОМ-порт непременно под каждую программу следует настраивать?
параметры с которыми обращаешься с ним из программы должны совпадать с настройками в винде и устройстве. т.е. если в принтере стоит скорость 9600 бод, а пытаешься работать на 115200 то ничего не выйдет.
+ если порт занят, например тем же драйвером печати которым печатали из блокнота, то тоже ничего не выйдет.



Германн ©   (2016-07-31 01:27) [22]


> स्निकनिक © (29.07.16 16: 05) [21]
>
> > А СОМ-порт непременно под каждую программу следует настраивать?
>
> параметры с которыми обращаешься с ним из программы должны
> совпадать с настройками в винде

Ну на всякий случай. Настроек СОМ-порта в винде не существует.



Kilkennycat ©   (2016-07-31 02:46) [23]


> हरमन © (31.07.16 01: 27) [22]

Разве? А почему ж мне приходилось их менять в диспетчере устройств, дабы работала кучка девайсов, софт к которым был написан с расчетом (а проще говоря - криво) на изменение именно таким способом?



DayGaykin ©   (2016-07-31 11:51) [24]

और किसी ने मोड कमांड को रद्द नहीं किया।



Raisa   (2016-08-01 00:39) [25]

У меня по-прежнему ничего не получается.
Ни один из примеров, найденных в Интернете, не работает.
Приведу кусок из программы, взятой из Интернета.


procedure PortInit;
 var
  ThreadID:dword;
 begin
 //создание и инициализация порта
 KolByte:=0;

 //создание порта и получение его хэндла
 CommHandle := CreateFile("COM1",GENERIC_READ or GENERIC_WRITE,0,nil,OPEN_EXISTING,
        FILE_ATTRIBUTE_NORMAL or FILE_FLAG_OVERLAPPED,0);

 //ставим маску - "по пришествии определенного символа"
 SetCommMask(CommHandle,EV_RXFLAG);

 //построение DCB
  GetCommState(CommHandle,DCB);
  DCB.BaudRate:=CBR_9600;
  DCB.Parity:=NOPARITY;
  DCB.ByteSize:=8;
  DCB.StopBits:=OneStopBit;
  DCB.EvtChar:=chr(13);//задание символа для флага
  //устанавливаем DCB
  SetCommState(CommHandle,DCB);
  //создаем параллельный поток
  //там будет вертеться процедура приема строки
  //с порта - ReadComm
  CommThread := CreateThread(nil,0,@ReadComm,nil,0,ThreadID);
 end;



Я даже не знаю, сколько кабелей должно идти от этого принтера к компьютеру.



Германн ©   (2016-08-01 00:56) [26]


> किलकेनीकट © (31.07.16 02: 46) [23]
>
>
>> हरमन © (31.07.16 01: 27) [22]
>
> Разве? А почему ж мне приходилось их менять в диспетчере
> устройств, дабы работала кучка девайсов, софт к которым
> был написан с расчетом (а проще говоря - криво) на изменение
> именно таким способом?

Шутку юмора понял. :)


> Raisa   (01.08.16 00:39) [25]
>
> У меня по-прежнему ничего не получается.
> Ни один из примеров, найденных в Интернете, не работает.
>
> Приведу кусок из программы, взятой из Интернета.

90% кода в интернете - говно см. http://www.gunsmoker.ru/2010/05/90.html

По поводу твоего кода из #25. Параметры СОМ-порта, т.е. DCB нужно задавать से его открытия! До, а не после как у тебя.



Германн ©   (2016-08-01 01:02) [27]


>  DayGaykin ©   (31.07.16 11:51) [24]
>
> Да и команду mode никто не отменял.

Кстати да. Сей вариант тоже стоит проверить, если кому нужно.



Германн ©   (2016-08-01 01:19) [28]


> Я даже не знаю, сколько кабелей должно идти от этого принтера
> к компьютеру.
>

А это уже совсем плохо. Вам лучше отказаться от этой работы и сосредоточиться на чём-то другом.



sniknik ©   (2016-08-01 07:58) [29]

> CommHandle := CreateFile("COM1",GENERIC_READ or GENERIC_WRITE,0,nil,OPEN_EXISTING,
       FILE_ATTRIBUTE_NORMAL or FILE_FLAG_OVERLAPPED,0);
компорт вроде не так задается, а так - \\.\COM1, и даже проверять, смотреть старые программы не буду, это из первой же ссылке в инете.



Kilkennycat ©   (2016-08-01 11:21) [30]


> Я даже не знаю, сколько кабелей должно идти от этого принтера  к компьютеру.


В этом случае Вам предложен идеальный вариант: DayGaykin ©   (27.07.16 13:46) [18]



DayGaykin ©   (2016-08-01 11:40) [31]


> По поводу твоего кода из #25. Параметры СОМ-порта, т.е.
> DCB нужно задавать до его открытия! До, а не после как у
> тебя.

А как, если хендла нет?



Германн ©   (2016-08-02 01:36) [32]


> DayGaykin © (01.08.16 11: 40) [31]
>
>

Признаю ошибку. Думал об одном, читал другое, отвечал на третье.



Германн ©   (2016-08-02 02:17) [33]


> स्निकनिक © (01.08.16 07: 58) [29]
>
> компорт вроде не так задается, а так - \\.\COM1

Для портов до девятого можно и так. Обратная совместимость.



Raisa   (2016-08-03 23:20) [34]

Мои выводы таковы:

1. COM-порт задается правильно.
2. При построении DCB-структуры ошибок нет.

Хочется получить ответ на вопрос, почему нет никакой реакции принтера.
Ошибка имеется при попытке послать на принтер команду печати символа и отреза бумаги?



DayGaykin ©   (2016-08-04 00:13) [35]

क्या प्रिंटर किसी भी चीज़ पर या केवल विशेष कमांड पर प्रतिक्रिया नहीं करता है?



Kilkennycat ©   (2016-08-04 00:59) [36]


> Ошибка имеется при попытке послать на принтер команду печати
> символа и отреза бумаги?

это вопрос? или сообщается какая-то ошибка? если второе, то какая?



Германн ©   (2016-08-04 01:02) [37]

क्या अपने स्वयं के सॉफ़्टवेयर का उपयोग किए बिना प्रिंटर के संचालन की जांच करना संभव है?



Kilkennycat ©   (2016-08-04 01:08) [38]

या हो सकता है कि गायब होने वाले पात्रों को मुद्रित करने का प्रयास किया गया हो?



Kilkennycat ©   (2016-08-04 01:23) [39]

और मैंने देखा, इसके लिए डिफ़ॉल्ट गति 19200 है, और आपने 9600 सेट किया है, डिफ़ॉल्ट flowcontrol DTR \ DSR है और आपके पास 13 ध्वज का उपयोग करके प्रोग्राम है ...



Kilkennycat ©   (2016-08-04 01:30) [40]


> हरमन © (04.08.16 01: 02) [37]


> Raisa   (27.07.16 00:27) [16]
प्रिंटर की सूची में दिखाई दिया। मैंने एक नोटबुक से प्रिंट करने की कोशिश की। कागज के दो मीटर पर एक नोटबुक से मुद्रित पाठ।

но это под управлением драйвера.



DayGaykin ©   (2016-08-04 13:22) [41]


> किलकेनीकट © (04.08.16 01: 23) [39]
> и я глянул, дефолтная скорость для него 19200, а Вы ставите
> 9600, flowcontrol по-умолчанию DTR\DSR а у Вас в программе
> по флагу 13...

Можно, кстати, после драйвера или тестовой программы подсмотреть какие настройки остались. Я так делал.


> किलकेनीकट © (04.08.16 00: 59) [36]
>
> > Ошибка имеется при попытке послать на принтер команду
> печати
> > символа и отреза бумаги?
>
> это вопрос? или сообщается какая-то ошибка? если второе,
>  то какая?

Насколько я помню, принтер весьма молчалив. Если только по дополнительным проводам.



Kilkennycat ©   (2016-08-04 15:53) [42]


> принтер весьма молчалив

еще какой молчун. Просто ошибка не принтера может быть, мож программа вопит.



Raisa   (2016-08-05 00:30) [43]


> DayGaykin © (04.08.16 00: 13) [35]
> Принтер не реагирует вообще ни на что или только на специальные
> команды?


दो विकल्प हैं:
1. Программа висит после посылки некоторых команд.
2. Принтер не реагирует, то есть делает вид, что не было никаких команд.



Денис11998833   (2016-08-06 15:50) [44]

Вот рабочий пример работы с сканером штрих кодов через COM. Когда-то ещё писал на базе этого кода обмен с Citizen S2000, но обыскал всё так и не нашёл куда пример завалился(..


unit uScanThread;

interface

uses
 Windows, Classes, Messages, Dialogs, SysUtils, MyUtils, UITypes;

type
 TScannerOnReadDataEvent = function(ReadData: string): string of object;

 TScanThread = class(TThread)
 public
 private
   { Private declarations }
   PH: THandle;
   Msg1: String;
   ComData: AnsiString;
   nToRead: Cardinal;
   nRead: Cardinal;
   ComStat: TComStat;
   Errs: Dword;
   Buff: array[0..1023] of AnsiChar;

   procedure OnReadData;
   procedure VCL_ShowMessage;
 public
   PortName: string;
   PortBaudRate, PortParity, PortByteSize, PortStopBits: word;

 protected
   procedure Execute; override;
 end;

Var
 Nom:integer;
 FormActive:string;

implementation

uses uMainForm;

procedure TScanThread.OnReadData;
var nComData: string;
begin
 ComData:=Trim(ComData);
 ShowMessage("Событие сканнера штрих-кода. Прочитано: "+ComData);
 MainForm.ScannerOnReadData(ComData);
end;

procedure TScanThread.VCL_ShowMessage;
begin
 ShowMessage(Msg1);
end;

procedure TScanThread.Execute;
Var
DCB:TDCB;
CommTimeouts:TCommTimeouts;
begin
 PH:=Windows.CreateFile(PChar("\\.\"+PortName), GENERIC_READ,
                             FILE_SHARE_READ,
                             nil, OPEN_EXISTING,
                             FILE_ATTRIBUTE_NORMAL, 0);

if (PH=INVALID_HANDLE_VALUE)  then
begin
 Msg1:="Невозможно открыть порт сканера: "+PortName+#10#13+SysErrorMessage(GetLastError);
 Synchronize(VCL_ShowMessage);
end;

 GetCommState(PH, DCB);
 DCB.BaudRate:=PortBaudRate;
 DCB.Parity:=PortParity;
 DCB.ByteSize:=PortByteSize;
 DCB.StopBits:=PortStopBits;
 SetCommState(PH, DCB);

 GetCommTimeouts(PH, CommTimeouts);
 CommTimeouts.ReadIntervalTimeout :=MAXDWORD;
 CommTimeouts.ReadTotalTimeoutMultiplier := 0;
 CommTimeouts.ReadTotalTimeoutConstant := 0;
 CommTimeouts.WriteTotalTimeoutMultiplier := 0;
 CommTimeouts.WriteTotalTimeoutConstant := 0;
 SetCommTimeouts(PH, CommTimeouts);

 repeat
   if Terminated then Break;
   Sleep(500);
   if Terminated then Break;
   ClearCommError(PH,Errs,@ComStat);
   nToRead:=ComStat.cbInQue;
   if nToRead=0 then Continue;
   ReadFile(PH,Buff,SizeOf(Buff),nRead,nil);
   ComData:=Trim(String(Buff));
   FillChar(Buff, SizeOf(Buff), #0);
   if Terminated then Break;
   Synchronize(OnReadData);
 until (Terminated);
 CloseHandle(PH);
end;

end.



Советую начать с опроса. Отправить что типа:
$1D$49

В конце не забыть перевод строки. Эскейп символ для него - перевод строки.

http://www.sensis.ru/files/PPU-700_700IICMD110E.pdf

$1D$49 - команда "GS I n"



Денис11998833   (2016-08-06 15:57) [45]

Так же можно отправить команду тестовой печати "GS ( A pL pH n m", если сомневаетесь в правильности кода/проводов/настроек принтера для приёма.

Если принтер зажужжит, напечатает инфу о себе, значит данные в принтер уходят нормально, что-то с приёмом данных от принтера, а это уже половина проблемы.



Kilkennycat ©   (2016-08-06 17:13) [46]


> отправить команду тестовой печати "GS ( A pL pH n m", अगर
> сомневаетесь в правильности
кода/проводов/настроек принтера
> के लिए приёма


волшебство



Денис11998833   (2016-08-06 20:57) [47]

और आपने यहां क्या जादू देखा है?



Kilkennycat ©   (2016-08-07 01:19) [48]


> Денис11998833 (06.08.16 20:57) [47]

В том, что тестовая печать - это тест принтера, когда всё остальное не вызывает сомнений, а не наоборот. Когда наоборот, пробуют запросить принтер че-нить ответить, например, версию прошивки.

Чтобы принтер зажужжал, достаточно послать аски-код любой цифры.

> что-то с приёмом данных от принтера,

это ваще тут как бэ пофиг. Как и пример работы с устройством, которое посылает данные в комп, а не наоборот.

Ну и "вы" в данном случае надо с большой буквы, или ваще не писать.



Игорь Шевченко ©   (2016-08-07 10:48) [49]


> Ну и "вы" в данном случае надо с большой буквы, или ваще
> не писать.


Еще одна жертва неграмостности, блин. Учи русский!



Raisa   (2016-08-10 01:09) [50]

Принтер заработал.
Без провода USB принтер работает.

आप सभी को धन्यवाद।


Благодаря приведенному ниже сообщению я исправила скорость на 19200, и принтер стал печатать.


> किलकेनीकट © (04.08.16 01: 23) [39]
> и я глянул, дефолтная скорость для него 19200, а Вы ставите
> 9600, flowcontrol по-умолчанию DTR\DSR а у Вас в программе
> по флагу 13...


Больше ничего не меняла, так как не знаю, что и на что надо менять. Флаг 13 так и остался.


>
> Денис11998833   (06.08.16 15:50) [44]

Спасибо за выложенный кусок программы. Не исключено, что может пригодиться.



Kilkennycat ©   (2016-08-12 00:41) [51]


> Raisa (10.08.16 01:09) [50]
> Принтер заработал.

Ура :)

Вы - молодец, добились всё-таки результата.



पन्ने: 1 2 पूरी शाखा

मंच: "शुरुआती";
वर्तमान संग्रह: 2018.09.16;
डाउनलोड करें: [xml.tar.bz2];

ऊपर









मेमोरी: 0.77 एमबी
समय: 0.037 c
2-1470299345
novichoks
2016-08-04 11:29
2018.09.16
StretchBlt


2-1469453166
Raisa
2016-07-25 16:26
2018.09.16
पीओएस प्रिंटर


15-1474880632
किसको शक होगा
2016-09-26 12:03
2018.09.16
व्हाट्सएप के साथ एक संदेश कैसे स्वीकार करें?


11-1267379542
tippa
2010-02-28 20:52
2018.09.16
в Memo влазит только 29998 байт текста


2-1470486053
Denis11998833
2016-08-06 15:20
2018.09.16
घटक मूल्यों को प्रारंभिक करना





अफ्रीकी अल्बानियन अरबी भाषा अर्मेनियाई आज़रबाइजानी बस्क बेलारूसी बल्गेरियाई कैटलन सरलीकृत चीनी) चीनी पारंपरिक) क्रोएशियाई चेक डेनिश डच अंग्रेज़ी एस्तोनियावासी फिलिपिनो फिनिश फ्रेंच
गैलिशियन् जॉर्जियाई जर्मन यूनानी हाईटियन यहूदी हिंदी हंगरी आइसलैंड का इन्डोनेशियाई आयरिश इतालवी जापानी कोरियाई लात्वीयावासी लिथुआनियाई मेसीडोनियन मलायी मोलतिज़ नार्वेजियन
फ़ारसी पोलिश पुर्तगाली रोमानियाई रूसी सर्बियाई स्लोवाक स्लोवेनियाई स्पेनिश स्वाहिली स्वीडिश थाई तुर्की यूक्रेनी उर्दू वियतनामी वेल्श यहूदी बंगाली बोस्नियाई
सिबुआनो एस्पेरांतो गुजराती हौसा हमोंग ईग्बो जावानीस कन्नड़ खमेर लाओ लैटिन माओरी मराठी मंगोलियन नेपाली पंजाबी सोमाली तामिल तेलुगु योरूबा
ज़ुलु
Английский Французский Немецкий Итальянский Португальский Русский Испанский