python-can 的使用
- 最近在搞 websocket, 服务端是用 python 写的,所以,我需要用python 控制 can 去传输相关信息。
- python-can 模块就是 python 控制 can 的模仿。
- 利用 buildroot 去生成 python-can 模块
    cd  $BUILDROOT_PATH
    make menuconfig
    Target packages  --->
        Interpreter languages and scripting  --->
            [*] python3
                External python modules  --->
                    [*] python-can 
    make
    // 生成的文件在   output/target/usr/lib/python3.5/site-packages/
    //  将这个文件 拷贝到自己的文件系统的 ust/lib/python3.5 里面
- python-can 文档地址:
    https://python-can.readthedocs.io/en/latest/index.html#
- python-can 的使用
    #!/usr/bin/python3
    import os;    '''  这是加载 os 模块, 调用shell 命令 '''
    import can;      '''  加载python-can 模块 '''
    can.rc['interface'] = 'socketcan_native'   ```  Linux 里面的 socketcan 在am335x 上面应该使用这个 ```
    can.rc['channel'] = 'can1'                  ''' can 接口名字  '''
    can.rc['bitrate'] = 1000000                ''' 波特率       1M '''
    from can.interfaces.interface import Bus
    '''  这个函数是can 的启动函数 '''
    def can_setup(can_name):
        can_setup_command = "canconfig " + can_name + " bitrate 1000000 restart-ms 1000 ctrlmode triple-sampling on";
        can_start_command = "canconfig " + can_name + " start";
        pass;
        os.system(can_setup_command);
        os.system(can_start_command);
    '''  can 停止函数  '''
    def can_stop(can_name):
        can_stop_command = "canconfig " + can_name + " stop";
        os.system(can_stop_command);
    '''   发送信息 '''
    def send_one():
        bus = can.interface.Bus();
        msg = can.Message(arbitration_id=0x7f,
                data=[11, 25, 11, 1, 1, 2, 23, 18],
                extended_id=False);
        try:
            bus.send(msg);   ''' 发送信息 '''
            print("Message sent on {}".format(bus.channel_info));
        except can.CanError:
            print("Message NOT sent");
    def recv():
        bus = can.interface.Bus();
        msg = bus.recv(100);   ''' 接收信息 '''
        try:
            bus.send(msg);
            print(msg);
            print(msg.data[0]);              #  接收回来的第一个字节的数据
            print(msg.arbitration_id);    # 接收回来的ID
            return msg;
        except can.CanError:
            print("Message NOT sent");
    if __name__ == "__main__":
        '''   can_setup("can1"); '''
        send_one();
        recv();
        ''' can_stop("can1"); '''
python-can 的使用的更多相关文章
- Python中的多进程与多线程(一)
		一.背景 最近在Azkaban的测试工作中,需要在测试环境下模拟线上的调度场景进行稳定性测试.故而重操python旧业,通过python编写脚本来构造类似线上的调度场景.在脚本编写过程中,碰到这样一个 ... 
- Python高手之路【六】python基础之字符串格式化
		Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ... 
- Python 小而美的函数
		python提供了一些有趣且实用的函数,如any all zip,这些函数能够大幅简化我们得代码,可以更优雅的处理可迭代的对象,同时使用的时候也得注意一些情况 any any(iterable) ... 
- JavaScript之父Brendan Eich,Clojure 创建者Rich Hickey,Python创建者Van Rossum等编程大牛对程序员的职业建议
		软件开发是现时很火的职业.据美国劳动局发布的一项统计数据显示,从2014年至2024年,美国就业市场对开发人员的需求量将增长17%,而这个增长率比起所有职业的平均需求量高出了7%.很多人年轻人会选择编 ... 
- 可爱的豆子——使用Beans思想让Python代码更易维护
		title: 可爱的豆子--使用Beans思想让Python代码更易维护 toc: false comments: true date: 2016-06-19 21:43:33 tags: [Pyth ... 
- 使用Python保存屏幕截图(不使用PIL)
		起因 在极客学院讲授<使用Python编写远程控制程序>的课程中,涉及到查看被控制电脑屏幕截图的功能. 如果使用PIL,这个需求只需要三行代码: from PIL import Image ... 
- Python编码记录
		字节流和字符串 当使用Python定义一个字符串时,实际会存储一个字节串: "abc"--[97][98][99] python2.x默认会把所有的字符串当做ASCII码来对待,但 ... 
- Apache执行Python脚本
		由于经常需要到服务器上执行些命令,有些命令懒得敲,就准备写点脚本直接浏览器调用就好了,比如这样: 因为线上有现成的Apache,就直接放它里面了,当然访问安全要设置,我似乎别的随笔里写了安全问题,这里 ... 
- python开发编译器
		引言 最近刚刚用python写完了一个解析protobuf文件的简单编译器,深感ply实现词法分析和语法分析的简洁方便.乘着余热未过,头脑清醒,记下一点总结和心得,方便各位pythoner参考使用. ... 
- 关于解决python线上问题的几种有效技术
		工作后好久没上博客园了,虽然不是很忙,但也没学生时代闲了.今天上博客园,发现好多的文章都是年终总结,想想是不是自己也应该总结下,不过现在还没想好,等想好了再写吧.今天写写自己在工作后用到的技术干货,争 ... 
随机推荐
- python标准日志模块logging的使用方法
			参考地址 最近写一个爬虫系统,需要用到python的日志记录模块,于是便学习了一下.python的标准库里的日志系统从Python2.3开始支持.只要import logging这个模块即可使用.如果 ... 
- android开发学习之ViewPager滑动事件讲解
			android ViewPager滑动事件讲解 今天在做项目的时候,由于要处理viewPager页面滑动的事件,所以对其进行了一个小小的研究: 首先ViewPager在处理滑动事件的时候要用到OnPa ... 
- jQuery动态网格瀑布流插件Masonry
			Masonry是一款非常强大的jQuery动态网格布局插件,可以帮助开发人员快速开发瀑布流界面效果.和CSS中float的效果不太一样的地方在于,float先水平排列,然后再垂直排列,使用Masonr ... 
- 百度UEditor富文本编辑器去除过滤div等标签
			将设计排版好的页面html代码上传到数据库,再读取出来的时候发现所有的div都被替换成了p标签. 解决方法: 首先在ueditor.all.js文件内搜索allowDivTransToP,找到如下的代 ... 
- 【Linux】撷取命令grep
			什么是撷取命令啊?说穿了,就是将一段数据经过分析后,取出我们所想要的.或者是经由分析关键词,取得我们所想要的那一行! 不过,要注意的是,一般来说,撷取信息通常是针对『一行一行』来分析的, 并不是整篇信 ... 
- C#实现foreach
			方法:一.继承既有的接口 如:CollectionBase.DictionaryBase class TestForeach: CollectionBase { public void Add(str ... 
- Linux内核配置解析 - 概述(基于ARM64架构)
			1. 前言 对刚接触Linux kernel的同学来说,遇到的第一个问题就是:我该从哪里入手?. 话说Linux kernel的打开方式是多种多样的:从简单的设备驱动入手:从源代码的目录结构入手:从k ... 
- java中你确定用对单例了吗?
			作为程序员这样的特殊物种来说,都掌握了一种特殊能力就是编程思想,逻辑比較慎重,可是有时候总会忽略到一些细节,比方我,一直以来总认为Singleton是设计模式里最简单的,不用太在意,然而就是由于这样的 ... 
- unity, mesh Collider
			关闭mesh Renderer以便查看mesh Collider "For Unity 5, we must also select "Convex" on the Me ... 
- Opening Default document on IIS (HTML With WebAPI)
			Question: I've a deployed ASP.NET Web API with a website on the same folder that consume it. When I ... 
