terça-feira, 6 de julho de 2010

WinJcom

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)