powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Пишем драйвер для фискального регистратора. Нужна помощь.
25 сообщений из 25, страница 1 из 1
Пишем драйвер для фискального регистратора. Нужна помощь.
    #39666471
Mironico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Задача написать свой драйвер для ФР под Linux.
Поскольку Паскаль мне ближе то выбрал
1. Lazarus
2. к нему Synapse для работы с RS232.

Столкнулся с тем что не понимаю некоторые вещи в описании протокола обмена.
Поэтому прошу помощи.

Формат сообщения от ПК к ФР:
DLE, STX, Номер, Код, [Параметры], CS, DLE, ETX[,CRC16lo,CRC16hi]).
Пример.
Команда "Прогон строки" (посланная из виндового OLE дравера и вытянутая через монитор порта) выгдядит так:
016 002 023 014 219 016 003
016 - DLE
002 - STX
023 - номер команды
014 - код операции
Подозреваю что 219 - это CS - контрольная сумма.
Снова 016 - DLE
и в конце ETX.

Проблемы (непонятки) у меня в данный момент 2:
1. Непонятка с ....ETX[,CRC16lo,CRC16hi]). То что в квадратных скобках отсутствует в команде выше. Что они имеют ввиду?
2. Как считать СS?

Вот что пишут в доке:
При передаче от ПК к ЭККР байт контрольной суммы подсчитывается таким образом, чтобы
младший байт результата побайтового сложения по полям Номер, Код, Параметры и самого байта
CS был равен нулю.
Контрольная сумма CRC16 использует CCITT 2 -полином (х 16 + х 12 + х 5 + 1) и расчитывается
по полям Номер, Код, Параметры, CS и ETX без дублирующих и заключительного DLE

И дается пример расчета на си и паскале.
Привожу паскаль:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
function CalcCRC16(DataByte: Byte; CRC16: word): word;
var
a:word;
begin
  CRC16 := CRC16 xor DataByte;
  a:=(CRC16 xor (CRC16 shl 4)) and $00FF;
  Result:=(CRC16 shr 8) xor (a shl 8) xor (a shl 3) xor (a shr 4);
end;

.

Короче тут меня заклинило.
...
Рейтинг: 0 / 0
Пишем драйвер для фискального регистратора. Нужна помощь.
    #39666487
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
И что тебе непонятно ?
Я тебе тут написал 21520645
...
Рейтинг: 0 / 0
Пишем драйвер для фискального регистратора. Нужна помощь.
    #39666492
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
да и вообще тут
уже готовое решение.

Только не проси теперь перевести код на Паскаль.

ПыСы.
И вот твои регистраторы:
http://www.ics-market.com.ua/ru/oborudovanie/fiskalnoe-oborudovanie/fiskalnye-registratory
...
Рейтинг: 0 / 0
Пишем драйвер для фискального регистратора. Нужна помощь.
    #39666500
Mironico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Написано что CS это 1 байт.
А в результате расчета CRC получается больше 1 байта.
Откуда брать CS и что это за ...ETX [,CRC16lo,CRC16hi]
Не могу понять.
...
Рейтинг: 0 / 0
Пишем драйвер для фискального регистратора. Нужна помощь.
    #39666505
Mironico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хм. Вижу не я один такой.
Спасб за ссылку.
Буду пробовать разобраться дальше.
...
Рейтинг: 0 / 0
Пишем драйвер для фискального регистратора. Нужна помощь.
    #39666515
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
MironicoНаписано что CS это 1 байт.
А в результате расчета CRC получается больше 1 байта.
Откуда брать CS и что это за ...ETX [,CRC16lo,CRC16hi]
Не могу понять.

тут нужно быть программистом, чтобы понять, что написано.
16 бит - это слово из двух байт, старшего (hi) и младшего (lo).

имхо, если ты и этого не знаешь, то ты занялся не своим делом
...
Рейтинг: 0 / 0
Пишем драйвер для фискального регистратора. Нужна помощь.
    #39666521
x1ca4064
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mironico,

Есть CS, есть CRC (не обязательный, похоже).
CS - 1 байт, CRC16 - 2 байта (как не странно)

Дампы лучше приводить в hex виде, да и протокол нужен в виде цитаты.
...
Рейтинг: 0 / 0
Пишем драйвер для фискального регистратора. Нужна помощь.
    #39666524
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
x1ca4064Mironico,

Есть CS, есть CRC (не обязательный, похоже).
CS - 1 байт, CRC16 - 2 байта (как не странно)

Дампы лучше приводить в hex виде, да и протокол нужен в виде цитаты.

Протокол обмена
...
Рейтинг: 0 / 0
Пишем драйвер для фискального регистратора. Нужна помощь.
    #39666565
x1ca4064
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecator Протокол обмена

