Я пытаюсь обновить полученные ByteBuffer
данные (преобразованные в String
) до JTextField
, но текстовое поле печатает выходные данные вместе со значениями мусора, даже после обрезки строки.
Но в консоли вывода он печатает правильные данные, когда речь идет о текстовом поле в графическом интерфейсе, он печатает ненужные данные вместе с правильными данными.
import org.usb4java.LibUsb;
import org.usb4java.LibUsbException;
public class UsbRead
{
static final byte IN_ENDPOINT1 = (byte) 0x82;
static final int TIMEOUT = 100;
static final byte INTERFACE = 1;
static final byte interfaceNum = 1;
static String s=new String();
static String dd=new String();
public static String read(DeviceHandle handle)
{
try{
System.out.println("-----read-----");
ByteBuffer buffer = BufferUtils.allocateByteBuffer(30);
IntBuffer transferred = BufferUtils.allocateIntBuffer();
System.out.println("capacity-->"+buffer.capacity());
int result=LibUsb.bulkTransfer(handle, IN_ENDPOINT1, buffer,
transferred, TIMEOUT);
if (result != LibUsb.SUCCESS)
{
throw new LibUsbException("Unable to read data", result);
}
else
{
System.out.println("---------------------------read----------");
System.out.println(transferred.get() + "-------- bytes read from device");
s="";
s = StandardCharsets.UTF_8.decode(buffer).toString();
System.out.println("s--"+s);
s.trim();
WisePanel4.textField_1.setText(s);
dd=s;
System.out.println("received data ->"+dd);
}
return dd;
}
catch(Exception e)
{
System.out.println("-*----read time out");
}
return dd;
}
}
output ->
---------------------------read----------
20-------- bytes read from device
s--192.168.1.108
received data ->192.168.1.108
Пожалуйста, проверьте изображение графического интерфейса.Он печатает ненужное значение с правильными данными: