Проблемы с последовательным портом jni - PullRequest
0 голосов
/ 30 ноября 2011

Я использую jni, чтобы шлепнуть графический интерфейс через какой-либо код последовательного порта, написанный на c ++ (который является потомком класса RS232).оригинальный c ++ работает нормально и непрерывно выводит пакеты данных на терминал.я написал действительно простой код jni в качестве отправной точки для моего приложения.в частности, я создал логический метод на стороне c ++ jni, который просто вызывает конструктор класса и возвращает, было ли соединение успешным.это выглядит так:

    const string &port_name = "COM7";
const long baud_rate = 19200;
const char parity = 'N';
const int word_size = 8;
const int stop_bits = 1;
const int xon_xoff = 0;
const int rts_cts = 0;
const int dtr_dsr = 0;    

    SerialPort *m_pPort = new SerialPort( port_name,
                            baud_rate,
                                    parity,
                    word_size, 
                stop_bits,
                UNCHANGED,
                UNCHANGED,
                xon_xoff,
                rts_cts,
                dtr_dsr );

if ( m_pPort->ErrorStatus() == RS232_SUCCESS ) {
    int check_state = BST_INDETERMINATE;
    switch ( m_pPort->Dtr() ) {
        case 0 : check_state = BST_UNCHECKED; break;
        case 1 : check_state = BST_CHECKED; break;
    }
    check_state = BST_INDETERMINATE;
    switch ( m_pPort->Rts() ) {
        case 0 : check_state = BST_UNCHECKED; break;
        case 1 : check_state = BST_CHECKED; break;
    }
    return true;
} else {
    return false;
}

этот код был по существу скопирован из main () оригинальной программы на c ++.тем не менее, соединение всегда прерывается при вызове из java (но всегда работает при вызове из c ++ main ()).во время отладки я отследил ошибку, возникшую в классе RS232 предка, до «RS232_NEXT_FREE_ERROR», которая, по-видимому, никогда не возникает при нормальных обстоятельствах (согласно моим поискам в Google).В настоящее время я использую VC ++ Express для создания DLL.ранее я установил соединение, генерирующее .dll с помощью wxdev, но отказался от него из-за множества других проблем.

Я знаю, что это, вероятно, какой-то странный крайний случай, но если кто-нибудь сможет пролить свет на то, что здесь происходит, я был бы очень признателен.

1 Ответ

0 голосов
/ 30 ноября 2011

Сильное предложение: взгляните на Rxtx

Вот несколько ссылок:

http://rxtx.qbang.org/wiki/index.php/FAQ

http://en.wikibooks.org/wiki/Serial_Programming/Serial_Java

Также: вот (несколько устаревшая!) Ссылка на JavaComm, если хотите:

http://edn.embarcadero.com/article/31915

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...