Java + argox os 214-plus

8 respostas
S

Olá Pessoal,

Alguém utiliza JAVA para mandar comandos PPLA para uma ARGOX OS 214-PLUS porta USB e que esteja funcionando?

Gostaria se possível de Exemplos de como implementar isto.

Pois pelo que eu ví a dll “Winppla.dll” não foi construída para ser “consumida” em java ( Infelizmente :pensive:);

Se puderem me ajudar, desde já agradeço

8 Respostas

S

Você tem a documentação dessa DLL?
Se tiver, pode criar uma interface JNA para acessar suas funções.

S

Sim, tenho o exemplo dela em C#… aí me deparo com a seguinte situação.:

[DllImport(“Winppla.dll”)]
private static extern int A_GetUSBDeviceInfo(int nPort, byte[] pDeviceName,
out int pDeviceNameLen, byte[] pDevicePath, out int pDevicePathLen);

Se verificar, esta chamada “devolve” retornos “out” para Variáveis, como eu faria o “parser” disto para java?

S

Se você utilizar JNA, então os parâmetros out int da DLL vão virar IntByReference na interface Java, exemplo:

import com.sun.jna.Library;

public interface Winppla extends Library {

    int A_GetUSBDeviceInfo(int nPort, byte[] pDeviceName, IntByReference pDeviceNameLen, byte[] pDevicePath, IntByReference pDevicePathLen);
}
S

ok, vou efetuar um teste aqui e verificar se isto funcionará!.. respondo na sequencia.

S

Então, até agora não consegui acessar pois a função A_GetUSBBufferLen() chamada pela Winppla.dll está me retornando 0 sempre. no C# ela está funcional porém efetuando o parse para Java, não funciona;

S

Como está declarada a função A_GetUSBBufferLen() na DLL?

Posta o código completo das suas classes Java

S

Segue abaixo::::

