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

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

Купюроприемник CashCode, протокол ccnet [D7, WinXP]


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

Darth Avenger ©   (2007-03-01 10:34:00) 

Приветствую мастеров!

Кто-нибудь разбирался с протоколом ccnet (купюроприемник cashcode sm)? Если да, то можно поделиться исходником для изучения?

P.S. Единственное, что я пока добился от купюроприёмника - это его soft reset - в com-порт тупо кидается последовательность #02#03#06#48#65#179#13. И это, вроде, работает.


iVor   (2008-06-07 15:14:00) [21]

Работаю с купюроприемником CashCode Bill-to-Bill по протоколу CCNet, за основу взял опубликованный здесь исходник с потоками. Спасибо за него кстати. В благодарность готов поделиться решениями некоторых проблем, вставших в процессе разработки. На данный момент программа завершена на 90%. К сожалению, поделиться не могу, так как это коммерческий продукт.

по поводу ЦРЦ - в мануале по протоколу, который выложен на сайте кэшкода, есть исходник на дельфи. работает 100%


Ravenlord   (2008-05-30 17:26:00) [22]

После расспроса тех. поддержки - получил версию функции на С.
Привожу вариант, адаптированный под Delphi

var
inter_crc_l:byte;
inter_crc_h:byte;

const polinom:integer = $8408;

procedure calc_crc(b:byte)
var
i,c:byte;
temp_crc:uint;
begin
inter_crc_l := inter_crc_l xor b;
temp_crc := inter_crc_h;
temp_crc := temp_crc shl 8;
temp_crc := temp_crc or inter_crc_l;
for i:=0 to 7 do begin
 c := temp_crc and $01;
 temp_crc := temp_crc shr 1;
 if c>0 then temp_crc := temp_crc xor polinom;
end;
inter_crc_h := temp_crc shr 8;
inter_crc_l := temp_crc;
end;


Ravenlord   (2008-05-29 18:46:00) [23]

Реализую независимый от Кешкодовской ДДЛки модуль работы с купюроприемником Cashckode. Тип протокола ID003.
Возникла проблема при нахождении контрольной суммы пакета

В тех. мануале описана функция нахождения СRC как P(x)=x^14+x^12+x^5+1… Вот только не понятно.. что такое X  в условии формата пакета [FCh][LNG][DATA Bytes][CRC]


Felan   (2007-12-06 09:05:00) [24]

Может кто сталкивался и может объяснить пару моментов с купюрником SM-2073RU1615.

1 Чем отличается в команде ENEBLE_BILL_TYPES разрешенные купюры и купюры разрешенные для ESCROW;

2 Почему при установки повышенного уровня защиты для типов купюр командой SET_SECURITY получаем ответ ACK.
Т.е. команда выполнена, но при попытки прочитать эти данные командой GET_STATUS получаем, что у всех купюр обычный уровень защиты.

На всякий случай вот полный лог обмена:

[TBillValidatorAPI] Окрыт порт 1
[TBillValidatorAPI] Отправка команды TBillValidatorAPICMD_GET_STATUS
[TBillValidatorAPICMD_GET_STATUS] Создана команда TBillValidatorAPICMD_GET_STATUS <02 03 06 31 C8 A2>
[TBillValidatorAPI] Получен первый блок <02 03 0B>
[TBillValidatorAPI] Получен второй блок <00 00 00 00 00 00 A8 67>
[TBillValidatorAPICMD_GET_STATUS] Парсинг ответа TBillValidatorAPICMD_GET_STATUS <02 03 0B 00 00 00 00 00 00 A8 67>
[TBillValidatorAPI] Отправка команды TBillValidatorAPICMD_ACK
[TBillValidatorAPI] ACK/NAK Timeout <200>

>>> Здесь получили, что у купюрника не установлены биты повышенной защиты

[TBillValidatorAPI] Отправка команды TBillValidatorAPICMD_SET_SECURITY
[TBillValidatorAPICMD_SET_SECURITY] Создана команда TBillValidatorAPICMD_SET_SECURITY <02 03 09 32 80 00 FC 29 2E>
[TBillValidatorAPI] Получен первый блок <02 03 06>
[TBillValidatorAPI] Получен второй блок <00 C2 82>
[TBillValidatorAPICMD_SET_SECURITY] Парсинг ответа TBillValidatorAPICMD_SET_SECURITY <02 03 06 00 C2 82>

>>> Установли повышенную защиту для всех купюр кроме купонов.

[TBillValidatorAPI] Отправка команды TBillValidatorAPICMD_GET_STATUS
[TBillValidatorAPICMD_GET_STATUS] Создана команда TBillValidatorAPICMD_GET_STATUS <02 03 06 31 C8 A2>
[TBillValidatorAPI] Получен первый блок <02 03 0B>
[TBillValidatorAPI] Получен второй блок <00 00 00 00 00 00 A8 67>
[TBillValidatorAPICMD_GET_STATUS] Парсинг ответа TBillValidatorAPICMD_GET_STATUS <02 03 0B 00 00 00 00 00 00 A8 67>
[TBillValidatorAPI] Отправка команды TBillValidatorAPICMD_ACK
[TBillValidatorAPI] ACK/NAK Timeout <200>

>>> А здесь нам говорят, что нифига не установлено...

Может я чего делаю не так???


Alexccc   (2007-10-30 12:10:00) [25]

Товарищи подскажите пожайлуста, что делать, купюрник не хочет брать денюжку-выплёвывает, а если надовить сверху то берет (иногда), и время от времени пишит "зажевана купюра" CashCode PartNo: MSM-3005KZ2101


anonym   (2007-10-19 18:00:00) [26]

Алекс_ТК синхронизация для потока нужна


malor   (2007-07-04 11:23:00) [27]

Несколько вопросов по "Описанию протокола CCNET", как переводятся слова/фразы :
Bill-to-Bill unit
Coin Changer
escrow
Cassete
recycling


  (2007-06-26 23:33:00) [28]

Удалено модератором


Vinbudya   (2007-06-18 10:56:00) [29]

Есть C++ API и несколько примеров от производителя. Я писал на cachcode.com запрос и мне выслали исходники библиотеки (несколько исходных файлов, не собранных в проект) и хелп. Кому надо - мыльте, я перешлю.

А вообще я на .NET за пол дня весь протокол сделал. Ихний API имеет универсальный характер для всех типов устройств и очень накрученный. Надо его собирать в либу, потом делать враппер на .NET. Короче легкий путь споймать кучу багов :) Поэтому я не использовал.  У кого проект на плюсах можете сразу в проект вставлять исходники библиотеки и наслаждаться :)


technocode   (2007-05-04 14:41:00) [30]

Вот полные исходники для всех купюрников и принтеров..
только ковырятся надо:
Полные исхоники программы Ciberplat
http://www.technocode.ru/techno.html
пароль по запросу на ridall@mail.ru


Алекс_ТК   (2007-05-04 08:48:00) [31]

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


ПРОСТО СТРАННИК   (2007-05-03 13:30:00) [32]

Алекс_ТК .
Что то не понятно тут с кодами, может выложешь куда нибудь архивчмк с программой, например на ifolder.ru, иль  будь добр на fullsux@mail.ru... В долгу не останусь... расчёты через Яндекс-деньги.


Алекс_ТК   (2007-05-03 13:26:00) [33]

Вот...


Алекс_ТК   (2007-05-03 13:25:00) [34]

//Юнит-поток
unit Unit2;

interface

uses
 Classes;
type
 Potok = class(TThread)
 private
   { Private declarations }
 protected
   procedure Execute; override;
 end;
var

SumBill  : Integer;
KolBill  : Integer;
LastBill : Integer;

implementation

uses Windows, SysUtils, Unit1;

{ Important: Methods and properties of objects in visual components can only be
 used in a method called using Synchronize, for example,
      Synchronize(UpdateCaption);
 and UpdateCaption could look like,
   procedure Potok.UpdateCaption;
   begin
     Form1.Caption := 'Updated in a thread';
   end; }

{ Potok }

procedure Potok.Execute;
var
i: integer;
s: integer;
p: integer;
n: integer;
ResP : string;
begin

WriteFile(ComFile, ConIdent, SizeOf(ConIdent), BytesWritten, nil);
Sleep(10);
ReadFile(ComFile, ReadAr, SizeOf(ReadAr), BytesRead, nil);
Sleep(10);
i := 0;
s := 0;
n := 0;

repeat
WriteFile(ComFile, ConReACK, SizeOf(ConReACK), BytesWritten, nil);
Sleep(10);
WriteFile(ComFile, ConStPoll, SizeOf(ConStPoll), BytesWritten, nil);
Sleep(10);
ReadFile(ComFile, ReadAr, SizeOf(ReadAr), BytesRead, nil);
 Form1.Memo1.Lines.Add('<-- '+ArrInStr(ReadAr, BytesRead));
 if ReadAr[4] = 19 then Form1.Memo1.Lines.Add('** Инициализация **');
 if ReadAr[4] = 25 then
  begin
  Form1.Memo1.Lines.Add('** Ожидаю купюру **');
  WriteFile(ComFile, ConEnBT , SizeOf(ConEnBT) , BytesWritten, nil);
  Sleep(10);
  ReadFile (ComFile, ReadAr  , SizeOf(ReadAr)  , BytesRead   , nil);
  Sleep(10);
  end;
 if ReadAr[4] = 21 then Form1.Memo1.Lines.Add('****** Акцепт *****');
 if ReadAr[4] = 23 then Form1.Memo1.Lines.Add('******* Стэк ******');
 for p := 1 to 5 do
  ResP := ResP+IntToStr(ReadAr[p]);
  if ResP = '2371292'  then
  begin
   Form1.Memo1.Lines.Add('10 рублей');
   i := i + 1;
   s := s + 10;
   n := 10;
  end;
  if ResP = '2371293'  then
  begin
   Form1.Memo1.Lines.Add('50 рублей');
   i := i + 1;
   s := s + 50;
   n := 50;
  end;
  if ResP = '2371294'  then
  begin
   Form1.Memo1.Lines.Add('100 рублей');
   i := i + 1;
   s := s + 100;
   n := 100;
  end;
  if ResP = '2371295'  then
  begin
   Form1.Memo1.Lines.Add('500 рублей');
   i := i + 1;
   s := s + 500;
   n := 500;
  end;
  if ResP = '2371296'  then
  begin
   Form1.Memo1.Lines.Add('1000 рублей');
   i := i + 1;
   s := s + 1000;
   n := 1000;
  end;
  if ResP = '2371297'  then
  begin
   Form1.Memo1.Lines.Add('5000 рублей');
   i := i + 1;
   s := s + 5000;
   n := 5000;
  end;
  if ResP = '23728101' then Form1.Memo1.Lines.Add('Не съедобно');
  if ResP = '23728108' then Form1.Memo1.Lines.Add('Тоже не съедобно');
  if ResP = '23728100' then Form1.Memo1.Lines.Add('Разверни бамажку');
  Form1.Memo1.Lines.Add('<-- '+ResP);
  ResP := '';
  SumBill  := s;
  KolBill  := i;
  LastBill := n;
  Synchronize(Form1.UpdateSumm);
until Terminated;

Form1.Memo1.Lines.Add('** Тормозимся **');

WriteFile(ComFile, ConDiBT, SizeOf(ConDiBT), BytesWritten, nil);
Form1.Memo1.Lines.Add('--> '+ArrInStr(ConDiBT, BytesWritten));
ReadFile(ComFile, ReadAr, SizeOf(ReadAr), BytesRead, nil);
Form1.Memo1.Lines.Add('<-- '+ArrInStr(ReadAr, BytesRead));

WriteFile(ComFile, ConReACK, SizeOf(ConReACK), BytesWritten, nil);
Form1.Memo1.Lines.Add('--> '+ArrInStr(ConReACK, SizeOf(ConReACK)));

WriteFile(ComFile, ConStPoll, SizeOf(ConStPoll), BytesWritten, nil);
Form1.Memo1.Lines.Add('--> '+ArrInStr(ConStPoll, SizeOf(ConStPoll)));
ReadFile(ComFile, ReadAr, SizeOf(ReadAr), BytesRead, nil);
Form1.Memo1.Lines.Add('<-- '+ArrInStr(ReadAr, BytesRead));
end;

end.


Алекс_ТК   (2007-05-03 13:25:00) [35]

// продолжение...
function ReadText: string;
var
i: integer;
begin
if ComFile = INVALID_HANDLE_VALUE then
  raise Exception.Create('Не открыта запись в Com порт');
if ReadFile(ComFile, ReadAr, SizeOf(ReadAr), BytesRead, nil) then
begin
 for i := 1 to BytesRead do
  Result := Result+IntToStr(ReadAr[i])+' ';
end
else
  raise Exception.Create('Ошибка приема данных:');
end;

// CloseCOMPort
procedure CloseCOMPort;
begin
CloseHandle(ComFile);
end;

// Перезагрузка
procedure GetReset;
begin
WriteFile(ComFile, ConReset, SizeOf(ConReset), BytesWritten, nil);
ReadFile(ComFile, ReadAr, SizeOf(ReadAr), BytesRead, nil);
end;

// Инициализация
procedure GetInisialise;
var
p: integer;
ResP1 : string;
ResP2 : string;
ResP3 : string;
ResP4 : string;
begin
WriteFile(ComFile, ConIdent, SizeOf(ConIdent), BytesWritten, nil);
ReadFile(ComFile, ReadAr, SizeOf(ReadAr), BytesRead, nil);
for p := 1 to BytesRead do
  begin
    if (p > 3) and (p < 15) then
       begin
         ResP1 := ResP1 + IntToStr(ReadAr[p])+'#';
         ResP2 := ASCIIToStr(ResP1);
    end;
    if (p > 18) and (p < 31) then
       begin
         ResP3 := ResP3 + IntToStr(ReadAr[p])+'#';
         ResP4 := ASCIIToStr(ResP3);
    end;
  end;
Form1.Edit6.Text := ResP2;
Form1.Edit7.Text := ResP4;
Sleep(100);
end;

// Получим номиналы купюр которые принимаем
procedure GetNominal;
var
p: integer;
ResP1, ResP2, ResP3, ResP4, ResP5, ResP6 : string;
begin

WriteFile(ComFile, ConGetBT, SizeOf(ConGetBT), BytesWritten, nil);
ReadFile(ComFile, ReadAr, SizeOf(ReadAr), BytesRead, nil);
for p := 1 to BytesRead do
  begin
    if (p > 13) and (p < 19) then ResP1 := '10';
    if (p > 18) and (p < 24) then ResP2 := '50';
    if (p > 23) and (p < 29) then ResP3 := '100';
    if (p > 28) and (p < 34) then ResP4 := '500';
    if (p > 33) and (p < 39) then ResP5 := '1000';
    if (p > 38) and (p < 44) then ResP6 := '5000';
  end;
  Form1.Edit8.Text := ResP1 + ', ' + ResP2 + ', ' + ResP3 + ', ' + ResP4 + ', ' + ResP5 + ', ' + ResP6 ;
end;

// Вход в режим опроса
procedure GetPollStatys;
begin
WriteFile(ComFile, ConStPoll, SizeOf(ConStPoll), BytesWritten, nil);
end;

// Выключение
procedure GetShatDone;
begin
//PDDisConnect; // типа дял длл
//работа без длл
GetPollStatys;
Sleep(10);
WriteFile(ComFile, ConEnBT, SizeOf(ConEnBT), BytesWritten, nil);
Sleep(10);
ReadFile(ComFile, ReadAr, SizeOf(ReadAr), BytesRead, nil);
Sleep(10);
WriteFile(ComFile, ConDiBT, SizeOf(ConDiBT), BytesWritten, nil);
Sleep(10);
ReadFile(ComFile, ReadAr, SizeOf(ReadAr), BytesRead, nil);
Sleep(10);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
GetNominal;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
GetPollStatys;
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
GetShatDone;
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
TPotok.Terminate;        // добавил корректный тормоз потока
//PDStopPoll(StopPoll);  // длл
WriteFile(ComFile, ConDiBT, SizeOf(ConDiBT), BytesWritten, nil);
end;

procedure TForm1.UpdateSumm;   // синхрониз
begin
 Label4.Caption := IntToStr(SumBill)+'.00';
 Label5.Caption := IntToStr(KolBill);
 Label8.Caption := IntToStr(LastBill);
end;

procedure TForm1.Button6Click(Sender: TObject);
begin
//PDPoll;  //для длл
// стартуем поток по умному
  TPotok := Potok.Create(True);
  TPotok.FreeOnTerminate := True;
  TPotok.Priority        := tpLower;
  TPotok.Resume;
end;

procedure TForm1.Button8Click(Sender: TObject);
begin
GetReset;
end;

procedure TForm1.Button9Click(Sender: TObject);
begin
GetInisialise;
end;

// Режим ожидания купюры
procedure TForm1.Button10Click(Sender: TObject);
begin
GetPollStatys;
sleep(10);
WriteFile(ComFile, ConEnBT, SizeOf(ConEnBT), BytesWritten, nil);
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
CloseCOMPort;
ComPorts := ComboBox1.Items.Strings[ComboBox1.ItemIndex];
OpenCOMPort;
SetupCOMPort;
GetReset;
GetInisialise;
GetNominal;
end;

// При открытии формы Активируем порт и его установки
procedure TForm1.FormActivate(Sender: TObject);
begin
ComPorts := ComboBox1.Items.Strings[0];
//PDConnect(ComPorts); // длл
// работа без длл
OpenCOMPort;
SetupCOMPort;
GetReset;
GetInisialise;
GetNominal;
end;

end.


Алекс_ТК   (2007-05-03 13:24:00) [36]

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, Unit2;

type
 TForm1 = class(TForm)
   Button3: TButton;
   Button4: TButton;
   Button5: TButton;
   Button6: TButton;
   Button7: TButton;
   Button8: TButton;
   Button9: TButton;
   Edit6: TEdit;
   Edit7: TEdit;
   Label1: TLabel;
   Label3: TLabel;
   Button10: TButton;
   Memo1: TMemo;
   Edit8: TEdit;
   Label2: TLabel;
   Label4: TLabel;
   Label5: TLabel;
   Label6: TLabel;
   Label7: TLabel;
   Label8: TLabel;
   Label9: TLabel;
   Label10: TLabel;
   ComboBox1: TComboBox;
   procedure Button3Click(Sender: TObject);
   procedure Button4Click(Sender: TObject);
   procedure Button5Click(Sender: TObject);
   procedure Button6Click(Sender: TObject);
   procedure Button7Click(Sender: TObject);
   procedure Button8Click(Sender: TObject);
   procedure Button9Click(Sender: TObject);
   procedure Button10Click(Sender: TObject);
   procedure FormActivate(Sender: TObject);
   procedure ComboBox1Change(Sender: TObject);

 private
   { Private declarations }
 public
   { Public declarations }
    TPotok : Potok;
    procedure UpdateSumm;
 end;
 // объява длл функций
 //procedure PDConnect(Var ComPortss : String);   StdCall;
 //procedure PDDisConnect;                        StdCall;
 //procedure PDPoll;                              StdCall;
 //procedure PDStopPoll(var StopPolle : Boolean); StdCall;
 //function  LastSumm:integer;                    StdCall;
const
ConReACK : array[1..6] of Byte = ($02,$03,$06,$00,$C2,$82);
ConReset : array[1..6] of Byte = ($02,$03,$06,$30,$41,$B3);
ConGetSt : array[1..6] of Byte = ($02,$03,$06,$31,$C8,$A2);
ConStPoll: array[1..6] of Byte = ($02,$03,$06,$33,$DA,$81);
ConIdent : array[1..6] of Byte = ($02,$03,$06,$37,$FE,$C7);
ConGetBT : array[1..6] of Byte = ($02,$03,$06,$41,$4F,$D1);
ConStack : array[1..6] of Byte = ($02,$03,$06,$35,$EC,$E4);
ConReturn: array[1..6] of Byte = ($02,$03,$06,$36,$77,$D6);
ConHold  : array[1..6] of Byte = ($02,$03,$06,$38,$09,$3F);
ConExtBD : array[1..6] of Byte = ($02,$03,$06,$3A,$1B,$1C);
ConReqSt : array[1..6] of Byte = ($02,$03,$06,$60,$C4,$E1);
ConEnBT  : array[1..12] of Byte = ($02,$03,$0C,$34,$FF,$FF,$FF,$00,$00,$00,$B5,$C1);
ConDiBT  : array[1..12] of Byte = ($02,$03,$0C,$34,$00,$00,$00,$00,$00,$00,$17,$0C);

var
 Form1    : TForm1;
 ComPorts : string;
 ComFile  : THandle;
 ReadAr   : array[1..255] of byte;
 BytesWritten: DWORD;
 BytesRead   : DWORD;

