Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 06.04.2017
Сообщений: 10

Java JSSC: подключение к аналоговому генератору с командами SCPI через RS232

19.06.2019, 19:31. Показов 2554. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Имею задачу: хотя бы просто подружиться с генератором аналоговым, подключенным к ПК по RS232. Генератор опирается на SCPI. Если я правильно понимаю, моя задача такая: подключится к порту устройства (выполнил), составить команду SCPI, преобразовать ее в код ASCII, потом это перегнать в HEX, добавить в начале и конце 0x и 00 соответственно (это из документации устройства), и потом загнать в порт, после чего ждать реакции. Все верно?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.06.2019, 19:31
Ответы с готовыми решениями:

Как работать с модемом через RS232 (COM-port) и AT командами
Добрый день, скажите плиз, какие библиотеки необходимы для работы с модемом через последовательный порт, в частности передача на модем AT...

Подключение к аналоговому телефону через интернет
Здравствуйте! Стоит такая задача. На работе есть два вида телефонии - внутренняя IP телефония и городская аналоговая линия. К внутренней IP...

Подключение инклинометра к аналоговому входу
Всем здравствуйте! только учусь, столкнулся с вопросом подключения датчика инклинометра...

11
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
19.06.2019, 20:24
Цитата Сообщение от AlexHatter Посмотреть сообщение
преобразовать ее в код ASCII, потом это перегнать в HEX
в порт байты пишут - ему плевать hex оно у тебя или нет. Попробуй *IDN? послать и на ответ посмотри. У jssc примеры есть. Насчет нулей - не уверен, что нужно. Кроме того, скорее всего можно к порту терминалом подцепиться и руками команды повводить например.
0
0 / 0 / 0
Регистрация: 06.04.2017
Сообщений: 10
20.06.2019, 07:42  [ТС]
Цитата Сообщение от xoraxax Посмотреть сообщение
Насчет нулей - не уверен, что нужно
Цитирую техдок: "Все команды для RS-232 должны иметь добавление в виде адреса GPIB - 0x (в HEX) перед инструкцией. Заканчиваться команда должна на 00 (HEX).
У приборов из новых серий достаточно использовать <CR> в конце строки.". Мой прибор вроде бы из старой серии.

Цитата Сообщение от xoraxax Посмотреть сообщение
в порт байты пишут - ему плевать hex оно у тебя или нет.
Типа того?
Java
1
2
3
4
5
6
7
byte[] buffer = new byte[] {};
                        int commandHex = 0;
                        String command = CommandLineField.getText();
                        String ASCII = "";
                        for (int i = 0; i < command.length(); i++) ASCII = ASCII + (int) command.charAt(i);
                        buffer = ASCII.getBytes();
                        serialPort.writeBytes(buffer);
Цитата Сообщение от xoraxax Посмотреть сообщение
У jssc примеры есть
Собственно, подключение к порту. На эмуляторе 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
public static void ConfigurePort() {
        if ( !( PortNumber < 0 ) && ( PortNumber < 31 ) ) { serialPort = new SerialPort("COM" + String.valueOf(PortNumber)); }
        else JOptionPane.showMessageDialog(null, "Неверный номер порта.", "Внимание", JOptionPane.INFORMATION_MESSAGE);
        
        try {
            serialPort.openPort();
            serialPort.setParams(SerialPort.BAUDRATE_9600,
                                 SerialPort.DATABITS_8,
                                 SerialPort.STOPBITS_1,
                                 SerialPort.PARITY_NONE);
            serialPort.setFlowControlMode(SerialPort.FLOWCONTROL_RTSCTS_IN | 
                                          SerialPort.FLOWCONTROL_RTSCTS_OUT);
            int mask = SerialPort.MASK_RXCHAR;
            serialPort.setEventsMask(mask);
            serialPort.addEventListener(new PortReader());
            PortParametersChanged = false;
        }
        catch (SerialPortException ex) {
            LogHistoryArea.setText( "\n" + LogHistoryArea.getText() + ex );
        }
    }
    
    private static class PortReader implements SerialPortEventListener {
    public void serialEvent(SerialPortEvent event) {
            if(event.isRXCHAR()){
                try {
                    String Log = serialPort.readString();
                    LogHistoryArea.setText( "\n" + LogHistoryArea.getText() + Log );
                    SendCommandButton.setEnabled(true);
                }
                catch (SerialPortException ex) {
                    LogHistoryArea.setText( "\n" + LogHistoryArea.getText() + ex );
                }
            }
        }
    }
0
Эксперт .NET
 Аватар для Rius
13089 / 7649 / 1670
Регистрация: 25.05.2015
Сообщений: 23,289
Записей в блоге: 14
20.06.2019, 07:45
AlexHatter, покажите описание протокола от проиводителя.
0
0 / 0 / 0
Регистрация: 06.04.2017
Сообщений: 10
20.06.2019, 16:16  [ТС]
Цитата Сообщение от Rius Посмотреть сообщение
AlexHatter, покажите описание протокола от проиводителя.
Если я правильно вас понял.

Ссылка на руководство по эксплуатации, которое мне выдали: https://elaso.com.ua/uploads/docs/fQtYR7oFkF.pdf

Руководство по дистанционному управлению начинается со страницы 33, команды SCPI - с 38.
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
20.06.2019, 16:39
AlexHatter, где ты там увидел эти нули и hex?

Добавлено через 2 минуты
терминалом цеплялся?
0
Эксперт .NET
 Аватар для Rius
13089 / 7649 / 1670
Регистрация: 25.05.2015
Сообщений: 23,289
Записей в блоге: 14
20.06.2019, 17:27
xoraxax, в пункте 7.4
Все команды для RS-232 должны иметь добавление в виде адреса GPIB - 0x (в HEX) перед
инструкцией. Заканчиваться команда должна на 00 (HEX).
У приборов из новых серий достаточно использовать <CR> в конце строки.
0
0 / 0 / 0
Регистрация: 06.04.2017
Сообщений: 10
20.06.2019, 17:44  [ТС]
Цитата Сообщение от xoraxax Посмотреть сообщение
терминалом цеплялся?
У меня доступ ограниченный, редко могу к оборудованию попасть. Был раз, через терминал не пытался. Писал в порт команды через serialPort.writeString();. Как раз *IDN? посылал. Без результата - порт молчал. Вот следующий раз завтра пойду, попробую писать код ASCII байтами, потом в HEX с добавлениями байтами. Что буду делать если не получится - сам пока не придумал.
0
Эксперт .NET
 Аватар для Rius
13089 / 7649 / 1670
Регистрация: 25.05.2015
Сообщений: 23,289
Записей в блоге: 14
20.06.2019, 18:00
Проверить настройки порта - скорость, чётность и т.п. в меню прибора. Потом такие же настроить в терминале.
Данные по терминалу отсылать в виде ASCII. С завершением new line. Что это такое - не написано, но судя по отдельному упоминанию carriage return, new line это line feed - код 10 ASCII. В настройках терминала должно быть указание символа завершения передаваемой строки.
1
0 / 0 / 0
Регистрация: 06.04.2017
Сообщений: 10
20.06.2019, 19:38  [ТС]
Цитата Сообщение от Rius Посмотреть сообщение
Проверить настройки порта - скорость, чётность и т.п. в меню прибора
Выполнено в прошлый подход.

Цитата Сообщение от Rius Посмотреть сообщение
Потом такие же настроить в терминале.
Я ведь правильно понимаю, что под терминалом подразумевается командная строка ОС, а не что-то на приборе?
0
Эксперт .NET
 Аватар для Rius
13089 / 7649 / 1670
Регистрация: 25.05.2015
Сообщений: 23,289
Записей в блоге: 14
20.06.2019, 19:42
Цитата Сообщение от AlexHatter Посмотреть сообщение
Я ведь правильно понимаю, что под терминалом подразумевается командная строка ОС, а не что-то на приборе?
Неправильно.
Под терминалом в данном контексте подразумеваются программы-терминалы для обмена по RS-232.
Они тоже принимают текстовый ввод, но имеют кучу настроек для работы с COM-портом и управления принимаемым/передаваемым текстом. И обычно более богатый интерфейс.
Их много. Пишут все, кому не лень. Разного уровня качества и удобства.
2
0 / 0 / 0
Регистрация: 06.04.2017
Сообщений: 10
26.06.2019, 12:44  [ТС]
Сегодня наконец-то добрался до генератора. Подключался посредством двух разных терминалов, использовал в конце команды и carriage, и line feed, и в Hex, и в ASCII, пытался даже добавления эти использовать. Никакой реакции. Прибор самый старый - ГСС-05, провод через переходник. Первый нерабочий был, пришлось заменить. Хоть убейся, не понимаю.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.06.2019, 12:44
Помогаю со студенческими работами здесь

Java Com Port JSSC ошибка
Доброго времени суток! Пытаюсь добавить в проект библиотеку JSSC, чтобы считать данные с com порта, но вижу ошибку: Exception in...

Пустой байт в byte Java Jssc
public static String code; public static int i = 0; public static int q = 0; public static void main(String args) { ...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru