Open nightmareindustries opened 7 years ago
How about just giving the port.read() method a fixed buffer? Or we specify the buffersize via param. The following code is completely untested:
private static final int READ_BUFFER_SIZE = 256;
...
public void readAsync(Promise promise) {
if (port != null) {
byte[] buffer = new byte[READ_BUFFER_SIZE];
try {
int bytesRead = port.read(buffer, SERIAL_TIMEOUT);
String byteString = new String(buffer, 0, bytesRead);
promise.resolve(byteString);
} catch (IOException e) {
promise.reject(e);
}
} else {
promise.resolve(getNoPortErrorMessage());
}
}
I studied the source code of this project a little bit and it looks like, for writing data, it just calls this:
return this.UsbSerialModule.writeInDeviceAsync(this.id, value);
Is it much harder to change this to 'read'? What exactly needs to be done to support reading from serial?
Hi guys, have anyone implemented it already? I'm willing to pay for it if needed.
Hey, yeah, we have a working fork for reading data. Nothing pretty, but it gets the job done: https://github.com/edvijaka/react-native-usbserial
Hey @GreenGI thank you. Is this usage correct?
DeviceEventEmitter.addListener('newData', (e) => {
console.log('newData', e);
});
Basically - yes. This is how I use it on a component after mounting it:
componentWillMount() {
this.getDeviceAsync().then(device => {
if (device) {
DeviceEventEmitter.addListener('newData', (e) => {
console.log('newData', e);
});
this.readDevice(device.id);
}
});
}
getDeviceListAsync = () => {
return UsbSerialModule.getDeviceListAsync();
};
readDevice = (id) => {
UsbSerialModule.readDeviceAsync(id);
};
Hi @GreenGI ! Is the code above still working in your fork? Could you provide the code for getDeviceAsync()? Thanks in advance.
Hello,
Are you planning on implementing serial read as well? It would make the library extremely useful and complete.
Thanks for your great work