Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.04.15;
Скачать: CL | DM;

Вниз

Вызов функции из dll   Найти похожие ветки 

 
Hermit ©   (2002-01-19 16:33) [0]

Имеется библиотека реализующая режим фискального принтера для ЭККА Mini500.02 или Mini500.03. Одной из функций этой библиотеки есть функция Command:
Назначение: выполнение команд кассового аппарата, не передающих данные на компьютер.
Формат: Command(Ncom: integer; Vcom: integer; Komanda: pchar): boolean;
Где тип pchar – указатель на строку с нулевым символом в конце.

Параметры:Ncom - номер COM-порта (1 или 2);
Vcom - скорость для ЭККА (4800, 9600, 19200);
Komanda - команда ЭККА:

Вызываю комманду след. образом:
{$APPTYPE CONSOLE}
function Command(ncom: integer; vcom: integer; komanda: pchar): boolean; stdcall; external "Fisc500_03.dll";
begin
if not command(1, 4800""Карандаш"1*007P") then
Writeln("ECCA not respond.");
end.

И ничего на принтер не выводится :( Хотя, в демо. программе к dll (без исходников), если набрать такую же строку ("Карандаш"1*007P) все прекрасно работает. В чем может быть проблема?


 
paul_shmakov ©   (2002-01-20 02:13) [1]

а программа выдает "ECCA not respond."?
возможно у функции Command другое соглашение вызова - попробуйте убрать stdcall.

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


 
Repeat Until   (2002-01-20 14:10) [2]

У большинства матричных принтеров для ККМ ставится скорость 9600. Скорее всего это отностится и ФР, т.к. их отличие от простых принтеров, скажем EPSON T300 заключается в основном в подключенной к нему ФП, но никак не в механике и электрике.


 
Hermit ©   (2002-01-21 10:57) [3]

Изменение скорости передачи никаких позитивных результатов не дала. Удивляет то, что в упомянутой мной демо-программе скорость выставляется в диалоговом режиме и комманда работает согласно прилагаемой докумментации :(
Кроме того, видно, что в результате выполнения комманды из моей тестовой программы на COM-порт что-то передается - на дисплее видно какое-то помигивание. Может быть дело в том, что устройство имеет свою кодовую таблицу символов? Тогда понятно, что в демо-программе строка приводится в соответствие этой кодовой таблице, а я этого не делаю.


 
paul_shmakov ©   (2002-01-22 00:58) [4]

кодовая таблица действительно может быть причиной. попробуйте так:

function Command(ncom: integer; vcom: integer; komanda: pchar): boolean; stdcall; external "Fisc500_03.dll";

var
Buffer: array[0..32] of Char;
begin
FillChar(Buffer, SizeOf(Buffer), 0);
StrLCopy(Buffer, ""Карандаш"1*007P", SizeOf(Buffer) - 1);
AnsiToOem(Buffer, Buffer);

if not command(1, 4800, Buffer) then
Writeln("ECCA not respond.");
end.


а убирание stdcall не помогло?



Страницы: 1 вся ветка

Текущий архив: 2002.04.15;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.012 c
6-46460
Diablo
2002-01-31 17:10
2002.04.15
вопрос по UDP


14-46490
VID
2002-03-07 00:12
2002.04.15
ДРОВА


14-46503
Keith
2002-03-02 22:31
2002.04.15
как тут все... того...


1-46311
Алекс555
2002-04-03 12:37
2002.04.15
Друзья, подскажите для чего нужны указатели, на простом примере


1-46374
koks
2002-04-01 10:45
2002.04.15
StringGrid ;((