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

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

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

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
В целях написания магистерской диссертации необходимо исследовать характеристики радиомодуля. Связь ПК с радиомодулем происходит через 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:\Progra m 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
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.04.2018, 21:29
Ответы с готовыми решениями:

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

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

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

1
 Аватар для Aviz__
2736 / 2046 / 506
Регистрация: 17.02.2014
Сообщений: 9,462
05.04.2018, 14:14
Попробуй поставить 8-ю java.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.04.2018, 14:14
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru