Как найти порт для serial

You can also use setserial to get and set serial port information, in addition to dmesg.

Tested on Ubuntu 18.04:

setserial

# install it
sudo apt update
sudo apt install setserial

# Display (and sort) serial information for all /dev/ttyS* devices
setserial -g /dev/ttyS* | sort -V
# Display (and sort) serial information for all /dev/ttyUSB* devices
setserial -g /dev/ttyUSB* | sort -V

# To see extra info. such as the baud rate too, add `-G`:
setserial -g -G /dev/ttyS* | sort -V
setserial -g -G /dev/ttyUSB* | sort -V

Sample run and output. Notice that /dev/ttyS4 is the only port that appears to be alive and not “unknown” (whatever that means). (This /dev/ttyS4 device also shows up in the Arduino IDE even though it’s not an Arduino and I don’t know what it is.):

$ setserial -g -G /dev/ttyS* | sort -V
/dev/ttyS0 uart unknown port 0x03f8 irq 4 baud_base 115200 spd_normal skip_test
/dev/ttyS1 uart unknown port 0x02f8 irq 3 baud_base 115200 spd_normal skip_test
/dev/ttyS2 uart unknown port 0x03e8 irq 4 baud_base 115200 spd_normal skip_test
/dev/ttyS3 uart unknown port 0x02e8 irq 3 baud_base 115200 spd_normal
/dev/ttyS4 uart 16550A port 0x3060 irq 19 baud_base 115200 spd_normal skip_test
/dev/ttyS5 uart unknown port 0x0000 irq 0 baud_base 0 spd_normal
/dev/ttyS6 uart unknown port 0x0000 irq 0 baud_base 0 spd_normal
/dev/ttyS7 uart unknown port 0x0000 irq 0 baud_base 0 spd_normal
/dev/ttyS8 uart unknown port 0x0000 irq 0 baud_base 0 spd_normal
/dev/ttyS9 uart unknown port 0x0000 irq 0 baud_base 0 spd_normal
/dev/ttyS10 uart unknown port 0x0000 irq 0 baud_base 0 spd_normal
/dev/ttyS11 uart unknown port 0x0000 irq 0 baud_base 0 spd_normal
/dev/ttyS12 uart unknown port 0x0000 irq 0 baud_base 0 spd_normal
/dev/ttyS13 uart unknown port 0x0000 irq 0 baud_base 0 spd_normal
/dev/ttyS14 uart unknown port 0x0000 irq 0 baud_base 0 spd_normal
/dev/ttyS15 uart unknown port 0x0000 irq 0 baud_base 0 spd_normal
/dev/ttyS16 uart unknown port 0x0000 irq 0 baud_base 0 spd_normal
/dev/ttyS17 uart unknown port 0x0000 irq 0 baud_base 0 spd_normal
/dev/ttyS18 uart unknown port 0x0000 irq 0 baud_base 0 spd_normal
/dev/ttyS19 uart unknown port 0x0000 irq 0 baud_base 0 spd_normal
/dev/ttyS20 uart unknown port 0x0000 irq 0 baud_base 0 spd_normal
/dev/ttyS21 uart unknown port 0x0000 irq 0 baud_base 0 spd_normal
/dev/ttyS22 uart unknown port 0x0000 irq 0 baud_base 0 spd_normal
/dev/ttyS23 uart unknown port 0x0000 irq 0 baud_base 0 spd_normal
/dev/ttyS24 uart unknown port 0x0000 irq 0 baud_base 0 spd_normal
/dev/ttyS25 uart unknown port 0x0000 irq 0 baud_base 0 spd_normal
/dev/ttyS26 uart unknown port 0x0000 irq 0 baud_base 0 spd_normal
/dev/ttyS27 uart unknown port 0x0000 irq 0 baud_base 0 spd_normal
/dev/ttyS28 uart unknown port 0x0000 irq 0 baud_base 0 spd_normal
/dev/ttyS29 uart unknown port 0x0000 irq 0 baud_base 0 spd_normal
/dev/ttyS30 uart unknown port 0x0000 irq 0 baud_base 0 spd_normal
/dev/ttyS31 uart unknown port 0x0000 irq 0 baud_base 0 spd_normal

dmesg

Use dmesg to also see some of this information:

# Show UART information, incl. baudrate, for /dev/ttyS* devices.
dmesg | grep ttyS

# Show UART information, incl. baudrate, for /dev/ttyUSB* devices.
dmesg | grep ttyUSB

