博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python-can 的使用
阅读量:6151 次
发布时间:2019-06-21

本文共 2283 字,大约阅读时间需要 7 分钟。

  • 最近在搞 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"); '''

转载地址:http://wuwfa.baihongyu.com/

你可能感兴趣的文章
ajax查询数据库时数据无法更新的问题
查看>>
Kickstart 无人职守安装,终于搞定了。
查看>>
linux开源万岁
查看>>
linux/CentOS6忘记root密码解决办法
查看>>
25个常用的Linux iptables规则
查看>>
集中管理系统--puppet
查看>>
分布式事务最终一致性常用方案
查看>>
Exchange 2013 PowerShell配置文件
查看>>
JavaAPI详解系列(1):String类(1)
查看>>
HTML条件注释判断IE<!--[if IE]><!--[if lt IE 9]>
查看>>
发布和逸出-构造过程中使this引用逸出
查看>>
Oracle执行计划发生过变化的SQL语句脚本
查看>>
使用SanLock建立简单的HA服务
查看>>
发现一个叫阿尔法城的小站(以后此贴为我记录日常常用网址的帖子了)
查看>>
Subversion使用Redmine帐户验证简单应用、高级应用以及优化
查看>>
Javascript Ajax 异步请求
查看>>
DBCP连接池
查看>>
cannot run programing "db2"
查看>>
mysql做主从relay-log问题
查看>>
Docker镜像与容器命令
查看>>