Skip to content

Commit

Permalink
20230207 pixkit experiment
Browse files Browse the repository at this point in the history
  • Loading branch information
nomokazu committed Feb 8, 2023
1 parent 333688f commit 90772df
Show file tree
Hide file tree
Showing 5 changed files with 48 additions and 22 deletions.
6 changes: 6 additions & 0 deletions manual.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
102#F10000111100F001
102#F100008888000F80
102#8F00008888000F80
102#01F00011110000F1
102#800F0088880000F1
102#800F00888800008F
15 changes: 15 additions & 0 deletions manualsend.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import subprocess
import time

while True:
# STEERING
# subprocess.run(["cansend", "slcan0", "102#01F00011110000F1"])
# subprocess.run(["cansend", "slcan0", "102#01F0002000000000"])

# BRAKE
# subprocess.run(["cansend", "slcan0", "101#11F0002000000000"])

#subprocess.run(["cansend", "slcan0", "105#0000000000000000"])
subprocess.run(["cansend","slcan0","103#0001010200000000"])
print("send")
time.sleep(0.02)
12 changes: 7 additions & 5 deletions msg.py
Original file line number Diff line number Diff line change
Expand Up @@ -77,9 +77,10 @@ def setDataFromInt(self, Steer_EnState, Steer_Flt1, Steer_Flt2, Steer_AngleActua
self.toData()

class Steering_Command:
def __init__(self):
def __init__(self, crc):
self.msg_id = 0x102
self.msg_name = "Steering_Command"
self.crc = crc

# チェックサムは、後回し
def setDataFromInt(self, Steer_EnCtrl, Steer_AngleSpeed, Steer_AngleTarget):
Expand Down Expand Up @@ -109,8 +110,9 @@ def toData(self):


# チェックサムはダミー
self.checksum_102 = 0
self.data[7] = self.checksum_102
self.checksum_102 = self.data[0] ^ self.data[1] ^ self.data[2] ^ self.data[3] ^ self.data[4] ^ self.data[5] ^ self.data[6]
self.data[7] = self.crc
print(self.data[7])

def view(self):
print("--- CAN ID = " + str(hex(self.msg_id)).ljust(3,"-") + "----- msg_name = " + str(self.msg_name).ljust(20,"-") + "--")
Expand All @@ -137,7 +139,7 @@ def dataParser(self):
self.raw_Brake_EnState = self.data[0].to_bytes(1, byteorder='big')
self.raw_Brake_Flt1 = self.data[1].to_bytes(1, byteorder='big')
self.raw_Brake_Flt2 = self.data[2].to_bytes(1, byteorder='big')
self.raw_Brake_PedalActual = self.data[3:4+1].to_bytes(1, byteorder='big')
self.raw_Brake_PedalActual = self.data[3:4+1]

# それぞれのデータについて、bytearray型 から Int 型にして取り出す
def toInt(self):
Expand Down Expand Up @@ -210,7 +212,7 @@ def dataParser(self):
self.raw_Dirve_EnState = self.data[0].to_bytes(1, byteorder='big')
self.raw_Dirve_Flt1 = self.data[1].to_bytes(1, byteorder='big')
self.raw_Dirve_Flt2 = self.data[2].to_bytes(1, byteorder='big')
self.raw_Dirve_ThrottlePedalActual = self.data[3:4+1].to_bytes(1, byteorder='big')
self.raw_Dirve_ThrottlePedalActual = self.data[3:4+1]

# それぞれのデータについて、bytearray型 から Int 型にして取り出す
def toInt(self):
Expand Down
4 changes: 2 additions & 2 deletions receive/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
import time

# バスタイプはよくわからない
bus = can.interface.Bus(bustype='vector', channel=0, bitrate=500000, app_name='python-can')
bus = can.interface.Bus(bustype='socketcan', channel="slcan0", bitrate=500000, app_name='python-can')

#受信
start_time = time.time()
Expand All @@ -12,6 +12,6 @@
while True:
message = bus.recv(timeout=1)
if message != None:
print("CAN ID : " + str(message.arbitration_id))
print("CAN ID : " + hex(message.arbitration_id))
# 果たしてこれがどんなデータになるかわからん
print("Data : " + str(message.data))
33 changes: 18 additions & 15 deletions send.py
Original file line number Diff line number Diff line change
@@ -1,23 +1,26 @@
import msg
import can
import time

#バス接続
bus = can.interface.Bus(bustype='virtual', channel=0, bitrate=500000, app_name='python-can')
bus = can.interface.Bus(bustype='socketcan', channel="slcan0", bitrate=500000, app_name='python-can')

# Steering_Commandメッセージの作成
message = msg.Steering_Command()
# メッセージののパラメータの指定
message.setDataFromInt(0, 100, 400)
# CAN
message.toData()

#送信データ
can_msg = can.Message(arbitration_id = message.msg_id, data= message, is_extended_id = False)
for crc in range(256+1):
# Steering_Commandメッセージの作成
message = msg.Steering_Command(crc)
# メッセージののパラメータの指定
message.setDataFromInt(1, 240, 100)
# CAN
message.toData()
message.view()
#送信データ
can_msg = can.Message(arbitration_id = message.msg_id, data= message.data, is_extended_id = False)

#送信
task = bus.send_periodic(can_msg, 1)
assert isinstance(task, can.CyclicSendTaskABC)
#送信
task = bus.send_periodic(can_msg, 0.05)
assert isinstance(task, can.CyclicSendTaskABC)

time.sleep(10)
task.stop()
print("stopped cyclic send")
time.sleep(0.2)
task.stop()
print("stopped cyclic send")

0 comments on commit 90772df

Please sign in to comment.