Sample run and output:

$ dmesg | grep ttyS
[    1.624447] 0000:00:16.3: ttyS4 at I/O 0x3060 (irq = 19, base_baud = 115200) is a 16550A

Even better, watch the dmesg kernel ring buffer output live with the -w option:

dmesg -wH

Now, unplug your USB device you’re trying to identify and plug it back in to see which device it is, based on the messages that show up in the dmesg output, live.

Для правильного подключения оборудования, необходимо определить номер COM порта.

Проверка проводится при условии, что сервер полностью развернут, и работает заведомо правильно.

Windows

Для определения номера COM порта на ОС Windows необходимо:

  1. Убедиться в том, что многожильный кабель подключен к COM-порту
  2. Перейти в “Диспетчер устройств”, расположенный в: Панель управленияОборудование и звукДиспетчер устройств (необходимы права администратора)
  3. Раскрыть дерево “Порты (COM и LPT)”
  4. Отсоединить многожильный кабель
  5. Запомнить изменения в дереве устройств “Порты (COM и LPT)”
  6. Присоединить многожильный кабель обратно к COM-порту
  7. Найти новый порт в дереве устройств “Порты (COM и LPT)”

ComP 1.png

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

ComP 2.png

Linux

Для определения номера COM порта на ОС Linux необходимо:

  1. Обладать правами Root либо пользователь должен входить в группу dialout
  2. Убедиться в том, что многожильный кабель подключен к COM-порту
  3. Проверить наличие COM портов в системе, введя в командную строку следующую команду:
ls -l /dev/ttyS* /dev/ttyUSB*

4. После выполнения команды отобразится список всех доступных COM-портов

ComP 3.png

dev/ttyS0 – первый COM порт

/dev/ttyS1 – второй COM порт

/dev/ttyUSB0 – специальный кабель-переходник из USB в COM (Gembird UAS111)

5. Установить программу minicom. Для этого вводим следующую команду:

apt-get install minicom

6. Найти многожильный кабель в оплётке длиной 4-6 см.

ComP 4.png

7. Соединить 2 и 3 выводы COM порта перемычкой из кусочка многожильного провода. Оплётка будет удерживать провод на контактах, а металлические жилы внутри будут проводниками.

8. Настроить программу minicom. Для этого вводим следующую команду:

minicom -s

ComP 5.png

9. Выбрать “Настройка последовательного порта”

ComP 6.png

10. Нажимая А поочередно выбираем порты (если используется кабель-переходник из USB в COM то выбрать /dev/ttyUSB0)

11. Отключить аппаратное управление потоком, нажав «F»

12. Выйти из настроек нажав «Enter»

13. Сохранить настройки по умолчанию «Сохранить настройки как dfl»

14. Выйти из minicom

15. Запустить minicom выполнив команду:

minicom

16. Нажать на любую клавишу на клавиатуре

ComP 7.png

В случае, если символы не вводятся с клавиатуры, необходимо вернуться к пункту 10, и выбрать другой COM-порт

Если вводимые символы отображаются – значит COM-порт определен верно

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

ComP 8.png

One thing to note, codes like this:

for i in serial.tools.list_ports.comports():
print(i) 

Return the following:

COM7 - Standard Serial over Bluetooth link (COM7) COM1 - Communications Port (COM1) COM8 - Standard Serial over Bluetooth link (COM8) COM4 - USB-SERIAL CH340 (COM4)

If you want the ports listed in order, and only the ones available to you, try:(credit to tfeldmann)

   def serial_ports():
    """ Lists serial port names

        :raises EnvironmentError:
            On unsupported or unknown platforms
        :returns:
            A list of the serial ports available on the system
    """
    if sys.platform.startswith('win'):
        ports = ['COM%s' % (i + 1) for i in range(256)]
    elif sys.platform.startswith('linux') or sys.platform.startswith('cygwin'):
        # this excludes your current terminal "/dev/tty"
        ports = glob.glob('/dev/tty[A-Za-z]*')
    elif sys.platform.startswith('darwin'):
        ports = glob.glob('/dev/tty.*')
    else:
        raise EnvironmentError('Unsupported platform')

    result = []
    for port in ports:
        try:
            s = serial.Serial(port)
            s.close()
            result.append(port)
        except (OSError, serial.SerialException):
            pass
    return result

This returns the following:

['COM1', 'COM4', 'COM8']

