Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 631 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado (editado)

Ola a todos, ainda não encontrei nenhuma informação sobre o uso do SAT no Linux, por isso vou iniciar esse tópico.

meus testes estão sendo feitos no seguinte ambiente:

Linux Mint 17.3 32bits
Lazarus v1.6
FPC 3.0
Acbr mais recente
SAT: Linker Elgin

A minha primeira tentativa foi usar o Exemplo do acbr, eu modifiquei a entrada do exemplo para buscar as libs:

 

 OpenDialog1.Filter := 'Arquivo LIB ou DLL|*.dll;*.so';

e agora estou tentando utilizar a libsatprotocolELGIN32bits.so fornecida pelo fabricante, ao clicar no botão Inicializar fui depurando linha a linha e encontrei um problema, na procedure TACBrSATDinamico_cdecl.LoadDLLFunctions; ao verificar se o primeiro método "AssociarAssinatura" existe na LIB já está obtendo erro, está sendo usada a função FunctionDetect da ACBRUtils:

function FunctionDetect (LibName, FuncName: String; var LibPointer: Pointer;
   var LibHandle: THandle ): boolean;

e o erro está na linha

  LibHandle := dynlibs.LoadLibrary(LibName) ;

está retornando ZERO como se o método não existisse,
para ter certeza eu executei o comando 

readelf --dyn-syms libsatprotocolELGIN32bits.so

e encontrei o método, o que pode estar errado?
 

$ readelf --dyn-syms libsatprotocolELGIN32bits.so

