Bom dia..
eu uso a Bemafi32.dll e funciona perfeitamente sim..
Pelo q pude ver no seu código, faltou executar a função Bematech_FI_AbrePortaSerial() depois de carregar a DLL.
Porta=
Indica a porta serial de comunicação entre a impressora e o computador. Se o valor for igual a "DEFAULT", a DLL buscará a porta onde estiver a impressora, automaticamente. Se estiver sendo usada a impressora fiscal na USB, basta alterar esta chave para a palavra USB (Porta=USB). Para maiores informações sobre a instalalação da porta USB, veja o tópico "Instalando a porta USB para comunicação através da DLL"
Veja o seguinte no arquivo Bemafi32.ini
Status=
Se essa opção estiver com o valor 1, as funções da DLL irão gravar o status da impressora (ACK, ST1 e ST2) no arquivo chamado "STATUS.TXT". O valor default dessa opção é 0, com o status da impressora sendo retornado através da função Bematech_FI_RetornoImpressora.
Retorno=
Se essa opção estiver com o valor 1, as Funções de Informações* da DLL irão gravar o retorno no arquivo chamado "RETORNO.TXT ". O valor default dessa opção é 0, com as informações sendo retornadas através das variáveis passadas como parâmetro nas funções.
StatusFuncao=
Esta chave configura a DLL para retornar o valor –27 nas funções, quando o status da impressora (ACK, ST1, ST2) for diferente de 6,0,0. Com essa configuração a função Bematech_FI_RetornoImpressora poderá ser executada somente quando o retorno for –27. O valor um "1" habilita e o valor zero "0" desabilita essa configuração. O valor default é zero "0".
Sempre lembrando que os arquivos Bemafi32.dll e Bemafi32.ini deverão estar na pasta da sua aplicação ou na pasta c:\windows\system32
Procure estar sempre com a versão mais atualizada da DLL, verificando seguidamente no site da Bematech.
Da uma lida no manual da DLL, vai esclarecer bastante coisa.
Segue anexo um pequeno exemplo que fiz para executar algumas funções da dll
Um abraço