So unlike the first example, where the result was [‘COM7’, ‘COM1’, ‘COM8’, ‘COM4’], this time I get all of the com ports in order, and only the ones available. Very handy if you need them in order, and tested to see if they’re available.

How would I go about viewing a list of COM ports in use without the use of Device Manager?

I don’t want to install any software either. Is there a possible way to do this through the command line?

Peter Mortensen's user avatar

asked Nov 4, 2014 at 16:24

Marmstrong's user avatar

5

In the command prompt use

mode

Used without parameters, mode displays all the controllable attributes of the CON (console) and the available COM devices (and LPT as well).

Accepts /? switch for basic help:

mode /?

answered Nov 5, 2014 at 15:45

JosefZ's user avatar

JosefZJosefZ

12.7k5 gold badges36 silver badges67 bronze badges

2

I know the question has been answered, but this is another method.

In command prompt, use:
chgport
in windows Vista and up. Lists your ports and which device they are.

answered Nov 25, 2016 at 12:22

Thomas Larsen's user avatar

8

In the command prompt use:

C:>wmic path Win32_SerialPort

In PowerShell, run as administrator:

PS> Get-WMIObject Win32_SerialPort | Select-Object Name,DeviceID,Description

Or, for raw data:

PS> Get-WMIObject Win32_SerialPort

Hope this helps.

Nick Bolton's user avatar

Nick Bolton

3,3109 gold badges37 silver badges50 bronze badges

answered Nov 4, 2014 at 16:39

vembutech's user avatar

vembutechvembutech

6,2001 gold badge19 silver badges21 bronze badges

6

Using mode most of the time I don’t see the devices that are not connected.

I prefer to use this solution with Python:

python -c "import serial.tools.list_ports as ls; print([p.device for p in ls.comports()])"

So I can see anything plugged in even if the connection is closed.

serial.tools.list_ports is from package pyserial.

MartyMacGyver's user avatar

answered Jul 5, 2018 at 13:50

G M's user avatar

G MG M

2835 silver badges14 bronze badges

2

wmic https://docs.microsoft.com/en-us/windows/desktop/wmisdk/wmic is a
windows command line utility to get system information.

If your serial port is virtual created by some driver through USB connection, use this example to get details about these serial ports.

wmic path CIM_LogicalDevice where "Description like 'USB Serial%'" get /value

answered Nov 16, 2018 at 16:06

GLampros's user avatar

GLamprosGLampros

711 silver badge4 bronze badges

2

The snippet below lists serial ports into the $PORTS variable

# BASH MSYS2
# This function will get a list of ports automatically
PORTS=`/c/Windows/System32/mode.com | grep Status.*COM | awk '{ print $4 }' | sed s/://`

# To the list (use) the ports, see the code below:

echo -n "Programming (echoing) ports: "
for aa in $PORTS; do
    echo -n $aa
done
echo ""

Dan Henderson's user avatar

answered Jan 7, 2019 at 21:09

Peter Glen's user avatar

1

One thing to note, codes like this:

for i in serial.tools.list_ports.comports():
print(i) 

Return the following:

COM7 - Standard Serial over Bluetooth link (COM7) COM1 - Communications Port (COM1) COM8 - Standard Serial over Bluetooth link (COM8) COM4 - USB-SERIAL CH340 (COM4)

If you want the ports listed in order, and only the ones available to you, try:(credit to tfeldmann)

   def serial_ports():
    """ Lists serial port names

        :raises EnvironmentError:
            On unsupported or unknown platforms
        :returns:
            A list of the serial ports available on the system
    """
    if sys.platform.startswith('win'):
        ports = ['COM%s' % (i + 1) for i in range(256)]
    elif sys.platform.startswith('linux') or sys.platform.startswith('cygwin'):
        # this excludes your current terminal "/dev/tty"
        ports = glob.glob('/dev/tty[A-Za-z]*')
    elif sys.platform.startswith('darwin'):
        ports = glob.glob('/dev/tty.*')
    else:
        raise EnvironmentError('Unsupported platform')

    result = []
    for port in ports:
        try:
            s = serial.Serial(port)
            s.close()
            result.append(port)
        except (OSError, serial.SerialException):
            pass
    return result

This returns the following:

['COM1', 'COM4', 'COM8']

So unlike the first example, where the result was [‘COM7’, ‘COM1’, ‘COM8’, ‘COM4’], this time I get all of the com ports in order, and only the ones available. Very handy if you need them in order, and tested to see if they’re available.

Добавить комментарий