(二)Jetson Agx Xavier can使用

一、接线

根据can高,can低分别接线,我的根据手册就是31、32、33、34,瑞泰有两路can(可以短接自己测试,31连接33,32连接34)

注1:需要终端自己带120Ω电阻!

注2:用户需要有sudo权限

二、新建python文件

1、init.py 初始化can 设置波特率

import os
os.system('sudo modprobe can')
os.system('sudo modprobe can_raw')
os.system('sudo modprobe mttcan')
os.system('sudo ip link set can0 type can bitrate 500000')
os.system('sudo ip link set up can0')
os.system('sudo ip link set can1 type can bitrate 500000')
os.system('sudo ip link set up can1')

2、tx.py 发送can报文 需要更改msg的报文id,8字节数据,是否是标准帧

import time
import os
import can
import threading

can0 =can.interface.Bus(channel='can0',bustype='socketcan')
b0=0x10
b1=0x00
b2=0x00
b3=0x04
b4=0x00
b5=0x55
b6=0x20
b7=0x61
msg =can.Message(arbitration_id=0x469,data=[b0,b1,b2,b3,b4,b5,b6,b7],extended_id=False)
#msg =can.Message(arbitration_id=0x469,data=[0,1,2,3,4,5,6,7],extended_id=False)


can0.send(msg)
time.sleep(1)

3、rx.py 接收can报文 

import os
import time
import can
import threading
can0 = can.interface.Bus(channel='can0',bustype='socketcan')
while 1:
	msg=can0.recv()
	print(msg)

 4、over.py 用完之后关闭 

import os
os.system('sudo ip link set can0 down')
os.system('sudo ip link set can1 down')

5、restar.py 有时候会can崩溃 重启其实就是关了再打开,为了方便多写了一个

import os
import time
os.system('sudo ip link set can0 down')
os.system('sudo ip link set can1 down')
time.sleep(1)
os.system('sudo modprobe can')
os.system('sudo modprobe can_raw')
os.system('sudo modprobe mttcan')
os.system('sudo ip link set can0 type can bitrate 500000')
os.system('sudo ip link set up can0')
os.system('sudo ip link set can1 type can bitrate 500000')
os.system('sudo ip link set up can1')

三、测试完毕,根据自己的需求更改代码即可

项目需求线控转向,目前就是输入一个角度,控制他转到指定角度即可

import time
import os
import can
import threading
import sys
angle=0
if __name__=='__main__':
	can0 =can.interface.Bus(channel='can0',bustype='socketcan')
	angle = int(sys.argv[1]) + 1024
	b0=0x20
	b1=0x00
	b2=0x00
	b3=angle>>8
	b4=angle - (b3<<8)
	b5=0x00
	b6=0x64
	b7=b0^b1^b2^b3^b4^b5^b6
	#print([b0,b1,b2,b3,b4,b5,b6,b7])
	msg =can.Message(arbitration_id=0x469,data=[b0,b1,b2,b3,b4,b5,b6,b7],extended_id=False)
	#msg =can.Message(arbitration_id=0x469,data=[0,1,2,3,4,5,6,7],extended_id=False)


	can0.send(msg)
	time.sleep(0.1)

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值