Skip to content

Commit 90772df

Browse files
committed
20230207 pixkit experiment
1 parent 333688f commit 90772df

File tree

5 files changed

+48
-22
lines changed

5 files changed

+48
-22
lines changed

manual.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
102#F10000111100F001
2+
102#F100008888000F80
3+
102#8F00008888000F80
4+
102#01F00011110000F1
5+
102#800F0088880000F1
6+
102#800F00888800008F

manualsend.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import subprocess
2+
import time
3+
4+
while True:
5+
# STEERING
6+
# subprocess.run(["cansend", "slcan0", "102#01F00011110000F1"])
7+
# subprocess.run(["cansend", "slcan0", "102#01F0002000000000"])
8+
9+
# BRAKE
10+
# subprocess.run(["cansend", "slcan0", "101#11F0002000000000"])
11+
12+
#subprocess.run(["cansend", "slcan0", "105#0000000000000000"])
13+
subprocess.run(["cansend","slcan0","103#0001010200000000"])
14+
print("send")
15+
time.sleep(0.02)

msg.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,10 @@ def setDataFromInt(self, Steer_EnState, Steer_Flt1, Steer_Flt2, Steer_AngleActua
7777
self.toData()
7878

7979
class Steering_Command:
80-
def __init__(self):
80+
def __init__(self, crc):
8181
self.msg_id = 0x102
8282
self.msg_name = "Steering_Command"
83+
self.crc = crc
8384

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

110111

111112
# チェックサムはダミー
112-
self.checksum_102 = 0
113-
self.data[7] = self.checksum_102
113+
self.checksum_102 = self.data[0] ^ self.data[1] ^ self.data[2] ^ self.data[3] ^ self.data[4] ^ self.data[5] ^ self.data[6]
114+
self.data[7] = self.crc
115+
print(self.data[7])
114116

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

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

215217
# それぞれのデータについて、bytearray型 から Int 型にして取り出す
216218
def toInt(self):

receive/main.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import time
33

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

77
#受信
88
start_time = time.time()
@@ -12,6 +12,6 @@
1212
while True:
1313
message = bus.recv(timeout=1)
1414
if message != None:
15-
print("CAN ID : " + str(message.arbitration_id))
15+
print("CAN ID : " + hex(message.arbitration_id))
1616
# 果たしてこれがどんなデータになるかわからん
1717
print("Data : " + str(message.data))

send.py

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,26 @@
11
import msg
22
import can
3+
import time
34

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

7-
# Steering_Commandメッセージの作成
8-
message = msg.Steering_Command()
9-
# メッセージののパラメータの指定
10-
message.setDataFromInt(0, 100, 400)
11-
# CAN
12-
message.toData()
138

14-
#送信データ
15-
can_msg = can.Message(arbitration_id = message.msg_id, data= message, is_extended_id = False)
9+
for crc in range(256+1):
10+
# Steering_Commandメッセージの作成
11+
message = msg.Steering_Command(crc)
12+
# メッセージののパラメータの指定
13+
message.setDataFromInt(1, 240, 100)
14+
# CAN
15+
message.toData()
16+
message.view()
17+
#送信データ
18+
can_msg = can.Message(arbitration_id = message.msg_id, data= message.data, is_extended_id = False)
1619

17-
#送信
18-
task = bus.send_periodic(can_msg, 1)
19-
assert isinstance(task, can.CyclicSendTaskABC)
20+
#送信
21+
task = bus.send_periodic(can_msg, 0.05)
22+
assert isinstance(task, can.CyclicSendTaskABC)
2023

21-
time.sleep(10)
22-
task.stop()
23-
print("stopped cyclic send")
24+
time.sleep(0.2)
25+
task.stop()
26+
print("stopped cyclic send")

0 commit comments

Comments
 (0)