Windows Java COM Serial Driver WinJcom with proper handling of Timeout (Damiano Bolla)
Recebi do Sr. Damiano a autorização para publicar uma alteração na biblioteca de comunicação serial WinJcom que visa aumentar o número de portas seriais para 256 (COM1 à COM256).
Em 6/7/2010 02:47, Damiano Bolla escreveu: Hi Fernando ! Thanks for the feedback, very appreciated ! If you like the work, blog about it so other people do not have trouble finding it Cheers Damiano
As classes que devem ser alteradas são WinjcomIdentifier e JcomPort.
Método getCommPortList() da classe WinjcomIdentifier
public List getCommPortList() {
ArrayList risul = new ArrayList();
for (int index = 1; index < 10; index++) {
String portName = "COM" + index;
if (!isPortPresent(portName)) {
continue;
}
risul.add(getCommPort(portName));
}
// COM10, COM11, ... COM256
for (int index = 10; index <= 256; index++) {
String portName = "\\\\.\\COM" + index;
if (!isPortPresent(portName)) {
continue;
}
portName = portName.replace('\\', '@');
portName = portName.replace("@@.@", "");
risul.add(getCommPort(portName));
}
return risul;
}
Método open() da classe JcomPort
public void open() throws IOException {
int port = Integer.parseInt(portName.replace("COM", ""));
if(port > 9){
portFd = nativeOpen("\\\\.\\" + portName);
} else {
portFd = nativeOpen(portName);
}
// You need to set at least one event...
nativeNotifyEnable(portFd, EV_RING, true);
if (debug) {
report(classname + "Constructor: openFd=" + portFd);
}
monitorThread = new Thread(new MonitorThread());
monitorThread.start();
}
Deste modo é possível utilizar 256 portas seriais no Windows (COM1, COM2, COM3, ... COM254, COM255, COM256)