串行到套接字桥接器
项目描述
ser2sock
一个单线程、多串行行到TCP桥接服务器。
可在python 2.6至3.x(已测试3.8)下运行。
安装
在你的Python环境中
pip install ser2sock
使用方法
ser2sock -c <configuration file>
配置
为了提供灵活性,配置是用Python编写的。
唯一的要求是有一个bridges
成员,它由一系列桥组成。一个桥是一个包含强制键serial
和tcp
的字典。
示例
bridges = [
{
'serial': {'port': '/dev/ttyS0'},
'tcp': {'address': ("0", 18500)}
},
{
'serial': {'port': '/dev/ttyS1', 'baudrate': 19200},
'tcp': {'address': ("0", 18501), 'no_delay': False}
}
]
serial
:port
强制。支持serial.serial_for_url
(或如果不存在serial_for_url
则支持serial.Serial
)所支持的任何关键字。tcp
:address
强制(必须是绑定主机和端口的配对)。reuse_addr
:(默认:True)TCP重用地址no_delay
:(默认:True)禁用Nagle算法tos
:(默认:0x10
,表示低延迟)服务类型。
tcp
和 serial
辅助器会自动加载到配置命名空间中。以下是使用辅助器的等效配置:
bridges = [
[serial(port="/dev/ttyS0"), tcp(address=("0", 18500))],
[serial(port="/dev/ttyS1", baudrate=19200),
tcp(address=("0", 18501), no_delay=False)],
]
您可以在您的 Python 配置文件中放置任何代码。以下是一个设置日志的示例:
import logging
logging.basicConfig(
level=logging.DEBUG,
format='%(asctime)s %(levelname)s %(message)s'
)
bridges = [
[serial(port="/dev/ttyS0"), tcp(address=("0", 18500))],
[serial(port="/dev/ttyS1", baudrate=19200),
tcp(address=("0", 18501), no_delay=False)],
]
Web 用户界面
可以通过 Web 用户界面在线更改活动配置。
要启用 Web,您需要安装额外的包。
$ pip install ser2sock[web]
...并在配置中启用 Web 应用程序:
bridges = [...]
web = ':8000'
ser2sock 现在应该在这里可见 这里。
您应该看到如下内容:
请注意,使用 Web 界面进行的更改仅影响活动 ser2sock 实例,永远不会影响原始配置文件。
测试
应该在 Python 3.5 或更高版本的环境中执行测试。
$ python setup.py test
running pytest
Searching for pytest-asyncio
Best match: pytest-asyncio 0.14.0
Processing pytest_asyncio-0.14.0-py3.7.egg
Using /home/tcoutinho/workspace/ser2sock/.eggs/pytest_asyncio-0.14.0-py3.7.egg
Searching for pytest-cov
Best match: pytest-cov 2.10.0
Processing pytest_cov-2.10.0-py3.7.egg
Using /home/tcoutinho/workspace/ser2sock/.eggs/pytest_cov-2.10.0-py3.7.egg
running egg_info
writing ser2sock.egg-info/PKG-INFO
writing dependency_links to ser2sock.egg-info/dependency_links.txt
writing entry points to ser2sock.egg-info/entry_points.txt
writing requirements to ser2sock.egg-info/requires.txt
writing top-level names to ser2sock.egg-info/top_level.txt
reading manifest file 'ser2sock.egg-info/SOURCES.txt'
writing manifest file 'ser2sock.egg-info/SOURCES.txt'
running build_ext
==================================== test session starts =====================================
platform linux -- Python 3.7.7, pytest-5.4.3, py-1.9.0, pluggy-0.13.1 -- /home/tcoutinho/miniconda/envs/py37/bin/python
cachedir: .pytest_cache
rootdir: /home/tcoutinho/workspace/ser2sock, inifile: setup.cfg
plugins: cov-2.10.0, asyncio-0.14.0
collected 8 items
tests/test_ser2sock.py::test_load_config PASSED [ 12%]
tests/test_ser2sock.py::test_web_server PASSED [ 25%]
tests/test_ser2sock.py::test_server PASSED [ 37%]
tests/test_ser2sock.py::test_server_no_serial PASSED [ 50%]
tests/test_ser2sock.py::test_server_serial_close_after_success PASSED [ 62%]
tests/test_ser2sock.py::test_server_no_client PASSED [ 75%]
tests/test_ser2sock.py::test_server_missing_argument PASSED [ 87%]
tests/test_ser2sock.py::test_2_clients_to_1_serial PASSED [100%]
----------- coverage: platform linux, python 3.7.7-final-0 -----------
Name Stmts Miss Cover
------------------------------------------
ser2sock/__init__.py 1 0 100%
ser2sock/server.py 321 56 83%
------------------------------------------
TOTAL 322 56 83%
Coverage HTML written to dir htmlcov
================================== slowest 2 test durations ==================================
0.02s call tests/test_ser2sock.py::test_server_no_client
0.02s setup tests/test_ser2sock.py::test_web_server
===================================== 8 passed in 0.30s ======================================
这就是全部了!
项目详情
关闭
ser2sock-4.1.2.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 84562f8b9b30fa62b40355790b7e4631c73a33811dfe60c06a751c1ac1cc6aed |
|
MD5 | 756616894a7d737362d2a9db0e877093 |
|
BLAKE2b-256 | b409826c3b72e133073af8447c0a2a854f74dfbf645327931cb77f52b9176a43 |