Форум программистов, компьютерный форум, киберфорум
Java
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.65/88: Рейтинг темы: голосов - 88, средняя оценка - 4.65
0 / 0 / 0
Регистрация: 04.04.2018
Сообщений: 1
1

Работа с COM-портом на Windows 10

04.04.2018, 21:29. Показов 18101. Ответов 1

Author24 — интернет-сервис помощи студентам
Доброго времени суток!
В целях написания магистерской диссертации необходимо исследовать характеристики радиомодуля. Связь ПК с радиомодулем происходит через COM-порт. Для этих целей мною была написана простенькая GUI программка. Работа с COM-портом осуществляется через библиотеку JSSC. На Windows 7 всё работает без нареканий. Однако, в целях проведения измерений, мне необходимо использовать планшет на Window 10. И тут я столкнулся с одной проблемой. При попытке обратиться к нативной библиотеке происходит fatal error и выводится содержание следующего плана:

#
# A fatal error has been detected by the Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x000000007110b5db, pid=1304, tid=7120
#
# JRE version: Java(TM) SE Runtime Environment (9.0+11) (build 9.0.4+11)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (9.0.4+11, mixed mode, tiered, compressed oops, g1 gc, windows-amd64)
# Problematic frame:
# C [jSSC-2.8_x86_64.dll+0xb5db]
#
# No core dump will be written. Minidumps are not enabled by default on client versions of Windows
#
# If you would like to submit a bug report, please visit:
# http://bugreport.java.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#

--------------- S U M M A R Y ------------

Command Line: -javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2017.3.4\lib\idea_rt.jar=51307:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2017.3.4\bin -Dfile.encoding=UTF-8 com.company.Main

Host: Intel(R) Atom(TM) x5-Z8350 CPU @ 1.44GHz, 4 cores, 3G, Windows 10 , 64 bit Build 16299 (10.0.16299.15)
Time: Wed Mar 21 21:14:35 2018 Ano?aoaineia noaiaa?oiia a?aiy elapsed time: 14 seconds (0d 0h 0m 14s)

и т.д....

На просторах рунета ничего близкого не нашёл. На иностранных форумах нашёл одну тему , но насколько я понял он менял содержание .dll , библиотеки. Загрузил все нативные библиотеки с его проекта кидал их и в раздел проекта и в JRE и JDK - эффекта -0. Попытался использовать библиотеку RXTXcomm - там тоже ругается на библиотеку. Может быть есть какие ньюансы по подключению нативных библиотек в Windows 10 или же есть другая библиотека работающая под Windows 10? Быть может я совершил ряд грубых ошибок. Подскажите пожалуйста.
Прилагаю класс проекта, который непосредственно работает с COM-портом:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
package com.company;
 
import jssc.SerialPort;
import jssc.SerialPortException;
import jssc.SerialPortTimeoutException;
 
import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.util.Calendar;
 
public class COM_THREAD extends Thread {
    SerialPort serialPort; // Объект серийный порт - через него идёт непосредственная работа с COM
    COM_PORT com_port;    // Объект содержащий параметры COM -порта, а также методы для их изменения. Подгружаются с файла
    String outputMessage; // Строка, в которую помещается отправляемое оператором  сообщение модулю
    String inputMessage;  // строка, в которую помещается сообщение с модуля оператору
    byte[] buff;          // буффер для приёма 1 байта с метода SerialPort.readBytes(), массив используем, т.к. возвра-
    //щаемый тип byte[]
    byte[] buff1 = new byte[16]; // 2 буфер, в который помещаются считанные символы (тут кодировка ASCII поэтому byte)
    GUI gui;                     // ссылка на основню панель, чтобы иметь возможность выводить результат в поле jtextArea
    // и ситывать информацию с полей ввода, а также обновлять statusbar
    long startTime;
    long stopTime;
    Calendar calendar;
 
 
    COM_THREAD(String outputMessage,GUI gui){
        this.gui = gui;
        this.outputMessage = outputMessage;
    }
 
    @Override
    public void run() {
        try {
            //Cчитывание настроек с файла( файл в данном случае сериализованный объект класса СOM_PORT
            ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream("Setting.st"));
            com_port = (COM_PORT)objectInputStream.readObject();
            // Применение параметров COM-порта
            serialPort = new SerialPort(com_port.com);
            serialPort.openPort();
            serialPort.setParams(com_port.codeRate,
                    com_port.codeDataBit,
                    com_port.codeStopBit,
                    com_port.codeParity);
            //Перевод введённой в поле jTextField строки в массив байт (перевод в кодировку ASCII)
            byte[] buffMessage = outputMessage.getBytes();
            // запись массива байт в COM-порт и его дальнейшая отправка
            serialPort.writeBytes(buffMessage);
            int i=0; //счётчик для передвижения по буферу 2
            // Чтение входящего сообщения с модуля
            calendar = Calendar.getInstance();
            startTime = calendar.getTimeInMillis();
            do {
                buff = serialPort.readBytes(1,5000);
                buff1[i] = buff[0];
                i++;
            }while (buff[0]!=10); // число 10 означает служебный символ кодировки ASCII - <LF>. Им кончается всякое
            // сообщение
            buff = new byte[i];
            for (int k=0;k<i;k++){
                buff[k]=buff1[k];
            }
 
            //перевод массива байт в строку
            calendar = Calendar.getInstance();
            stopTime = calendar.getTimeInMillis() - startTime;
            inputMessage = new String(buff);
            gui.setStatusbar(Integer.toString((int)(stopTime)) + " мс");
            //отправка входящего сообщения в поле textArea и его отображение там
 
            for(int k=0;k<buff1.length;k++) {
                System.out.println(buff1[k]);
            }
 
            gui.textArea.append("Модуль: " + inputMessage);
            // закрытие COM-порта
            serialPort.closePort();
 
        }catch (SerialPortException spe){
            System.err.println(spe);
        }catch (IOException io){
            //System.out.println(io);
        }catch (ClassNotFoundException cnf){
 
        }catch (SerialPortTimeoutException toe){
            gui.setStatusbar("Истекло время ожидания");
            try {
                serialPort.closePort();
            }catch(SerialPortException spe){
                System.exit(0);
            }
        }
 
        //return serialPort;
 
 
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.04.2018, 21:29
Ответы с готовыми решениями:

Работа с виртуальным COM портом в Windows
Здравствуйте, мне нужно принимать и обрабатывать поток данных с мультиметра APPA 305, который...

Работа с COM-портом QT
Всем привет. Захотелось на днях написать GUI под windows для общения с STM32F100 по COM-порту....

Работа с com-портом
Всем привет. Нужно ловить из com-порта некоторые данные. По итогу, не получается даже открыть порт....

Работа с COM портом
Добрый день, уважаемые знатоки! Помогите пожалуйста выработать логику работы программы. Имеется...

1
2677 / 1995 / 496
Регистрация: 17.02.2014
Сообщений: 9,357
05.04.2018, 14:14 2
Попробуй поставить 8-ю java.
0
05.04.2018, 14:14
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.04.2018, 14:14
Помогаю со студенческими работами здесь

Работа с COM-портом
Подскажите, какие компоненты нужны для работы с ком-портами? а именно (хотя бы для начала) отправка...

Работа с COM-портом в C#
Добрый день. Есть устройство Legrand которое передает по rs-485 напряжение мощность и другие...

Работа с com портом
Всем привет, я никогда до этого не имел дело с com портами, но теперь необходимо их изучить. Нужна...

Работа с com-портом
Здравствуйте! Мне надо принять данные по com-порту и вывести в терминал. Для этого я написал...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru