Metadata-Version: 2.1
Name: gs_usb
Version: 0.2.6
Summary: Python Windows/Linux/Mac CAN driver based on usbfs or WinUSB WCID for Geschwister Schneider USB/CAN devices and candleLight USB CAN interfaces.
Home-page: https://github.com/jxltom/gs_usb
Author: jxltom
Author-email: jxltom@gmail.com
License: MIT
Description: 
        # gs_usb
        
        Python Windows/Linux/Mac CAN driver based on usbfs or WinUSB WCID for Geschwister Schneider USB/CAN devices and candleLight USB CAN interfaces.
        
        ## Getting Started
        
        Install by ```pip install gs_usb```
        
        Below is a basic demo for CAN message sending and receiving.
        
        ```python
        import time
        
        from gs_usb.gs_usb import GsUsb
        from gs_usb.gs_usb_frame import GsUsbFrame
        from gs_usb.constants import (
            CAN_EFF_FLAG,
            CAN_ERR_FLAG,
            CAN_RTR_FLAG,
        )
        
        
        def main():
            # Find our device
            devs = GsUsb.scan()
            if len(devs) == 0:
                print("Can not find gs_usb device")
                return
            dev = devs[0]
        
            # Configuration
            if not dev.set_bitrate(250000):
                print("Can not set bitrate for gs_usb")
                return
        
            # Start device
            dev.start()
        
            # Prepare frames
            data = b"\x12\x34\x56\x78\x9A\xBC\xDE\xF0"
            sff_frame = GsUsbFrame(can_id=0x7FF, data=data)
            sff_none_data_frame = GsUsbFrame(can_id=0x7FF)
            err_frame = GsUsbFrame(can_id=0x7FF | CAN_ERR_FLAG, data=data)
            eff_frame = GsUsbFrame(can_id=0x12345678 | CAN_EFF_FLAG, data=data)
            eff_none_data_frame = GsUsbFrame(can_id=0x12345678 | CAN_EFF_FLAG)
            rtr_frame = GsUsbFrame(can_id=0x7FF | CAN_RTR_FLAG)
            rtr_with_eid_frame = GsUsbFrame(can_id=0x12345678 | CAN_RTR_FLAG | CAN_EFF_FLAG)
            rtr_with_data_frame = GsUsbFrame(can_id=0x7FF | CAN_RTR_FLAG, data=data)
            frames = [
                sff_frame,
                sff_none_data_frame,
                err_frame,
                eff_frame,
                eff_none_data_frame,
                rtr_frame,
                rtr_with_eid_frame,
                rtr_with_data_frame,
            ]
        
            # Read all the time and send message in each second
            end_time, n = time.time() + 1, -1
            while True:
                iframe = GsUsbFrame()
                if dev.read(iframe, 1):
                    print("RX  {}".format(iframe))
        
                if time.time() - end_time >= 0:
                    end_time = time.time() + 1
                    n += 1
                    n %= len(frames)
        
                    if dev.send(frames[n]):
                        print("TX  {}".format(frames[n]))
        
        
        if __name__ == "__main__":
            try:
                main()
            except KeyboardInterrupt:
                pass
        ```
        
Platform: UNKNOWN
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Description-Content-Type: text/markdown