Такое впечатление, что в один документ запихали 2, отсюда у ТС и непонятки.
...
Рейтинг: 0 / 0
Пишем драйвер для фискального регистратора. Нужна помощь.
    #39666585
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mironico1. Непонятка с ....ETX[,CRC16lo,CRC16hi]). То что в квадратных скобках отсутствует в команде выше. Что они имеют ввиду?
В строке 'ETX[,CRC16lo,CRC16hi]' квадратные скобки означают что поля CRC16lo и CRC16hi могут отсутствовать. По какой причине и в каком случае - ищите в документации.
...
Рейтинг: 0 / 0
Пишем драйвер для фискального регистратора. Нужна помощь.
    #39666588
Mironico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чуть проясняется.
CS - это 1 байт получающийся побайтовым сложением по полям Номер, Код, Параметры

А CRC16 это другое. 2 байта в конце.
Думал что это оно и есть и не понимал как 2 байта пихать в 1.

Почему только этих 2 байта CRC16 в конце сниффер не показывает?
...
Рейтинг: 0 / 0
Пишем драйвер для фискального регистратора. Нужна помощь.
    #39666592
Mironico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
опередили.
Кста так и думал что "необязательные"
...
Рейтинг: 0 / 0
Пишем драйвер для фискального регистратора. Нужна помощь.
    #39666598
Mironico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прогнал через монитор почти все команды.
Байтов CRC в упор не наблюдаю
...
Рейтинг: 0 / 0
Пишем драйвер для фискального регистратора. Нужна помощь.
    #39666714
Mironico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для таких же чайников как я на будущее.

Вычисление CS:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
type
  TOperands = array of Byte;

function CheckSum(const AOperands: TOperands): Byte;
var
  Index: Integer;
begin
  Result:= 0;
  for Index:= 0 to Length(AOperands) - 1 do
    Inc(Result, AOperands[Index]);
  Result:= not Result + 1;
end;
...
Рейтинг: 0 / 0
Пишем драйвер для фискального регистратора. Нужна помощь.
    #39666721
Tactical Nuclear Penguin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MironicoДля таких же чайников как я на будущее.

Вычисление CS:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
type
  TOperands = array of Byte;

function CheckSum(const AOperands: TOperands): Byte;
var
  Index: Integer;
begin
  Result:= 0;
  for Index:= 0 to Length(AOperands) - 1 do
    Inc(Result, AOperands[Index]);
  Result:= not Result + 1;
end;




прелестная функция
...
Рейтинг: 0 / 0
Пишем драйвер для фискального регистратора. Нужна помощь.
    #39666803
Mironico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нагуглил. Работает хотя-бы. :)
...
Рейтинг: 0 / 0
Пишем драйвер для фискального регистратора. Нужна помощь.
    #39666804
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
MironicoНагуглил. Работает хотя-бы. :)
а ты весь код драйвера нагуглишь ?
...
Рейтинг: 0 / 0
Пишем драйвер для фискального регистратора. Нужна помощь.
    #39666807
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, если не путаю, эти два выражения идентичны:
Код: pascal
1.
Result:= not Result + 1;



Код: pascal
1.
Result:= -Result;
...
Рейтинг: 0 / 0
Пишем драйвер для фискального регистратора. Нужна помощь.
    #39666833
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MironicoНагуглил. Работает хотя-бы. :)только это не полином ЦРЦ
...
Рейтинг: 0 / 0
Пишем драйвер для фискального регистратора. Нужна помощь.
    #39666835
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
SiemarglMironicoНагуглил. Работает хотя-бы. :)только это не полином ЦРЦ
это вообще не полином.
ТС не программист от слова совсем, но с широкими замашками.
Программирует через гугл
...
Рейтинг: 0 / 0
Пишем драйвер для фискального регистратора. Нужна помощь.
    #39666840
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecatorПрограммирует через гугл

Ну и? Сейчас таких программистов десять на дюжину.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Пишем драйвер для фискального регистратора. Нужна помощь.
    #39666841
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Dimitry SibiryakovdefecatorПрограммирует через гугл

Ну и? Сейчас таких программистов десять на дюжину.
ну хоть оставшиеся из дюжины учатся
...
Рейтинг: 0 / 0
Пишем драйвер для фискального регистратора. Нужна помощь.
    #39666842
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglMironicoНагуглил. Работает хотя-бы. :)только это не полином ЦРЦ
Так ему же не только crc нужно было...
...
Рейтинг: 0 / 0
Пишем драйвер для фискального регистратора. Нужна помощь.
    #39666847
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpSiemarglпропущено...
только это не полином ЦРЦ
Так ему же не только crc нужно было...ну ему сначала надо научится разделять пакеты, потом ЦРЦ, а потому уже парсить

связь та еще проблема вечно
...
Рейтинг: 0 / 0
Пишем драйвер для фискального регистратора. Нужна помощь.
    #39668150
Mironico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Согласен. Программист из меня совсем не очень.
А все потому - что 15 лет занимался несколькими делами сразу, (фирма торговая)
а на программирование времени было не много.
Только сейчас начинаю учиться заново поэтому и гуглю
чтобы на примерах разбираться.
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Пишем драйвер для фискального регистратора. Нужна помощь.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]