2015-05-07 5 views
2

Я хочу установить логотип на печатной бумаге в verifone vx520 следует ли изменить значение < * PTRLGO>? и как я могу изменить < * PTRLGO>? и как я могу загрузить этот логотип на принтер? как я могу назвать логотип в программе? Я написал свою программу с помощью c. вот мой код, но это неправильно. Я использовал команду GP для печати логотипа.как установить логотип на verifone vx520 внутренний принтер

#include <stdlib.h> 
#include <stdio.h> 
#include <string.h> 
#include <svc.h> 

char myLOGO[]="testlogo.bmp"; 
char buf[200]=""; 
void main() 
{ 
    int i,t; 
    char logo[]="*PTRLGO"; 
    char buf[500] = ""; 
    int prt_handle,prt_com; 
    prt_handle = open(DEV_CONSOLE, 0); 
    prt_com = open(DEV_COM4, 0); 
    put_env(logo,myLOGO,1);  
    sprintf(buf, "%cGP1;",27); 
    write(prt_com, buf, strlen(buf)); 
    SVC_WAIT (100); 

    close(prt_com);  
} 

ответ

3

Вам не нужно возиться с *PTRLGO. Вместо этого используйте «Инструмент шрифта» для создания файла логотипа из растрового изображения. Вот как это делается:

  1. Открыть инструмент и перейти в Файл -> Импорт.
  2. Перейдите к вашему растровому изображению MONOCHROME (у 520 только монохромный экран, поэтому это ограничение не должно вызывать беспокойства).
  3. Выберите «Сохранить как» и измените тип на «Файлы логотипа ITP (* .lgo)».
  4. Для «Выбрать принтер» выберите «Verix 37xx» и нажмите «ОК».
  5. Обязательно забудьте загрузить новый файл логотипа на терминал.

ПРИМЕЧАНИЕ: # 37: 3740, 3750, 3730/510, 570 и 520 все используют патч 37xx, насколько я знаю.

Теперь у вас есть файл с логотипом, загруженный в память TERMINAL'S, но у ПРИНТЕРА терминала есть своя память, и вы должны загрузить его там, прежде чем сможете сообщить принтеру о его фактической печати. Вот код, который должен работать:

void PrintLogoToPaper() 
{ 
    //open a printer handle and a file handle 
    //Assume we have already acquired the printer from DevMan if you are using VMAC 
    int hPrinter = hPrinter = open(DEV_COM4,0); 
    int h_font_file = open("logo.lgo", O_RDONLY); 

    //send the logo to the printer's memory 
    p3700_dnld_graphic_file (hPrinter, h_font_file); 


    //Now that we have loaded the printer logo to the printer's memory, 
    // we can tell the printer to actually print it out 
    p3700_print_graphic(hPrinter, 0, 50); 

    //remember to close your file and handles 
    close(h_font_file); 
    close(hPrinter); 

    //Not sure why, but if you take this print message out, then the logo 
    //doesn't always print. Please update if you know a better solution.! 
    clrscr(); 
    printf("Printing"); 
} 

Если вы все сделали правильно, вы должны быть в состоянии напечатать логотип из:

StackOverflow Logo printed on Vx520

+0

как загрузить логотип Терминала (с помощью которого команда) и как определить p3700_dnld_graphic_file и p3700_print_graphic функции? –

+0

Эти функции определены в файле printer.h, который является частью библиотек ACT. '#include printer.h'. Что касается загрузки файла логотипа на терминал - просто рассматривайте его как любой другой файл данных. (Если вам нужна дополнительная помощь в этом, то, пожалуйста, задайте его как новый вопрос, так как это действительно совершенно другая тема). – David

+0

Я включил printer.h, но в компиляции произошла ошибка неопределенного символа p3700_print_graphic (ссылка от test.o) и undefined symbol p3700_dnld_graphic_file (ссылка от test.o), как я могу исправить эту ошибку? –