Форум программистов CodeGuru
13 Ноябрь 2018, 06:21:24 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
Новости:
 
   Начало   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Программирование контроллера ТРК  (Прочитано 23922 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Антон
Интересующийся
**
Офлайн Офлайн

Сообщений: 14


Просмотр профиля
« : 23 Июнь 2006, 13:40:21 »

Здравтсвуйте, передо мной возникла задача, в которой надо программировать контроллер ТРК (топливно-раздаточная колонка). Только как это делать не понимаю.. Грустный
Вот описание протокола:
Формат сообщений, передаваемых от ККМ в контроллер ТРК:

SOH---TRK_No---Command---STX---Price---Volume---Status---ETX---CRC
---------------------------------------------------------------Error
---------------------------------------------------------------Code      

где:

Поле данных----Размер, байт------Тип------------Значение----------Содержание
SOH----------------------1---------------HEX----------------01----------------Маркер начала сообщения
TRK_No------------------2--------------ASCII--------'00'*,  '01'…'7Fh'-----Номер ТРК. *Только для команды "Общий сброс"
Command---------------1--------------ASCII--------------'0'…'F'------------Код команды управления
STX-----------------------1---------------HEX----------------02---------------Маркер начала поля данных
Price----------------------6-------------ASCII--------'000000' …'999999'--Цена топлива, коп.
Volum--------------------6------------- ASCII--------'000000' …'999999'--Доза налива , мл
Status-------------------4------------- ASCII------------0000'…'FFFF'-------Код состояния/ошибки и параметры ТРК
Error---------------------2--------------ASCII--------------'00'…'FF'-----------Код ошибки протокола
Code---------------------2-------------ASCII---------------'00'…'FF'-----------Код состояния ТРК
ETX-----------------------1--------------HEX--------------------03--------------Маркер окончания поля данных
CRC----------------------1--------------HEX-----------------00 … FF------------Контрольная сумма


Как сформировать это сообщение?

Заранее спасибо!
Так должно быть понятнее, пробелы в сообщении не видно.. Грустный
ККМ- контрольно-кассовая машина... Мне нужно вместо этой ККМ отправлять комманды контроллеру.
« Последнее редактирование: 23 Июнь 2006, 23:28:53 от антон » Записан
3V
Администратор
Ветеран
*****
Офлайн Офлайн

Сообщений: 1347



Просмотр профиля WWW
« Ответ #1 : 23 Июнь 2006, 21:11:56 »

Цитировать
Только как это делать не понимаю..

Честно говоря, из Вашего поста вообще ничего не понятно. Какая колонка ? Какой протокол ? Для чего ? Что такое ККМ ?
Записан

Антон
Интересующийся
**
Офлайн Офлайн

Сообщений: 14


Просмотр профиля
« Ответ #2 : 23 Июнь 2006, 23:32:55 »

Цитата: 3V
Цитировать
Только как это делать не понимаю..

Честно говоря, из Вашего поста вообще ничего не понятно. Какая колонка ? Какой протокол ? Для чего ? Что такое ККМ ?

Суть проблемы заключается в написании программы для управления АЗС (авто-заправочная станция), так вот, колонка - колонка для заправки автомобиля топливом, протокол - управление осуществляется через контроллер, у которого есть протокол управления...
Записан
3V
Администратор
Ветеран
*****
Офлайн Офлайн

Сообщений: 1347



Просмотр профиля WWW
« Ответ #3 : 24 Июнь 2006, 18:03:25 »

Цитировать
Суть проблемы заключается в написании программы

Отлично. Уже определились с платформой/языком/средой разработки (это, суть, повторение моего предыдущего вопроса) ?
Записан

Антон
Интересующийся
**
Офлайн Офлайн

Сообщений: 14


Просмотр профиля
« Ответ #4 : 25 Июнь 2006, 02:46:32 »

Цитата: 3V
Цитировать
Суть проблемы заключается в написании программы

Отлично. Уже определились с платформой/языком/средой разработки (это, суть, повторение моего предыдущего вопроса) ?

простите, не понял сначала....
Писать нужно под Windows, на С++.
Записан
3V
Администратор
Ветеран
*****
Офлайн Офлайн

Сообщений: 1347



Просмотр профиля WWW
« Ответ #5 : 25 Июнь 2006, 04:28:43 »

Ну, теперь, наверно, осталось только выяснить через какой интерфейс взаимодействует эта ККМ с ТРК. Что это ? COM порт, сетка, что то еще ?
Собственно, "сформировать сообщение" тут просто.
Надо описать структуру с соответствующими полями, т.е. типа:
Код:
typedef struct _KKM_MESSAGE
{
   BYTE SOH;
   char[2] TRK_No;
   ...
}
   KKM_MESSAGE;

Потом создать экземпляр этой структуры, и заполнить его нужными данными.
Но вот как этот "пакет" отправить - зависит от интерфейса канала связи.
Записан

Антон
Интересующийся
**
Офлайн Офлайн

Сообщений: 14


Просмотр профиля
« Ответ #6 : 03 Июль 2006, 13:24:23 »

Цитата: 3V
Ну, теперь, наверно, осталось только выяснить через какой интерфейс взаимодействует эта ККМ с ТРК. Что это ? COM порт, сетка, что то еще ?
Собственно, "сформировать сообщение" тут просто.
Надо описать структуру с соответствующими полями, т.е. типа:
Код:
typedef struct _KKM_MESSAGE
{
   BYTE SOH;
   char[2] TRK_No;
   ...
}
   KKM_MESSAGE;

Потом создать экземпляр этой структуры, и заполнить его нужными данными.
Но вот как этот "пакет" отправить - зависит от интерфейса канала связи.


Интерфейс  взаимодействия - СОМ порт.. Улыбка

Спасибо большое!
Записан
Антон
Интересующийся
**
Офлайн Офлайн

Сообщений: 14


Просмотр профиля
« Ответ #7 : 06 Июль 2006, 14:35:14 »

Цитата: 3V
Ну, теперь, наверно, осталось только выяснить через какой интерфейс взаимодействует эта ККМ с ТРК. Что это ? COM порт, сетка, что то еще ?
Собственно, "сформировать сообщение" тут просто.
Надо описать структуру с соответствующими полями, т.е. типа:
Код:
typedef struct _KKM_MESSAGE
{
   BYTE SOH;
   char[2] TRK_No;
   ...
}
   KKM_MESSAGE;

Потом создать экземпляр этой структуры, и заполнить его нужными данными.
Но вот как этот "пакет" отправить - зависит от интерфейса канала связи.


А при создании объекта поля будут находиться именно в том порядке как я их опишу?
И есть ли какие-нибудь особенности отправки экземпляра структуры в СОМ-порт?
Записан
3V
Администратор
Ветеран
*****
Офлайн Офлайн

Сообщений: 1347



Просмотр профиля WWW
« Ответ #8 : 07 Июль 2006, 09:49:59 »

Цитировать
А при создании объекта поля будут находиться именно в том порядке как я их опишу?

Да.
Только надо учесть выравнивание в структурах. Если минимальный размер поля 1 байт, то и ставить 1 байт. См. настройки компилятора. Если компилятор от мелкософта, то см. #pragma pack...

Цитировать
И есть ли какие-нибудь особенности отправки экземпляра структуры в СОМ-порт?

Да нет. Те же самые CreateFile, WriteFile...

Вот, почитайте статью от мелкософта: Serial Communications in Win32
Записан

Антон
Интересующийся
**
Офлайн Офлайн

Сообщений: 14


Просмотр профиля
« Ответ #9 : 07 Июль 2006, 13:09:33 »

Спасибо 3V!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2015, Simple Machines Valid XHTML 1.0! Valid CSS!