Exemple #1
0
        public static unsafe void ExecInClientDLL(int nOpc, byte *cStrInput, byte *cStrReturn, int nRetMaxSize)
        {
            string ret = "";
            // ---
            StringPtr strInput  = new StringPtr(cStrInput); // entrada
            StringPtr strReturn = new StringPtr();          // retorno

            try {
                var json = JObject.Parse(strInput.toString());

                var impressora      = json["impressora"].ToString();      // nome da impressora
                var arquivoEtiqueta = json["arquivoEtiqueta"].ToString(); // arquivo a ser interpretado
                var conteudoArquivo = removerComecoArquivo(
                    File.ReadAllText(arquivoEtiqueta)
                    );

                // substitui as macros pelos valores
                JObject campos = (JObject)json["campos"];
                foreach (JProperty j in campos.Properties())
                {
                    var campo = "%" + j.Name + "%";
                    var valor = j.Value.ToString();

                    conteudoArquivo = conteudoArquivo.Replace(campo, valor);
                }

                // se a impressora não foi
                // especificada, ignora a impressão
                if (impressora.Length != 0)
                {
                    var sufixo = DateTime.Now.ToString("_ddMMyyyyHHmmssffffff");

                    IPrinter printer = new Printer();
                    printer.PrintRawStream(
                        impressora,
                        new MemoryStream(Encoding.ASCII.GetBytes(conteudoArquivo)), "EtiquetaZebra" + sufixo
                        );
                }

                // mas retorna uma string
                // com o código ZPL formatado
                ret = conteudoArquivo;
            } catch (Exception e) {
                ret = "#Erro: " + e.Message;
            }

            // cria o buffer
            if (ret.Length > nRetMaxSize)
            {
                strReturn.fromString(ret.Substring(0, nRetMaxSize));
            }
            else
            {
                strReturn.fromString(ret);
            }

            // copia buffer p/ retornar
            strReturn.copyTo(cStrReturn);
        }
Exemple #2
0
        static unsafe void Main(string[] args)
        {
            var cStrInput  = new StringPtr();
            var cStrReturn = new StringPtr();

            cStrInput.fromString(
                @"{
              ""impressora"": ""Generic"",
              ""arquivoEtiqueta"": ""c:\\temp\\etiqueta.prn"",
              ""campos"": {
                ""nf"": ""1234""
              }
            }"
                );

            ProtheusDll.ExecInClientDLL(0, cStrInput.getPtr(), cStrReturn.getPtr(), 20000);

            //Console.WriteLine(cStrReturn.toString());
            //Console.ReadKey();
        }