Tabela de símbolo '.dynsym' contém 123 entradas:
   Número: Tamanho do Valor do Tipo de Vínculo Nome Vis Ndx
     0: 00000000     0 NOTYPE  LOCAL  DEFAULT  UND
     1: 00000000     0 FUNC    GLOBAL DEFAULT  UND cfmakeraw@GLIBC_2.0 (2)
     2: 00000000     0 FUNC    GLOBAL DEFAULT  UND strstr@GLIBC_2.0 (2)
     3: 00000000     0 FUNC    GLOBAL DEFAULT  UND read@GLIBC_2.0 (2)
     4: 00000000     0 NOTYPE  WEAK   DEFAULT  UND _ITM_deregisterTMCloneTab
     5: 00000000     0 FUNC    GLOBAL DEFAULT  UND printf@GLIBC_2.0 (2)
     6: 00000000     0 FUNC    GLOBAL DEFAULT  UND tcflush@GLIBC_2.0 (2)
     7: 00000000     0 FUNC    GLOBAL DEFAULT  UND memcpy@GLIBC_2.0 (2)
     8: 00000000     0 FUNC    GLOBAL DEFAULT  UND fgets@GLIBC_2.0 (2)
     9: 00000000     0 FUNC    GLOBAL DEFAULT  UND fclose@GLIBC_2.1 (3)
    10: 00000000     0 FUNC    GLOBAL DEFAULT  UND time@GLIBC_2.0 (2)
    11: 00000000     0 FUNC    GLOBAL DEFAULT  UND cfsetospeed@GLIBC_2.0 (2)
    12: 00000000     0 FUNC    GLOBAL DEFAULT  UND uncompress
    13: 00000000     0 FUNC    GLOBAL DEFAULT  UND gettimeofday@GLIBC_2.0 (2)
    14: 00000000     0 FUNC    GLOBAL DEFAULT  UND select@GLIBC_2.0 (2)
    15: 00000000     0 FUNC    GLOBAL DEFAULT  UND popen@GLIBC_2.1 (3)
    16: 00000000     0 FUNC    GLOBAL DEFAULT  UND __stack_chk_fail@GLIBC_2.4 (4)
    17: 00000000     0 FUNC    WEAK   DEFAULT  UND __cxa_finalize@GLIBC_2.1.3 (5)
    18: 00000000     0 FUNC    GLOBAL DEFAULT  UND perror@GLIBC_2.0 (2)
    19: 00000000     0 FUNC    GLOBAL DEFAULT  UND fwrite@GLIBC_2.0 (2)
    20: 00000000     0 FUNC    GLOBAL DEFAULT  UND usleep@GLIBC_2.0 (2)
    21: 00000000     0 FUNC    GLOBAL DEFAULT  UND strcat@GLIBC_2.0 (2)
    22: 00000000     0 FUNC    GLOBAL DEFAULT  UND fread@GLIBC_2.0 (2)
    23: 00000000     0 FUNC    GLOBAL DEFAULT  UND strcpy@GLIBC_2.0 (2)
    24: 00000000     0 FUNC    GLOBAL DEFAULT  UND tcsetattr@GLIBC_2.0 (2)
    25: 00000000     0 FUNC    GLOBAL DEFAULT  UND strerror@GLIBC_2.0 (2)
    26: 00000000     0 NOTYPE  WEAK   DEFAULT  UND __gmon_start__
    27: 00000000     0 FUNC    GLOBAL DEFAULT  UND open@GLIBC_2.0 (2)
    28: 00000000     0 FUNC    GLOBAL DEFAULT  UND pclose@GLIBC_2.1 (3)
    29: 00000000     0 FUNC    GLOBAL DEFAULT  UND localtime@GLIBC_2.0 (2)
    30: 00000000     0 FUNC    GLOBAL DEFAULT  UND strchr@GLIBC_2.0 (2)
    31: 00000000     0 FUNC    GLOBAL DEFAULT  UND strlen@GLIBC_2.0 (2)
    32: 00000000     0 FUNC    GLOBAL DEFAULT  UND fprintf@GLIBC_2.0 (2)
    33: 00000000     0 FUNC    GLOBAL DEFAULT  UND write@GLIBC_2.0 (2)
    34: 00000000     0 FUNC    GLOBAL DEFAULT  UND cfsetispeed@GLIBC_2.0 (2)
    35: 00000000     0 FUNC    GLOBAL DEFAULT  UND strcasecmp@GLIBC_2.0 (2)
    36: 00000000     0 FUNC    GLOBAL DEFAULT  UND fcntl@GLIBC_2.0 (2)
    37: 00000000     0 FUNC    GLOBAL DEFAULT  UND __isoc99_sscanf@GLIBC_2.7 (6)
    38: 00000000     0 FUNC    GLOBAL DEFAULT  UND fopen@GLIBC_2.1 (3)
    39: 00000000     0 FUNC    GLOBAL DEFAULT  UND memset@GLIBC_2.0 (2)
    40: 00000000     0 FUNC    GLOBAL DEFAULT  UND __errno_location@GLIBC_2.0 (2)
    41: 00000000     0 FUNC    GLOBAL DEFAULT  UND strncpy@GLIBC_2.0 (2)
    42: 00000000     0 FUNC    GLOBAL DEFAULT  UND strncasecmp@GLIBC_2.0 (2)
    43: 00000000     0 FUNC    GLOBAL DEFAULT  UND rand@GLIBC_2.0 (2)
    44: 00000000     0 FUNC    GLOBAL DEFAULT  UND compress2
    45: 00000000     0 NOTYPE  WEAK   DEFAULT  UND _Jv_RegisterClasses
    46: 00000000     0 FUNC    GLOBAL DEFAULT  UND sprintf@GLIBC_2.0 (2)
    47: 00000000     0 FUNC    GLOBAL DEFAULT  UND atoi@GLIBC_2.0 (2)
    48: 00000000     0 NOTYPE  WEAK   DEFAULT  UND _ITM_registerTMCloneTable
    49: 00000000     0 FUNC    GLOBAL DEFAULT  UND tcgetattr@GLIBC_2.0 (2)
    50: 00000000     0 FUNC    GLOBAL DEFAULT  UND close@GLIBC_2.0 (2)
    51: 000058d3   754 FUNC    GLOBAL DEFAULT   11 TrocarCodigoDeAtivacao
    52: 00001f2c   108 FUNC    GLOBAL DEFAULT   11 Descompacta
    53: 00a8d680 0x83000 OBJECT  GLOBAL DEFAULT   23 BufferCMD
    54: 0000485c   716 FUNC    GLOBAL DEFAULT   11 ConfigurarInterfaceDeRede
    55: 00001f98   384 FUNC    GLOBAL DEFAULT   11 EnviaComandoBinario
    56: 00006321   187 FUNC    GLOBAL DEFAULT   11 read_serial_block
    57: 00002ccf   673 FUNC    GLOBAL DEFAULT   11 ConsultarSAT
    58: 0000a148     4 OBJECT  GLOBAL DEFAULT   23 sequence
    59: 00002390   177 FUNC    GLOBAL DEFAULT   11 AbreSerialSAT
    60: 0000325c   743 FUNC    GLOBAL DEFAULT   11 ComunicarCertificadoICPBR
    61: 00005d5a    40 FUNC    GLOBAL DEFAULT   11 close_host_serial
    62: 000063dc   687 FUNC    GLOBAL DEFAULT   11 decode_command_from_host
    63: 0000a140     1 OBJECT  GLOBAL DEFAULT   23 bLog
    64: 00006079    54 FUNC    GLOBAL DEFAULT   11 finish_host_side
    65: 00005d18    66 FUNC    GLOBAL DEFAULT   11 init_host_serial
    66: 0000a14c     1 OBJECT  GLOBAL DEFAULT   23 bPortOK
    67: 00f93be0     4 OBJECT  GLOBAL DEFAULT   23 fd_host
    68: 00f106a0 0x83000 OBJECT  GLOBAL DEFAULT   23 BufferTxSAT
    69: 00002118   211 FUNC    GLOBAL DEFAULT   11 GetTimeStamp
    70: 000021eb   199 FUNC    GLOBAL DEFAULT   11 randInt
    71: 00001ea6   134 FUNC    GLOBAL DEFAULT   11 IniciaCompactacao
    72: 00003d43   754 FUNC    GLOBAL DEFAULT   11 CancelarUltimaVenda
    73: 00006d36  1345 FUNC    GLOBAL DEFAULT   11 getUdevPath
    74: 00007294     0 FUNC    GLOBAL DEFAULT   12 _fini
    75: 00005d82   389 FUNC    GLOBAL DEFAULT   11 recv_from_serial
    76: 000060af   186 FUNC    GLOBAL DEFAULT   11 SendData
    77: 00001d05   417 FUNC    GLOBAL DEFAULT   11 DiscoveryPortCOM
    78: 00002373    29 FUNC    GLOBAL DEFAULT   11 GeraNumeroSessao
    79: 00001560     0 FUNC    GLOBAL DEFAULT    9 _init
    80: 00006169   271 FUNC    GLOBAL DEFAULT   11 ReceiveBUS
    81: 00003543  2048 FUNC    GLOBAL DEFAULT   11 EnviarDadosVenda
    82: 0000537f   682 FUNC    GLOBAL DEFAULT   11 BloquearSAT
    83: 00001afb   522 FUNC    GLOBAL DEFAULT   11 DLLloadConfig
    84: 00a8d600   100 OBJECT  GLOBAL DEFAULT   23 portCOMM
    85: 00f939c4     8 OBJECT  GLOBAL DEFAULT   23 tid
    86: 0088d600 0x200000 OBJECT  GLOBAL DEFAULT   23 BufferOut
    87: 00d10680 0x200006 OBJECT  GLOBAL DEFAULT   23 comm
    88: 0048d5c0     4 OBJECT  GLOBAL DEFAULT   23 pCommCfg
    89: 00005f48   223 FUNC    GLOBAL DEFAULT   11 sendSOH
    90: 000022b2    27 FUNC    GLOBAL DEFAULT   11 ConfiguraTimeout
    91: 00005f07    65 FUNC    GLOBAL DEFAULT   11 sendSYN
    92: 00004e28   685 FUNC    GLOBAL DEFAULT   11 AtualizarSoftwareSAT
    93: 0000235d    22 FUNC    GLOBAL DEFAULT   11 VersaoLib
    94: 0000668b   359 FUNC    GLOBAL DEFAULT   11 encode_command_to_host
    95: 000050d5   682 FUNC    GLOBAL DEFAULT   11 ExtrairLogs
    96: 0048d5e0 0x400015 OBJECT  GLOBAL DEFAULT   23 protocol
    97: 000067f2  1095 FUNC    GLOBAL DEFAULT   11 decode_command_from_ecf
    98: 00006027    82 FUNC    GLOBAL DEFAULT   11 sendENQ
    99: 0000248f   435 FUNC    GLOBAL DEFAULT   11 EnviaComando
   100: 000022cd   144 FUNC    GLOBAL DEFAULT   11 ArquivoLog
   101: 00f93c00 0x400015 OBJECT  GLOBAL DEFAULT   23 proto
   102: 0000245e    49 FUNC    GLOBAL DEFAULT   11 CodigoErro
   103: 00002b4f   384 FUNC    GLOBAL DEFAULT   11 PreConsultarSAT
   104: 00005629   682 FUNC    GLOBAL DEFAULT   11 DesbloquearSAT
   105: 0020a5c0 0x200000 OBJECT  GLOBAL DEFAULT   23 BufferDesc
   106: 00002f70   748 FUNC    GLOBAL DEFAULT   11 AtivarSAT
   107: 000045ab   689 FUNC    GLOBAL DEFAULT   11 ConsultarNumeroSessao
   108: 00004301   682 FUNC    GLOBAL DEFAULT   11 ConsultarStatusOperaciona
   109: 0000a11c     0 NOTYPE  GLOBAL DEFAULT   22 _edata
   110: 00f939e0   500 OBJECT  GLOBAL DEFAULT   23 FileLog
   111: 00004b28   768 FUNC    GLOBAL DEFAULT   11 AssociarAssinatura
   112: 00006278    51 FUNC    GLOBAL DEFAULT   11 PurgeCOMSAT
   113: 0000a144     4 OBJECT  GLOBAL DEFAULT   23 arqlog
   114: 00b10680 0x200000 OBJECT  GLOBAL DEFAULT   23 BufferRX
   115: 00002441    29 FUNC    GLOBAL DEFAULT   11 CloseSerial
   116: 000062ab   118 FUNC    GLOBAL DEFAULT   11 ReadAll
   117: 01393c18     0 NOTYPE  GLOBAL DEFAULT   23 _end
   118: 0040a5c0 0x83000 OBJECT  GLOBAL DEFAULT   23 straux
   119: 00006c39   253 FUNC    GLOBAL DEFAULT   11 encode_command_to_ecf
   120: 00f936a0   804 OBJECT  GLOBAL DEFAULT   23 pCommError
   121: 0000a11c     0 NOTYPE  GLOBAL DEFAULT   23 __bss_start
   122: 00004035   716 FUNC    GLOBAL DEFAULT   11 TesteFimAFim

 

as dependências também parecem corretas:

$ ldd -v libsatprotocolELGIN32bits.so
    linux-gate.so.1 =>  (0xb7742000)
    libz.so.1 => /lib/i386-linux-gnu/libz.so.1 (0xb6371000)
    libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb61bb000)
    /lib/ld-linux.so.2 (0x8005d000)

    Version information:
    ./libsatprotocolELGIN32bits.so:
        libc.so.6 (GLIBC_2.7) => /lib/i386-linux-gnu/libc.so.6
        libc.so.6 (GLIBC_2.1.3) => /lib/i386-linux-gnu/libc.so.6
        libc.so.6 (GLIBC_2.4) => /lib/i386-linux-gnu/libc.so.6
        libc.so.6 (GLIBC_2.1) => /lib/i386-linux-gnu/libc.so.6
        libc.so.6 (GLIBC_2.0) => /lib/i386-linux-gnu/libc.so.6
    /lib/i386-linux-gnu/libz.so.1:
        libc.so.6 (GLIBC_2.1) => /lib/i386-linux-gnu/libc.so.6
        libc.so.6 (GLIBC_2.1.3) => /lib/i386-linux-gnu/libc.so.6
        libc.so.6 (GLIBC_2.4) => /lib/i386-linux-gnu/libc.so.6
        libc.so.6 (GLIBC_2.0) => /lib/i386-linux-gnu/libc.so.6
        libc.so.6 (GLIBC_2.3.4) => /lib/i386-linux-gnu/libc.so.6
    /lib/i386-linux-gnu/libc.so.6:
        ld-linux.so.2 (GLIBC_2.3) => /lib/ld-linux.so.2
        ld-linux.so.2 (GLIBC_PRIVATE) => /lib/ld-linux.so.2
        ld-linux.so.2 (GLIBC_2.1) => /lib/ld-linux.so.2

 

Obrigado a todos que contribuírem.

 

Editado por Rodolfo Patané
  • 2 semanas depois ...
Postado

Daniel, consegui fazer o satteste do acbr inicializar, era permissão do Linux, depurando não funcionou, mas executando direto como root acessa os métodos da lib, mesmo assim ainda estou verificando detalhes com o fabricante sobre o driver Linux para o equipamento, ja que reconhece o disposto na usb mas não cria a porta virtual, vocês já testaram algum fabricante com sucesso no Linux? 

 

Outra questão eh que estou usando o Linux 32 com Lazarus, estou querendo usar o acbr em um equipamento embarcado com processador arm, o lazarus até esta disponível para arm, eu instalei e consegui compilar um hello world nativo arm, porém o acbr não instala, já no pacote synapse ele não compila o pacote , alguém já testou assim?

 

obrigado 

  • Fundadores
Postado

Realmente é um ambiente bastante incomum....

Nunca testei o Lazarus ou o ACBr em "arm"...

Creio que serão necessários alguns IFDEFs nos fontes... mas só compilando e vendo os erros, para descobrir... Se você postar as msgs de erro de compilação, posso tentar ajudar...

Por favor nos mantenha informado do seu progresso...

 

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Postado (editado)

Ok vou tentar e vou descrevendo os processos. 

 

