slmp-connect-python 1.1.0__tar.gz → 1.1.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {slmp_connect_python-1.1.0/slmp_connect_python.egg-info → slmp_connect_python-1.1.1}/PKG-INFO +1 -1
- {slmp_connect_python-1.1.0 → slmp_connect_python-1.1.1}/README.md +3 -3
- {slmp_connect_python-1.1.0 → slmp_connect_python-1.1.1}/pyproject.toml +1 -1
- {slmp_connect_python-1.1.0 → slmp_connect_python-1.1.1}/slmp/error_codes.py +45 -45
- {slmp_connect_python-1.1.0 → slmp_connect_python-1.1.1/slmp_connect_python.egg-info}/PKG-INFO +1 -1
- {slmp_connect_python-1.1.0 → slmp_connect_python-1.1.1}/LICENSE +0 -0
- {slmp_connect_python-1.1.0 → slmp_connect_python-1.1.1}/MANIFEST.in +0 -0
- {slmp_connect_python-1.1.0 → slmp_connect_python-1.1.1}/setup.cfg +0 -0
- {slmp_connect_python-1.1.0 → slmp_connect_python-1.1.1}/slmp/__init__.py +0 -0
- {slmp_connect_python-1.1.0 → slmp_connect_python-1.1.1}/slmp/_operations.py +0 -0
- {slmp_connect_python-1.1.0 → slmp_connect_python-1.1.1}/slmp/async_client.py +0 -0
- {slmp_connect_python-1.1.0 → slmp_connect_python-1.1.1}/slmp/cli.py +0 -0
- {slmp_connect_python-1.1.0 → slmp_connect_python-1.1.1}/slmp/client.py +0 -0
- {slmp_connect_python-1.1.0 → slmp_connect_python-1.1.1}/slmp/constants.py +0 -0
- {slmp_connect_python-1.1.0 → slmp_connect_python-1.1.1}/slmp/core.py +0 -0
- {slmp_connect_python-1.1.0 → slmp_connect_python-1.1.1}/slmp/device_ranges.py +0 -0
- {slmp_connect_python-1.1.0 → slmp_connect_python-1.1.1}/slmp/errors.py +0 -0
- {slmp_connect_python-1.1.0 → slmp_connect_python-1.1.1}/slmp/py.typed +0 -0
- {slmp_connect_python-1.1.0 → slmp_connect_python-1.1.1}/slmp/utils.py +0 -0
- {slmp_connect_python-1.1.0 → slmp_connect_python-1.1.1}/slmp_connect_python.egg-info/SOURCES.txt +0 -0
- {slmp_connect_python-1.1.0 → slmp_connect_python-1.1.1}/slmp_connect_python.egg-info/dependency_links.txt +0 -0
- {slmp_connect_python-1.1.0 → slmp_connect_python-1.1.1}/slmp_connect_python.egg-info/entry_points.txt +0 -0
- {slmp_connect_python-1.1.0 → slmp_connect_python-1.1.1}/slmp_connect_python.egg-info/requires.txt +0 -0
- {slmp_connect_python-1.1.0 → slmp_connect_python-1.1.1}/slmp_connect_python.egg-info/top_level.txt +0 -0
|
@@ -41,9 +41,9 @@ asyncio.run(main())
|
|
|
41
41
|
| Page | Use it for |
|
|
42
42
|
| --- | --- |
|
|
43
43
|
| [Full documentation site](https://fa-yoshinobu.github.io/plc-comm-docs-site/) | Unified docs for all PLC communication libraries. |
|
|
44
|
-
| [Getting started](docsrc/user/GETTING_STARTED.md) | Install the package, connect to your PLC, and run your first SLMP read/write. |
|
|
45
|
-
| [Usage guide](docsrc/user/USAGE_GUIDE.md) | Use the high-level API and common SLMP workflows. |
|
|
46
|
-
| [Supported registers](docsrc/user/SUPPORTED_REGISTERS.md) | Check supported device families, address syntax, and numbering rules. |
|
|
44
|
+
| [Getting started](docsrc/user/GETTING_STARTED.md) | Install the package, connect to your PLC, and run your first SLMP read/write. |
|
|
45
|
+
| [Usage guide](docsrc/user/USAGE_GUIDE.md) | Use the high-level API and common SLMP workflows. |
|
|
46
|
+
| [Supported registers](docsrc/user/SUPPORTED_REGISTERS.md) | Check supported device families, address syntax, and numbering rules. |
|
|
47
47
|
| [PLC profiles](docsrc/user/PROFILES.md) | Choose the canonical MELSEC profile and frame behavior. |
|
|
48
48
|
| [Examples](samples/README.md) | Run maintained Python samples. |
|
|
49
49
|
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "slmp-connect-python"
|
|
7
|
-
version = "1.1.
|
|
7
|
+
version = "1.1.1"
|
|
8
8
|
description = "SLMP Connect Python: client library for MELSEC SLMP binary communication"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
@@ -1,45 +1,45 @@
|
|
|
1
|
-
"""SLMP end-code keys and categories."""
|
|
2
|
-
|
|
3
|
-
from __future__ import annotations
|
|
4
|
-
|
|
5
|
-
from typing import Literal
|
|
6
|
-
|
|
7
|
-
SlmpEndCodeLanguage = Literal["en", "ja"]
|
|
8
|
-
|
|
9
|
-
_REMOTE_PASSWORD_END_CODES = {
|
|
10
|
-
0xC200,
|
|
11
|
-
0xC201,
|
|
12
|
-
0xC202,
|
|
13
|
-
0xC203,
|
|
14
|
-
0xC204,
|
|
15
|
-
0xC205,
|
|
16
|
-
0xC810,
|
|
17
|
-
0xC811,
|
|
18
|
-
0xC812,
|
|
19
|
-
0xC813,
|
|
20
|
-
0xC814,
|
|
21
|
-
0xC815,
|
|
22
|
-
0xC816,
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
def get_end_code_name(end_code: int) -> str:
|
|
27
|
-
"""Return the stable code-derived key for an SLMP end code."""
|
|
28
|
-
return f"slmp_end_code_{int(end_code) & 0xFFFF:04x}"
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
def get_end_code_message(end_code: int, language: SlmpEndCodeLanguage = "en") -> str | None:
|
|
32
|
-
"""Return a user-facing message for an SLMP end code.
|
|
33
|
-
|
|
34
|
-
Localized message text is not embedded in this package. Resolve
|
|
35
|
-
get_end_code_name(end_code) in an application-owned catalog when text is
|
|
36
|
-
required.
|
|
37
|
-
"""
|
|
38
|
-
_ = end_code
|
|
39
|
-
_ = language
|
|
40
|
-
return None
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
def is_remote_password_end_code(end_code: int) -> bool:
|
|
44
|
-
"""Return True if the SLMP end code is related to remote password protection."""
|
|
45
|
-
return (int(end_code) & 0xFFFF) in _REMOTE_PASSWORD_END_CODES
|
|
1
|
+
"""SLMP end-code keys and categories."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import Literal
|
|
6
|
+
|
|
7
|
+
SlmpEndCodeLanguage = Literal["en", "ja"]
|
|
8
|
+
|
|
9
|
+
_REMOTE_PASSWORD_END_CODES = {
|
|
10
|
+
0xC200,
|
|
11
|
+
0xC201,
|
|
12
|
+
0xC202,
|
|
13
|
+
0xC203,
|
|
14
|
+
0xC204,
|
|
15
|
+
0xC205,
|
|
16
|
+
0xC810,
|
|
17
|
+
0xC811,
|
|
18
|
+
0xC812,
|
|
19
|
+
0xC813,
|
|
20
|
+
0xC814,
|
|
21
|
+
0xC815,
|
|
22
|
+
0xC816,
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def get_end_code_name(end_code: int) -> str:
|
|
27
|
+
"""Return the stable code-derived key for an SLMP end code."""
|
|
28
|
+
return f"slmp_end_code_{int(end_code) & 0xFFFF:04x}"
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def get_end_code_message(end_code: int, language: SlmpEndCodeLanguage = "en") -> str | None:
|
|
32
|
+
"""Return a user-facing message for an SLMP end code.
|
|
33
|
+
|
|
34
|
+
Localized message text is not embedded in this package. Resolve
|
|
35
|
+
get_end_code_name(end_code) in an application-owned catalog when text is
|
|
36
|
+
required.
|
|
37
|
+
"""
|
|
38
|
+
_ = end_code
|
|
39
|
+
_ = language
|
|
40
|
+
return None
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def is_remote_password_end_code(end_code: int) -> bool:
|
|
44
|
+
"""Return True if the SLMP end code is related to remote password protection."""
|
|
45
|
+
return (int(end_code) & 0xFFFF) in _REMOTE_PASSWORD_END_CODES
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{slmp_connect_python-1.1.0 → slmp_connect_python-1.1.1}/slmp_connect_python.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{slmp_connect_python-1.1.0 → slmp_connect_python-1.1.1}/slmp_connect_python.egg-info/requires.txt
RENAMED
|
File without changes
|
{slmp_connect_python-1.1.0 → slmp_connect_python-1.1.1}/slmp_connect_python.egg-info/top_level.txt
RENAMED
|
File without changes
|