Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

POS Принтер


Страницы:   1 2 3

Raisa ©   (2016-07-25 16:26:00) 

var prn : System.Text;
begin
//ASCII   GS V  m
//Hex     1D 42 m
//Decimal 29 66 m
//Edit1.Text:='COM1';
try
  AssignFile(prn,trim(Edit1.Text));
  Rewrite(prn);
  Write(prn,#29#86#0#5);//
except
  ShowMessage('Ошибка!');
end;

CloseFile(prn);


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


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

Ура :)

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


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

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

Спасибо всем.


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


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


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


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

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


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


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


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


Kilkennycat   (2016-08-07 01:19:00) [4]


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

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

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

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

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

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


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

А в чем вы здесь волшебство узрели?


Kilkennycat   (2016-08-06 17:13:00) [6]


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


волшебство


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

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

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


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

Вот рабочий пример работы с сканером штрих кодов через 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'


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


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


Вариантов два:
1. Программа висит после посылки некоторых команд.
2. Принтер не реагирует, то есть делает вид, что не было никаких команд.


Kilkennycat   (2016-08-04 15:53:00) [10]


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

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


DayGaykin   (2016-08-04 13:22:00) [11]


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

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


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

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


Kilkennycat   (2016-08-04 01:30:00) [12]


> Германн ©   (04.08.16 01:02) [37]


> Raisa   (27.07.16 00:27) [16]
В списке принтеров появился. Попробовала печать из блокнота. Напечатал текст из блокнота на двух метрах бумаги.

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


Kilkennycat   (2016-08-04 01:23:00) [13]

и я глянул, дефолтная скорость для него 19200, а Вы ставите 9600, flowcontrol по-умолчанию DTR\DSR а у Вас в программе по флагу 13...


Kilkennycat   (2016-08-04 01:08:00) [14]

а может, есть попытка печати символов, которые отсутствуют?


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

Есть возможность проверить работоспособность принтера без использования собственного ПО?


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


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

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


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

Принтер не реагирует вообще ни на что или только на специальные команды?


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

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

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

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


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


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

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


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


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

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


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо