Форум: "Система";
Текущий архив: 2002.04.15;
Скачать: [xml.tar.bz2];
ВнизВызов функции из 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.005 c