public interface ArgoxPPLA extends Library {

public int A_Bar2d_Maxi(int x, int y, int primary, int secondary,
        int country, int service, char mode, int numeric, String data);

public int A_Bar2d_Maxi_Ori(int x, int y, int ori, int primary,
        int secondary, int country, int service, char mode, int numeric, String data);

public int A_Bar2d_PDF417(int x, int y, int narrow, int width, char normal,
        int security, int aspect, int row, int column, char mode, int numeric, String data);

public int A_Bar2d_PDF417_Ori(int x, int y, int ori, int narrow, int width,
        char normal, int security, int aspect, int row, int column, char mode, int numeric,
        String data);

public int A_Bar2d_DataMatrix(int x, int y, int rotation, int hor_mul,
        int ver_mul, int ECC, int data_format, int num_rows, int num_col, char mode,
        int numeric, String data);

public void A_Clear_Memory();

public void A_ClosePrn();

public int A_CreatePrn(int selection, String filename);

public int A_Del_Graphic(int mem_mode, String graphic);

public int A_Draw_Box(char mode, int x, int y, int width, int height, int top, int side);

public int A_Draw_Line(char mode, int x, int y, int width, int height);

public void A_Feed_Label();

public String A_Get_DLL_Version(int nShowMessage); //public IntPtr

public int A_Get_DLL_VersionA(int nShowMessage);

public int A_Get_Graphic(int x, int y, int mem_mode, char format, String filename);

public int A_Get_Graphic_ColorBMP(int x, int y, int mem_mode, char format, String filename);

public int A_Get_Graphic_ColorBMPEx(int x, int y, int nWidth, int nHeight,
        int rotate, int mem_mode, char format, String id_name, String filename);

public int A_Get_Graphic_ColorBMP_HBitmap(int x, int y, int nWidth, int nHeight,
        int rotate, int mem_mode, char format, String id_name, IntByReference hbm); //IntPtr hbm);

public int A_Initial_Setting(int Type, String Source);

public int A_WriteData(int IsImmediate, byte[] pbuf, int length);

public int A_ReadData(byte[] pbuf, int length, int dwTimeoutms);

public int A_Load_Graphic(int x, int y, String graphic_name);

public int A_Open_ChineseFont(String path);

public int A_Print_Form(int width, int height, int copies, int amount, String form_name);

public int A_Print_Out(int width, int height, int copies, int amount);

public int A_Prn_Barcode(int x, int y, int ori, char type, int narrow,
        int width, int height, char mode, int numeric, String data);

public int A_Prn_Text(int x, int y, int ori, int font, int type,
        int hor_factor, int ver_factor, char mode, int numeric, String data);

public int A_Prn_Text_Chinese(int x, int y, int fonttype, String id_name,
        String data, int mem_mode);

public int A_Prn_Text_TrueType(int x, int y, int FSize, String FType,
        int Fspin, int FWeight, int FItalic, int FUnline, int FStrikeOut, String id_name,
        String data, int mem_mode);

public int A_Prn_Text_TrueType_W(int x, int y, int FHeight, int FWidth,
        String FType, int Fspin, int FWeight, int FItalic, int FUnline, int FStrikeOut,
        String id_name, String data, int mem_mode);

public int A_Set_Backfeed(int back);

public int A_Set_BMPSave(int nSave, String pstrBMPFName);

public int A_Set_Cutting(int cutting);

public int A_Set_Darkness(int heat);

public int A_Set_DebugDialog(int nEnable);

public int A_Set_Feed(char rate);

public int A_Set_Form(String formfile, String form_name, int mem_mode);

public int A_Set_Margin(int position, int margin);

public int A_Set_Prncomport(int baud, int parity, int data, int stop);

public int A_Set_Prncomport_PC(int nBaudRate, int nByteSize, int nParity,
        int nStopBits, int nDsr, int nCts, int nXonXoff);

public int A_Set_Sensor_Mode(char type, int continuous);

public int A_Set_Speed(char speed);

public int A_Set_Syssetting(int transfer, int cut_peel, int length,
        int zero, int pause);

public int A_Set_Unit(char unit);

public int A_Set_Gap(int gap);

public int A_Set_Logic(int logic);

public int A_Set_ProcessDlg(int nShow);

public int A_Set_ErrorDlg(int nShow);

public int A_Set_LabelVer(int centiInch);

public int A_GetUSBBufferLen();

public int A_EnumUSB(byte[] buf);

public int A_CreateUSBPort(int nPort);

public int A_CreatePort(int nPortType, int nPort, String filename);

public int A_Clear_MemoryEx(int nMode);

public void A_Set_Mirror();

public int A_Bar2d_RSS(int x, int y, int ori, int ratio, int height,
        char rtype, int mult, int seg, String data1, String data2);

public int A_Bar2d_QR_M(int x, int y, int ori, char mult, int value,
        int model, char error, int mask, char dinput, char mode, int numeric, String data);

public int A_Bar2d_QR_A(int x, int y, int ori, char mult, int value,
        char mode, int numeric, String data);

public int A_GetNetPrinterBufferLen();

public int A_EnumNetPrinter(byte[] buf);

public int A_CreateNetPort(int nPort);

public int A_Prn_Text_TrueType_Uni(int x, int y, int FSize, String FType,
        int Fspin, int FWeight, int FItalic, int FUnline, int FStrikeOut, String id_name,
        byte[] data, int format, int mem_mode);

public int A_Prn_Text_TrueType_UniB(int x, int y, int FSize, String FType,
        int Fspin, int FWeight, int FItalic, int FUnline, int FStrikeOut, String id_name,
        byte[] data, int format, int mem_mode);

public int A_GetUSBDeviceInfo(int nPort, byte[] pDeviceName, IntByReference pDeviceNameLen, byte[] pDevicePath, IntByReference pDevicePathLen);

public int A_Set_EncryptionKey(String encryptionKey);

public int A_Check_EncryptionKey(String decodeKey, String encryptionKey,
        int dwTimeoutms);

}

S

Você postou somente a interface Java.

Você tem a especificação dos métodos originais da DLL?

Como está fazendo para obter a instância da interface ArgoxPPLA?

Criado 24 de setembro de 2019
Ultima resposta 15 de out. de 2019
Respostas 8
Participantes 2