Bom, eu faria uma função que me retornasse este caractere, bastando enviá-lo para o pino desejado.
Mais ou menos assim:
char envioCaracter(){
return 0xF;
}
Não tenho como testar aqui, mas acho que é por aí.
Imprimir o caracter nao eh problema... printf("%c", 15) ja resolve, nao to sabendo como direcionar isso pra impressora.
Sera salvar no arquivo LPT1 resolve ?
Como já foi dito:
printf("%c", 15);
e tb
putchar( 15 );
Ambas enviam o caracter 15 (^O) para a saída padrão, se bem me lembro esse é o código para início de condensado, 18 (^R) é o fim de condensado (pode ser trocado, mas você já sabe isso).
Você já deve ter criado o mecanismo de enviar dados a impressora, provavelmente envia para uma variavel antes, então tente:
/*buf é um apontador para char definido em algum lugar e com tamanho suficiente */
/* s é um apontador contendo o texto a ser "condesnsado"*/
/* os dois abaixo podem ser definidos em algum .h */
int inicond = 15,
fimcond = 18;
sprintf(buf, "%c%s%c", inicond, s, fimcond);
Então é só enviar "buf" para o arquivo (ou concatenar a alguma variável que já esteja sendo usada para montar a impressão), a forma de enviar tudo para a impressora dependerá do OS/plataforma utilizada.
Desculpe ter me alongado, sou muito saudosista :) .
Trabalhei em uma empresa onde o pessoal precisava ficar carregando máscaras de impressão e comandos. Normalmente eles tinham um arquivo binário pronto com os códigos ASCII e simplesmente copiavam este arquivo para a LPT correspondente.
se não me engano o comando era print:
print /D:LPT1 c:\nomedoarquivo.txt
o comando copy também rola:
copy c:\nomedoarquivo.txt lpt1:
Infelizmente não tenho uma impressora aqui pra testar.Só um detalhe, se usar copy passe o parâmetro /b (binary)copy /b c:\nomedoarquivo.txt lpt1:
Trabalhei em uma empresa onde o pessoal precisava ficar carregando máscaras de impressão e comandos. Normalmente eles tinham um arquivo binário pronto com os códigos ASCII e simplesmente copiavam este arquivo para a LPT correspondente.
se não me engano o comando era print:
print /D:LPT1 c:\nomedoarquivo.txt
o comando copy também rola:
copy c:\nomedoarquivo.txt lpt1:
Ai basta criar o arquivo com os bytes necessários (no seu caso o caracter 15) usando o programa em C e copiar para a porta.
Agora, se você precisar mandar o código diretamente do programa em C, dá para usar a funcão CreateFile utilizando "LPT1:" como nome do arquivo.
HANDLE hParallel = CreateFile("LPT1", 0, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
Dá uma olhada neste artigo:
http://www.codeguru.com/forum/showthread.php?t=231214
Abraços!
Infelizmente não tenho uma impressora aqui pra testar.
Uso Linux, mas o software vai ser executado em Windows, fiz da seguinte forma:
#include <stdio.h>
#define SETPRINT 15
int main()
{
FILE *p;
const char printoutput[] = "LPT1";
p = fopen(printoutput, "w");
fprintf(p, "%c", SETPRINT);
fclose(p);
return 0;
}
Obrigado pelas dicas.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por