Форум » [x]Harbour » [?] Datecs Ep-60 (SDK) » Ответить

[?] Datecs Ep-60 (SDK)

Dima: Есть SDK к принтеру http://datecs.bg/get_file.php?soft_id=49FD25D571CAD192F17BFCB200B0034A Возможно ли в Xharbour его заюзать ? Если возможно то с чего начинается родина ? Если можно то на примере вывода простого текста на печать. PS Ни когда еще не юзал какие либо SDK

Ответов - 42, стр: 1 2 3 All

Dima: Pasha Есть дурацкий вопрос. После того как я завершаю программу не нужно ли делать что то типа DllUnload ? Текст программы [pre2] ANNOUNCE RDDSYS Proc main(nport,speed,cfile) if DTX_PRNOPEN(val(nport),val(speed),.t.)==0 if hb_fuse(cfile)#0 do while !hb_feof() DTX_PRNTEXT(hb_freadln()) hb_fskip() enddo hb_fuse() DTX_PRNPAPERFEED(40) DTX_PRNPApERCUT() endif DTX_PRNCLOSE() ferase(cfile) endif return #pragma BEGINDUMP #include "hbapi.h" #define bool char #include "printing.h" HB_FUNC( DTX_PRNOPEN ) { hb_retnl( PrnOpen( hb_parnl(1), hb_parnl(2), hb_parl(3)) ); } HB_FUNC( DTX_PRNCLOSE ) { hb_retnl( PrnClose() ); } HB_FUNC( DTX_PRNPAPERCUT ) { hb_retnl( PrnPaperCut() ); } HB_FUNC( DTX_PRNPAPERFEED ) { hb_retnl( PrnPaperFeed(hb_parnl(1)) ); } HB_FUNC( DTX_PRNTEXT ) { hb_retnl( PrnText(hb_parc(1)) ); } HB_FUNC( DTX_PRNBARCODE ) { hb_retnl( PrnBarcode(hb_parnl(1), hb_parc(2), hb_parclen(2)) ); } #pragma ENDDUMP [/pre2]

Pasha: Нет, в таком режиме линковки dll подгружается сразу, вместе с основной программой, и выгружать ее отдельно не надо

Dima: Pasha Понял , спасибо.


Dima: Dima пишет: implib dtxprint.lib Printing.dll А в MinGw что является аналогом Implib ?

alkresin: Dima пишет: А в MinGw что является аналогом Implib ? http://www.mingw.org/wiki/CreateImportLibraries Если вкратце, то создаем руками текстовый файл ( я буду на примере letocl.dll ) letocl.def: LIBRARY letocl.dll EXPORTS LetoInit LetoExit LetoConnectionNew LetoCloseAll где, начиная с третьей строчки, имена импортируемых функций. А потом запускаем: dlltool -d letocl.def -l libletocl.a

Dima: alkresin пишет: где, начиная с третьей строчки, имена импортируемых функций Понял. Спасибо, а где их взять эти имена ? Нужны все.

alkresin: Ну, например, борландовским impdef: impdef.exe letocl.def letocl.dll

Dima: alkresin Спасибо. Нарыл как с mingw , вот так c:\mingw\bin\ld --output-def=test.def Printing.dll

Dima: Библу собрал а вот со сборкой (Harbour 3.2 + Mingw) засада , хотя нормик собиралось на Xharbour 1.2 + BCC 55 Исходник такой [pre2] Proc main(nport,speed,cfile) if DTX_PRNOPEN(val(nport),val(speed),.t.)==0 if hb_fuse(cfile)#0 do while !hb_feof() DTX_PRNTEXT(hb_freadln()) hb_fskip() enddo hb_fuse() DTX_PRNPAPERFEED(40) DTX_PRNPApERCUT() *dtx_prntext("{=F2}Блаблабла") endif DTX_PRNCLOSE() ferase(cfile) endif return #pragma BEGINDUMP #include "hbapi.h" #define bool char #include "printing.h" HB_FUNC( DTX_PRNOPEN ) { hb_retnl( PrnOpen( hb_parnl(1), hb_parnl(2), hb_parl(3)) ); } HB_FUNC( DTX_PRNCLOSE ) { hb_retnl( PrnClose() ); } HB_FUNC( DTX_PRNPAPERCUT ) { hb_retnl( PrnPaperCut() ); } HB_FUNC( DTX_PRNPAPERFEED ) { hb_retnl( PrnPaperFeed(hb_parnl(1)) ); } HB_FUNC( DTX_PRNTEXT ) { hb_retnl( PrnText(hb_parc(1)) ); } HB_FUNC( DTX_PRNBARCODE ) { hb_retnl( PrnBarcode(hb_parnl(1), hb_parc(2), hb_parclen(2)) ); } #pragma ENDDUMP [/pre2] И вот что вылазит при сборке [pre2] Harbour 3.2.0dev (Rev. 18920) Copyright (c) 1999-2013, http://harbour-project.org/ Compiling 'dtx.prg'... Lines 58, Functions/Procedures 1 Generating C source output to 'obj\dtx.c'... Done. dtx.prg: In function 'HB_FUN_DTX_PRNTEXT': dtx.prg:49:5: warning: passing argument 1 of 'PrnText' discards 'const' qualifier from pointer target type [enabled by d efault] In file included from dtx.prg:22:0: c:/hb32mingw/include/printing.h:269:22: note: expected 'char *' but argument is of type 'const char *' dtx.prg: In function 'HB_FUN_DTX_PRNBARCODE': dtx.prg:56:5: warning: passing argument 2 of 'PrnBarcode' discards 'const' qualifier from pointer target type [enabled b y default] In file included from dtx.prg:22:0: c:/hb32mingw/include/printing.h:408:21: note: expected 'char *' but argument is of type 'const char *' obj/dtx.o:dtx.c:(.text+0x13): undefined reference to `PrnText@4' obj/dtx.o:dtx.c:(.text+0x43): undefined reference to `PrnPaperFeed@4' obj/dtx.o:dtx.c:(.text+0x64): undefined reference to `PrnPaperCut@0' obj/dtx.o:dtx.c:(.text+0x84): undefined reference to `PrnClose@0' obj/dtx.o:dtx.c:(.text+0xe2): undefined reference to `PrnOpen@12' obj/dtx.o:dtx.c:(.text+0x15f): undefined reference to `PrnBarcode@12' C:\MinGW\bin\ld.exe: obj/dtx.o: bad reloc address 0x0 in section `.data' [/pre2]

Dima: Если собирать с Harbour 3.2+ BCC то собирается.........но мне нужно все таки с Mingw Куда копнуть ?

Петр: dlltool -d letocl.def -l libletocl.a -k

Dima: Петр пишет: dlltool -d letocl.def -l libletocl.a -k в сборке это не помогло.......... ошибки те же

Петр: Может эта статья чем-то поможет: http://www.mingw.org/wiki/CreateImportLibraries Я, когда-то, вот так библиотеки импортировал :export pexports %ICU_PATH%/bin/%~n1.dll > %~n1.def dlltool --input-def %~n1.def --dllname %~n1.dll --output-lib lib%~n1.a -k ranlib lib%~n1.a exit /b Правда не знаю: pexports еще развивается или нет, в и-нете, наверное, найти можно..

alkresin: А Dima пишет: obj/dtx.o:dtx.c:(.text+0x13): undefined reference to `PrnText@4' obj/dtx.o:dtx.c:(.text+0x43): undefined reference to `PrnPaperFeed@4' А в def файле у вас функции как описаны, с этими @4 или просто имена, как я вам предлагал ?

Dima: alkresin Просто как имена. Вот кусочек [pre2] LIBRARY Printing.dll EXPORTS BarcodeScan BarcodeType2Text MFAuthByKey MFClose MFHaltCard MFIdent MFInit MFRGetSerial MFRead MFRequestCard MFSelectCard MFValueOperation MFWrite MFWriteValue MSProcessFinancialCard MSReadCard PrnBarcode [/pre2]

alkresin: Попробуйте описать их так, как стоит в undefined reference

Dima: alkresin пишет: Попробуйте описать их так, как стоит в undefined reference Так и сделал в DEF , пересобрал либу. Все заработало. Странно все это. Спасибо !

Dima: Pasha Паш наверное вопрос к тебе. Решили этот принтер расшарить по сетке. Пробная печать из винды идет а из программы не в какую. Это у них SDK такой что не позволяет работать по сетке с этим принтером ? PS Хотя как бы и понятно почему не работает из программы , она (с помощью SDK) пишет в порт а тест винды общается с сетевым принтером.

Pasha: Столько лет уже этой теме, я и подзабыл к чему она. Да и SDK уже недоступен Просто мысль: если этот принтер расшарен как обычный сетевой принтер, может и печатать на него стоит обычными средствами вывода на принтер windows ?

Dima: Pasha SDK они переложили вот сюда http://www.datecs.bg/en/products/56 Закладка SUPPORT. Сам принтер с последовательным интерфейсом и использует свои спец команды для вывода на печать включая форматирование текста , печать штрих кодов и тд и тп. Собственно принтер для печати чеков. За идею спасибо , нужно обмозговать........жаль принтера нет под рукой живого.



полная версия страницы