2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Java и COM-порт
Сообщение26.10.2022, 17:32 
Аватара пользователя


26/05/12
1700
приходит весна?
Я вот не пойму, Java раньше последовательный порт не поддерживала вообще что ли никак? А то вот пытаюсь загуглить, как прочитать данные с этого интерфейса, а он мне всё выдаёт javax.comm.CommPort или gnu.io.SerialPort. Ни того, не другого в документации к Java SE 8 нет в принципе.

 Профиль  
                  
 
 Re: Java и COM-порт
Сообщение26.10.2022, 18:23 
Заслуженный участник


18/09/21
1764
Открываете файл (для Микрософт с именем например "COM1", для linux с именем например "/dev/ttyS0") и читаете/пишете.
Вот например под C/C++: https://habr.com/ru/sandbox/30635/
Для java должно быть аналогично.

 Профиль  
                  
 
 Re: Java и COM-порт
Сообщение26.10.2022, 20:36 
Аватара пользователя


26/05/12
1700
приходит весна?
Не работает такой подход. Даже в командной строке:

D:\>copy COM13 1.txt
Не удается найти указанный файл.

D:\>copy COM1 1.txt
Операция ввода/вывода была прервана из-за завершения потока команд или по запросу приложения.
Скопировано файлов: 0.


Устройство — USB Serial Port (COM13) — в системе есть, но как к файлу обратиться к нему нельзя.

Плюс у последовательного порта есть куча всяких настроек, типа скорости, числа бит, числа стоповых бит и чётности, которые, вообще говоря, должно приложение конфигурировать.

 Профиль  
                  
 
 Re: Java и COM-порт
Сообщение26.10.2022, 20:52 
Заслуженный участник


18/09/21
1764
B@R5uk в сообщении #1567873 писал(а):
Плюс у последовательного порта есть куча всяких настроек, типа скорости, числа бит,
Под Windows это в командной строке командой "mode" настраивается.
B@R5uk в сообщении #1567873 писал(а):
Не работает такой подход.
Работает.
Недавно летом делал под Windows на C/C++, и читало с порта, и писало обратно в порт (здесь читало до символа "перенос строки").
код: [ скачать ] [ спрятать ]
Используется синтаксис C++
#include <windows.h>
#include <stdio.h>

int main( int argc, char **argv )
{
  HANDLE hSerial = CreateFile("COM1", GENERIC_READ | GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);
  if (hSerial == INVALID_HANDLE_VALUE)
  {
    printf("Error opening port\r\n");
    return -1;
  }

    char c;
    DWORD dwBytesWrite = 0;
    printf("<-: ");
    do
    {
      if(!ReadFile(hSerial, &c, 1, &dwBytesWrite, NULL))
      {
        printf("read error\r\n");
        return 1;
      }
      putc(c, stdout);
    }
    while(c != '\n');
   
    char buf[] = ":r50=1,118,2662,0,155999,313968,824811,1390507,124,0,0,0,31396,3030,\r\n";
    if(!WriteFile(hSerial, buf, sizeof(buf) - 1, &dwBytesWrite, NULL))
    {
      printf("write error\r\n");
      return 2;
    }
    printf("->: %s", buf);

  CloseHandle(hSerial);
  return 0;
}
 

 Профиль  
                  
 
 Re: Java и COM-порт
Сообщение27.10.2022, 02:49 
Аватара пользователя


26/05/12
1700
приходит весна?
zykov в сообщении #1567877 писал(а):
Работает.

На моём компьютере не работает. Причём не работает на уровне системы, безотносительно языка. Я открыл командную строку, и попытался скопировать с COM-порта в файл, как это делается при копировании из файла в файл. Результат представлен выше. Железный порт на материнке работает, а интересующий меня юсбишный — нет, выдаёт ошибку.

При этом putty.exe спокойно всё открывает. Но я так понимаю, путти использует вин-апи, а не работу через файлы.

 Профиль  
                  
 
 Re: Java и COM-порт
Сообщение27.10.2022, 10:43 
Заслуженный участник


18/09/21
1764
Работает.
Нужно правильно открывать. Функции CreateFile, ReadFile, WriteFile - это из WinAPI (C-интерфейс операционной системы). Нужно с этимим флажками открывать, что указаны.
Аналогично под Linux функции open, read, write - это тоже C-интерфейс POSIX, т.е. тоже интерфейс ОС.
Под Java тоже можно напрямую испольовать WinAPI.
Ищем в яндекс "java winapi". Выдаёт например JNI.

-- 27.10.2022, 10:47 --

B@R5uk в сообщении #1567901 писал(а):
а интересующий меня юсбишный — нет, выдаёт ошибку
А он вообще работает? Может для этой железки (USB-uart, или какая там) просто драйвера не установлены?
Или COM порт не настроен (baud и прочее).

 Профиль  
                  
 
 Re: Java и COM-порт
Сообщение27.10.2022, 12:17 
Аватара пользователя


26/05/12
1700
приходит весна?
zykov в сообщении #1567922 писал(а):
А он вообще работает?

B@R5uk в сообщении #1567901 писал(а):
При этом putty.exe спокойно всё открывает.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group