Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 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
1-46376
sammy
2002-04-01 08:09
2002.04.15
com файлы


7-46530
SVF
2002-01-12 15:40
2002.04.15
Иконка в ListBox


14-46488
Yaro
2002-02-19 00:58
2002.04.15
Система уравнений!


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


14-46501
Nazya
2002-03-07 14:29
2002.04.15
Местера помогите с сервисом (нужен исходник)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский