# ntrexlab usb2can vcp 파이썬 CAN 인터페이스
이 모듈은 ntrexlab의 usb2can VCP제품을 파이썬으로 can모듈을 사용하기 위해서 작성된 인터페이스 모듈입니다.
ntrexlab에서는 자체툴만 제공해서 임의로 제작되었습니다. 필요에 의해서 작성한 모듈이기 때문에 업데이트가 느릴 수 있습니다.
## ntrexlab usb2can VCP
> MW USB2CAN(VCP) 소개
>> MW USB2CAN(VCP)는 한 개 포트의 CAN 프로토콜을 USB의 VCP(Virtual COM Port) 프로토콜로 변환하는 장치입니다. FT232 칩을 사용하여 USB와 MCU간 비동기 시리얼 데이터를 주고받는 형태로 데이터 전송률은 최대 300K byte/second입니다
<strong>FIFO 제품은 갖고 있는게 없어서 구현하지 않습니다.</strong>
### MW USB2CAN(VCP) 특징
* 속도가 느림
* CAN Bus의 속도는 1M까지 가능하지만 변경과정에서 병목현상이 발생함
* 예외로 Send 후 딜레이처리 필요(변환 과정)
* CAN bus의 모니터링이 가능함
* 초기화 과정에서 통신 설정 필요
* 전문 송수신에 STX와 ETX가 필요
### MW USB2CAN(VCP) 초기화 구현
메세지 송수신여부, 복구방식, 통신속도를 지정하였습니다.
## 요구사항
Python 3.10 이상을 사용하여야 합니다. (match-case 사용, match-case를 if-elif 문으로 변경하여 사용이 가능합니다.)
pyserial
python-can
## 설치
```
pip install python_ntrexlab_usb2can_vcp
```
## 사용
```
import can
from ntrexlab_usb2can_vcp import MW_USB2CAN_VCP
bus = can.Bus(interface="mw_usb2can_vcp", channel="COM11", bitrate=500000)
```
## 그 밖에
* 해외 판매는 안하는 것 같아서 한글로만 작성합니다.
* USB2CAN 제품 중에 저렴한 제품이 적어서 모듈을 직접 작성했습니다. 마스터 용으로는 사용해도 좋지만 슬레이브로는 사용을 지양합니다.(변환 과정 및 지연 시간으로 누락이 발생됩니다.)
Raw data
{
"_id": null,
"home_page": "https://github.com/ckdo8008/python_ntrexlab_usb2can_vcp",
"name": "python-ntrexlab-usb2can-vcp",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": null,
"keywords": null,
"author": "changu",
"author_email": "ckdo8008@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/04/ff/8fc45e6c6eb4893bb4286abe6e37abf17665f6ca816fd2b6c7afaeecb695/python_ntrexlab_usb2can_vcp-0.0.7.tar.gz",
"platform": null,
"description": "# ntrexlab usb2can vcp \ud30c\uc774\uc36c CAN \uc778\ud130\ud398\uc774\uc2a4\n\uc774 \ubaa8\ub4c8\uc740 ntrexlab\uc758 usb2can VCP\uc81c\ud488\uc744 \ud30c\uc774\uc36c\uc73c\ub85c can\ubaa8\ub4c8\uc744 \uc0ac\uc6a9\ud558\uae30 \uc704\ud574\uc11c \uc791\uc131\ub41c \uc778\ud130\ud398\uc774\uc2a4 \ubaa8\ub4c8\uc785\ub2c8\ub2e4.\nntrexlab\uc5d0\uc11c\ub294 \uc790\uccb4\ud234\ub9cc \uc81c\uacf5\ud574\uc11c \uc784\uc758\ub85c \uc81c\uc791\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \ud544\uc694\uc5d0 \uc758\ud574\uc11c \uc791\uc131\ud55c \ubaa8\ub4c8\uc774\uae30 \ub54c\ubb38\uc5d0 \uc5c5\ub370\uc774\ud2b8\uac00 \ub290\ub9b4 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\n\n## ntrexlab usb2can VCP\n\n> MW USB2CAN(VCP) \uc18c\uac1c\n>> MW USB2CAN(VCP)\ub294 \ud55c \uac1c \ud3ec\ud2b8\uc758 CAN \ud504\ub85c\ud1a0\ucf5c\uc744 USB\uc758 VCP(Virtual COM Port) \ud504\ub85c\ud1a0\ucf5c\ub85c \ubcc0\ud658\ud558\ub294 \uc7a5\uce58\uc785\ub2c8\ub2e4. FT232 \uce69\uc744 \uc0ac\uc6a9\ud558\uc5ec USB\uc640 MCU\uac04 \ube44\ub3d9\uae30 \uc2dc\ub9ac\uc5bc \ub370\uc774\ud130\ub97c \uc8fc\uace0\ubc1b\ub294 \ud615\ud0dc\ub85c \ub370\uc774\ud130 \uc804\uc1a1\ub960\uc740 \ucd5c\ub300 300K byte/second\uc785\ub2c8\ub2e4\n\n<strong>FIFO \uc81c\ud488\uc740 \uac16\uace0 \uc788\ub294\uac8c \uc5c6\uc5b4\uc11c \uad6c\ud604\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.</strong>\n\n### MW USB2CAN(VCP) \ud2b9\uc9d5\n* \uc18d\ub3c4\uac00 \ub290\ub9bc\n* CAN Bus\uc758 \uc18d\ub3c4\ub294 1M\uae4c\uc9c0 \uac00\ub2a5\ud558\uc9c0\ub9cc \ubcc0\uacbd\uacfc\uc815\uc5d0\uc11c \ubcd1\ubaa9\ud604\uc0c1\uc774 \ubc1c\uc0dd\ud568\n * \uc608\uc678\ub85c Send \ud6c4 \ub51c\ub808\uc774\ucc98\ub9ac \ud544\uc694(\ubcc0\ud658 \uacfc\uc815)\n* CAN bus\uc758 \ubaa8\ub2c8\ud130\ub9c1\uc774 \uac00\ub2a5\ud568\n* \ucd08\uae30\ud654 \uacfc\uc815\uc5d0\uc11c \ud1b5\uc2e0 \uc124\uc815 \ud544\uc694\n* \uc804\ubb38 \uc1a1\uc218\uc2e0\uc5d0 STX\uc640 ETX\uac00 \ud544\uc694\n\n### MW USB2CAN(VCP) \ucd08\uae30\ud654 \uad6c\ud604\n\uba54\uc138\uc9c0 \uc1a1\uc218\uc2e0\uc5ec\ubd80, \ubcf5\uad6c\ubc29\uc2dd, \ud1b5\uc2e0\uc18d\ub3c4\ub97c \uc9c0\uc815\ud558\uc600\uc2b5\ub2c8\ub2e4.\n\n## \uc694\uad6c\uc0ac\ud56d\nPython 3.10 \uc774\uc0c1\uc744 \uc0ac\uc6a9\ud558\uc5ec\uc57c \ud569\ub2c8\ub2e4. (match-case \uc0ac\uc6a9, match-case\ub97c if-elif \ubb38\uc73c\ub85c \ubcc0\uacbd\ud558\uc5ec \uc0ac\uc6a9\uc774 \uac00\ub2a5\ud569\ub2c8\ub2e4.)\npyserial\npython-can\n\n## \uc124\uce58\n```\npip install python_ntrexlab_usb2can_vcp\n```\n\n## \uc0ac\uc6a9\n```\nimport can\nfrom ntrexlab_usb2can_vcp import MW_USB2CAN_VCP\n\nbus = can.Bus(interface=\"mw_usb2can_vcp\", channel=\"COM11\", bitrate=500000)\n```\n\n## \uadf8 \ubc16\uc5d0\n* \ud574\uc678 \ud310\ub9e4\ub294 \uc548\ud558\ub294 \uac83 \uac19\uc544\uc11c \ud55c\uae00\ub85c\ub9cc \uc791\uc131\ud569\ub2c8\ub2e4.\n* USB2CAN \uc81c\ud488 \uc911\uc5d0 \uc800\ub834\ud55c \uc81c\ud488\uc774 \uc801\uc5b4\uc11c \ubaa8\ub4c8\uc744 \uc9c1\uc811 \uc791\uc131\ud588\uc2b5\ub2c8\ub2e4. \ub9c8\uc2a4\ud130 \uc6a9\uc73c\ub85c\ub294 \uc0ac\uc6a9\ud574\ub3c4 \uc88b\uc9c0\ub9cc \uc2ac\ub808\uc774\ube0c\ub85c\ub294 \uc0ac\uc6a9\uc744 \uc9c0\uc591\ud569\ub2c8\ub2e4.(\ubcc0\ud658 \uacfc\uc815 \ubc0f \uc9c0\uc5f0 \uc2dc\uac04\uc73c\ub85c \ub204\ub77d\uc774 \ubc1c\uc0dd\ub429\ub2c8\ub2e4.)\n",
"bugtrack_url": null,
"license": null,
"summary": "\uc774 \ubaa8\ub4c8\uc740 ntrexlab\uc758 usb2can VCP\uc81c\ud488\uc744 \ud30c\uc774\uc36c\uc73c\ub85c can\ubaa8\ub4c8\uc744 \uc0ac\uc6a9\ud558\uae30 \uc704\ud574\uc11c \uc791\uc131\ub41c \uc778\ud130\ud398\uc774\uc2a4 \ubaa8\ub4c8\uc785\ub2c8\ub2e4.",
"version": "0.0.7",
"project_urls": {
"Homepage": "https://github.com/ckdo8008/python_ntrexlab_usb2can_vcp"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "b7746071ea5bc12b8ad62f7acde4b95ddf6959297ef3c6a1729a60efc757de71",
"md5": "a9e6032bdbbf8fa775a945022fc65728",
"sha256": "abe109ae24cd75ee2d7f450af8c789e782bcc82ef867da87b01dab883bb26cb4"
},
"downloads": -1,
"filename": "python_ntrexlab_usb2can_vcp-0.0.7-py3-none-any.whl",
"has_sig": false,
"md5_digest": "a9e6032bdbbf8fa775a945022fc65728",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 6844,
"upload_time": "2024-08-07T01:36:01",
"upload_time_iso_8601": "2024-08-07T01:36:01.020380Z",
"url": "https://files.pythonhosted.org/packages/b7/74/6071ea5bc12b8ad62f7acde4b95ddf6959297ef3c6a1729a60efc757de71/python_ntrexlab_usb2can_vcp-0.0.7-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "04ff8fc45e6c6eb4893bb4286abe6e37abf17665f6ca816fd2b6c7afaeecb695",
"md5": "31429f231f233acc4546e5b14cc1d142",
"sha256": "e089919feab3df15ddc3ab3b3515350d575df64f8575e27f41f3e4b0e8515e96"
},
"downloads": -1,
"filename": "python_ntrexlab_usb2can_vcp-0.0.7.tar.gz",
"has_sig": false,
"md5_digest": "31429f231f233acc4546e5b14cc1d142",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 6538,
"upload_time": "2024-08-07T01:36:01",
"upload_time_iso_8601": "2024-08-07T01:36:01.808248Z",
"url": "https://files.pythonhosted.org/packages/04/ff/8fc45e6c6eb4893bb4286abe6e37abf17665f6ca816fd2b6c7afaeecb695/python_ntrexlab_usb2can_vcp-0.0.7.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-08-07 01:36:01",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "ckdo8008",
"github_project": "python_ntrexlab_usb2can_vcp",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "python-can",
"specs": [
[
"==",
"4.4.2"
]
]
},
{
"name": "pyserial",
"specs": [
[
"==",
"3.5"
]
]
}
],
"lcname": "python-ntrexlab-usb2can-vcp"
}