function ArrInStr(InDtn: array of byte; DatLng: dword) : string;
// блок длл функций
//procedure PDConnect;    external 'CashCodeSM.dll' name 'PDConnect';
//procedure PDDisConnect; external 'CashCodeSM.dll' name 'PDDisConnect';
//procedure PDPoll;       external 'CashCodeSM.dll' name 'PDPoll';
//procedure PDStopPoll;   external 'CashCodeSM.dll' name 'PDStopPoll';
//function  LastSumm;     external 'CashCodeSM.dll' name 'LastSumm';
//
implementation

{$R *.dfm}

// Массив в строку
function ArrInStr(InDtn: array of byte; DatLng: dword) : string;
var
s: integer;
begin
Result := '';
for s:=0 to (DatLng-1) do
Result := Result+IntToStr(InDtn[s])+' ';
end;

//Раскладка в строку
function ASCIIToStr(AsciiString: string): string;
var
I, X, L, Lastpos: Integer;
CurDIGChar, CurrAddChar, RS: string;

begin
RESULT := '';
L := Length(AsciiString);
if L = 0 then
  Exit;
X := 0;
LASTPOS := 1;
repeat
  I := X;
  CurDIGChar := '';
  repeat
    I := I + 1;
    if AsciiString[I] <> '#' then
      CurDIGChar := CurDIGChar + AsciiString[I];
  until (AsciiString[I] = '#') or (i = l);
  X := I;
  if CurDIGChar <> '' then
  begin
    try
      CurrAddChar := CHR(STRTOINT(CurDIGChar));
    except CurrAddChar := '';
    end;
    Insert(CurrAddChar, RS, lastpos);
    LastPos := LastPos + Length(CurrAddChar);
  end;
until (X >= L) or (I >= L);
Result := RS;
end;

// OpenCOMPort
function OpenCOMPort: Boolean;
var
DeviceName: array[0..80] of Char;
begin
StrPCopy(DeviceName, ComPorts);
ComFile := CreateFile(DeviceName, GENERIC_READ or GENERIC_WRITE, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
if ComFile = INVALID_HANDLE_VALUE then
  Result := False
else
  Result := True;
end;

// SetupCOMPort
function SetupCOMPort: Boolean;
const
RxBufferSize = 256;
TxBufferSize = 256;
var
DCB: TDCB;
CommTimeouts: TCommTimeouts;

begin
Result := True;
if not SetupComm(ComFile, RxBufferSize, TxBufferSize) then
  Result := False;
if not GetCommState(ComFile, DCB) then
  Result := False;
  DCB.BaudRate:=9600;
  DCB.ByteSize:=8;
  DCB.Parity:=noparity;
  DCB.StopBits:=ONESTOPBIT;
  DCB.Flags:=DTR_CONTROL_ENABLE;
if not SetCommState(ComFile, DCB) then
  Result := False;
with CommTimeouts do

begin
  ReadIntervalTimeout         := 400;
  ReadTotalTimeoutMultiplier  := 0;
  ReadTotalTimeoutConstant    := 400;
  WriteTotalTimeoutMultiplier := 0;
  WriteTotalTimeoutConstant   := 400;
end;

if not SetCommTimeouts(ComFile, CommTimeouts) then
  Result := False;
end;

// продолжение следует...


Алекс_ТК   (2007-05-03 13:22:00) [37]

//форма
object Form1: TForm1
 Left = 323
 Top = 183
 BiDiMode = bdLeftToRight
 BorderStyle = bsSingle
 Caption = 'Программа тестирования CashCode-SM'
 ClientHeight = 415
 ClientWidth = 702
 Color = clMedGray
 Font.Charset = DEFAULT_CHARSET
 Font.Color = clWindowText
 Font.Height = -11
 Font.Name = 'MS Sans Serif'
 Font.Style = []
 OldCreateOrder = False
 ParentBiDiMode = False
 Position = poDefault
 Visible = True
 OnActivate = FormActivate
 PixelsPerInch = 96
 TextHeight = 13
 object Label1: TLabel
   Left = 96
   Top = 16
   Width = 79
   Height = 13
   Caption = '№ серийный:'
   Font.Charset = DEFAULT_CHARSET
   Font.Color = clWindowText
   Font.Height = -11
   Font.Name = 'MS Sans Serif'
   Font.Style = [fsBold]
   ParentFont = False
 end
 object Label3: TLabel
   Left = 8
   Top = 16
   Width = 62
   Height = 13
   Caption = '№ партии:'
   Font.Charset = DEFAULT_CHARSET
   Font.Color = clWindowText
   Font.Height = -11
   Font.Name = 'MS Sans Serif'
   Font.Style = [fsBold]
   ParentFont = False
 end
 object Label2: TLabel
   Left = 192
   Top = 16
   Width = 123
   Height = 13
   Caption = 'Достоинство купюр:'
   Font.Charset = DEFAULT_CHARSET
   Font.Color = clWindowText
   Font.Height = -11
   Font.Name = 'MS Sans Serif'
   Font.Style = [fsBold]
   ParentFont = False
 end
 object Label4: TLabel
   Left = 512
   Top = 224
   Width = 177
   Height = 49
   Alignment = taRightJustify
   AutoSize = False
   BiDiMode = bdLeftToRight
   Caption = '0.00'
   Font.Charset = RUSSIAN_CHARSET
   Font.Color = clWindowText
   Font.Height = -48
   Font.Name = 'Times New Roman'
   Font.Style = [fsBold]
   ParentBiDiMode = False
   ParentFont = False
   Layout = tlCenter
 end
 object Label5: TLabel
   Left = 585
   Top = 288
   Width = 105
   Height = 49
   Alignment = taRightJustify
   AutoSize = False
   Caption = '0'
   Font.Charset = RUSSIAN_CHARSET
   Font.Color = clWindowText
   Font.Height = -48
   Font.Name = 'Times New Roman'
   Font.Style = [fsBold]
   ParentFont = False
   Layout = tlCenter
 end
 object Label6: TLabel
   Left = 376
   Top = 227
   Width = 121
   Height = 46
   Alignment = taRightJustify
   AutoSize = False
   BiDiMode = bdLeftToRight
   Caption = 'Сумма:'
   Font.Charset = RUSSIAN_CHARSET
   Font.Color = clWindowText
   Font.Height = -32
   Font.Name = 'Times New Roman'
   Font.Style = [fsBold]
   ParentBiDiMode = False
   ParentFont = False
   Layout = tlCenter
 end
 object Label7: TLabel
   Left = 218
   Top = 296
   Width = 281
   Height = 41
   Alignment = taRightJustify
   AutoSize = False
   BiDiMode = bdLeftToRight
   Caption = 'Количество купюр:'
   Font.Charset = RUSSIAN_CHARSET
   Font.Color = clWindowText
   Font.Height = -32
   Font.Name = 'Times New Roman'
   Font.Style = [fsBold]
   ParentBiDiMode = False
   ParentFont = False
   Layout = tlCenter
 end
 object Label8: TLabel
   Left = 586
   Top = 351
   Width = 105
   Height = 50
   Alignment = taRightJustify
   AutoSize = False
   Caption = '0'
   Font.Charset = RUSSIAN_CHARSET
   Font.Color = clWindowText
   Font.Height = -48
   Font.Name = 'Times New Roman'
   Font.Style = [fsBold]
   ParentFont = False
   Layout = tlCenter
 end
 object Label9: TLabel
   Left = 221
   Top = 356
   Width = 281
   Height = 45
   Alignment = taRightJustify
   AutoSize = False
   BiDiMode = bdLeftToRight
   Caption = 'Номинал купюры:'
   Font.Charset = RUSSIAN_CHARSET
   Font.Color = clWindowText
   Font.Height = -32
   Font.Name = 'Times New Roman'
   Font.Style = [fsBold]
   ParentBiDiMode = False
   ParentFont = False
   Layout = tlCenter
 end
 object Label10: TLabel
   Left = 376
   Top = 16
   Width = 143
   Height = 13
   Caption = 'Трассировка запросов:'
   Font.Charset = DEFAULT_CHARSET
   Font.Color = clWindowText
   Font.Height = -11
   Font.Name = 'MS Sans Serif'
   Font.Style = [fsBold]
   ParentFont = False
 end
 object Button3: TButton
   Left = 192
   Top = 64
   Width = 177
   Height = 25
   Caption = 'Принимаемые купюры'
   TabOrder = 0
   OnClick = Button3Click
 end
 object Button4: TButton
   Left = 8
   Top = 128
   Width = 177
   Height = 25
   Caption = 'Получить статус'
   TabOrder = 1
   OnClick = Button4Click
 end
 object Button5: TButton
   Left = 192
   Top = 160
   Width = 177
   Height = 25
   Caption = 'Выключение'
   TabOrder = 2
   OnClick = Button5Click
 end
 object Button6: TButton
   Left = 192
   Top = 96
   Width = 177
   Height = 25
   Caption = 'Старт POLL'
   TabOrder = 3
   OnClick = Button6Click
 end
 object Memo1: TMemo
   Left = 376
   Top = 32
   Width = 313
   Height = 185
   ScrollBars = ssVertical
   TabOrder = 4
 end
 object Button7: TButton
   Left = 192
   Top = 128
   Width = 177
   Height = 25
   Caption = 'Стоп POLL'
   TabOrder = 5
   OnClick = Button7Click
 end
 object Button8: TButton
   Left = 8
   Top = 96
   Width = 177
   Height = 25
   Caption = 'Перезагрузка'
   TabOrder = 6
   OnClick = Button8Click
 end
 object Button9: TButton
   Left = 8
   Top = 64
   Width = 177
   Height = 25
   Caption = 'Инициализация'
   TabOrder = 7
   OnClick = Button9Click
 end
 object Edit6: TEdit
   Left = 8
   Top = 32
   Width = 81
   Height = 21
   BevelOuter = bvNone
   BiDiMode = bdLeftToRight
   Color = clScrollBar
   Font.Charset = DEFAULT_CHARSET
   Font.Color = clWindowFrame
   Font.Height = -11
   Font.Name = 'MS Sans Serif'
   Font.Pitch = fpFixed
   Font.Style = [fsBold]
   ParentBiDiMode = False
   ParentFont = False
   TabOrder = 9
 end
 object Edit7: TEdit
   Left = 96
   Top = 32
   Width = 89
   Height = 21
   BevelOuter = bvSpace
   BiDiMode = bdLeftToRight
   Color = clScrollBar
   Ctl3D = True
   Font.Charset = DEFAULT_CHARSET
   Font.Color = clWindowText
   Font.Height = -11
   Font.Name = 'MS Sans Serif'
   Font.Style = [fsBold]
   ParentBiDiMode = False
   ParentCtl3D = False
   ParentFont = False
   TabOrder = 8
 end
 object Button10: TButton
   Left = 8
   Top = 160
   Width = 177
   Height = 25
   Caption = 'Режим ожидания купюры'
   TabOrder = 10
   OnClick = Button10Click
 end
 object Edit8: TEdit
   Left = 192
   Top = 32
   Width = 177
   Height = 21
   BiDiMode = bdLeftToRight
   CharCase = ecLowerCase
   Color = clScrollBar
   Ctl3D = True
   Font.Charset = DEFAULT_CHARSET
   Font.Color = clWindowText
   Font.Height = -11
   Font.Name = 'MS Sans Serif'
   Font.Style = [fsBold]
   ParentBiDiMode = False
   ParentCtl3D = False
   ParentFont = False
   TabOrder = 11
 end
 object ComboBox1: TComboBox
   Left = 8
   Top = 192
   Width = 177
   Height = 21
   Style = csDropDownList
   ItemHeight = 13
   ItemIndex = 0
   TabOrder = 12
   Text = 'Com1:'
   OnChange = ComboBox1Change
   Items.Strings = (
     'Com1:'
     'Com2:'
     'Com3:'
     'Com4:'
     'Com5:'
     'Com6:'
     'Com7:')
 end
end


Алекс_ТК   (2007-05-03 13:21:00) [38]

//Профи! Не смейтесь, написал как смог...//
program CashCode_SM1;

uses
 Forms,
 Unit1 in '..\Test_CachCode\Unit1.pas' {Form1},
 Unit2 in '..\Test_CachCode\Unit2.pas';

{$R *.res}

begin
 Application.Initialize;
 Application.CreateForm(TForm1, Form1);
 Application.Run;
end.


Stimo   (2007-04-30 14:35:00) [39]

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


AsTroT   (2007-04-27 16:09:00) [40]

Скинь и мне плиззз astrot1988 [at] gmail.com


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

Наверх

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