Sobre lazarus,  na teoria eu poderia usar um ambiente 32 e compilar para arm, mas como o lazarus tem versão arm e o fpc tb acho que seria mais vantagem desenvolver direto nele, mesmo pq os erros são os mesmos no ambiente arm e no 32 com fpc configurado para compilar para arm.

Editado por Rodolfo Patané
Info sobre lazarus
  • 1 mês depois ...
  • Fabricantes
Postado

Bom dia,

 

Apenas um complemento com relação a uma experiência que tivemos com ARM para o SAT.


Nós (Tanca) compilamos a LIB do SAT para ARM para os clientes que necessitavam operar sistemas embarcados.
Para isso o cliente enviou uma VM com o "Ambiente de Desenvolvimento" ARM especifico que ele utilizava, pois existem muitas variações.
Feito isso nosso desenvolvedor acrescentou o Fonte da LIB nesta VM e compilou especificamente para o processador utilizado.
O processo não é complexo e o SAT está funcionando normalmente.


Acredito que para o ACBr possa ser necessário algo similar ao descrito acima.

 

Att

Cristiano Abbud

  • Curtir 1
  • 2 semanas depois ...
Postado
Em 09/21/2016 at 11:45, Cristiano Abbud disse:

Bom dia,

 

Apenas um complemento com relação a uma experiência que tivemos com ARM para o SAT.


Nós (Tanca) compilamos a LIB do SAT para ARM para os clientes que necessitavam operar sistemas embarcados.
Para isso o cliente enviou uma VM com o "Ambiente de Desenvolvimento" ARM especifico que ele utilizava, pois existem muitas variações.
Feito isso nosso desenvolvedor acrescentou o Fonte da LIB nesta VM e compilou especificamente para o processador utilizado.
O processo não é complexo e o SAT está funcionando normalmente.


Acredito que para o ACBr possa ser necessário algo similar ao descrito acima.

 

Att

Cristiano Abbud

Bom dia, obrigado Cristiano, meu primeiro objetivo eh trazer o acbr para o mundo dos embarcados, estou fazendo exatamente assim, criei o ambiente de desenvolvimento dentro do embarcado, onde pretendo compilar um projeto com o componente acbrsat (inicialmente).

A segunda etapa eh encontrar fabricantes que disponibilizem a DLL para esse ambiente, fico muito feliz se a Tanca já estiver nesse caminho,  muitos fabricantes já tem a DLL para rodar no Android então acho que não haverá dificuldades nisso.

No entanto o que tenho visto como possível impecilho é a questão do driver, elgin e dimep por exemplo emulam uma porta serial, porém só existe driver para Windows, nem no Linux 32 consegui fazer com que o SO reconhecesse o dispositivo como porta serial.

Se você pude nos ajudar com mais informações, ou quem sabe possa passar esse link para alguns dos seu clientes que estão com os mesmos objetivos.

Abraços

  • Curtir 1
  • Fabricantes
Postado (editado)

Boa tarde Rodolfo,

 

O seu embarcado deverá rodar Linux e ter uma interface USB Host, pois o SAT é USB Device.
Há bastante opção de microprocessadores embarcados com esta opção.

Quando você já tiver definido seu projeto nós conseguimos compilar uma LIB pra você, só iremos necessitar de uma VM com o o seu ambiente de desenvolvimento embarcado.

Com relação a Linux, o SAT tem total compatibilidade, tanto com 32 quanto com 64Bits.

 

Att
Cristiano Abbud

 

Vamos criar um novo tópico para tratar de SAT <=> Embarcados.

 

Editado por Cristiano Abbud
  • Curtir 1
  • 6 anos depois...
Postado

Bom dia, @Rodolfo Patané

Conseguiu usar o sat em modo debug no linux? 
Estou conseguindo rodar o programa e se comunicando com o SAT apenas com sudo, se for debug não acha de forma alguma. 
"Resposta:SAT Erro[-02000]Lnx SAT nao encontrado Dev[/dev/ttyACM0] L[2254] F[Communicate]" 
Estou usando um SAT Epson A10. agora se abrir o progrma pelo terminal com sudo ./nome funciona que é uma beleza mais não consigo debugar, estou com um problema de PIS/CONFINS que preciso do debug. 

Obrigada, 

Melissa

  • Este tópico foi criado há 631 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...