Advertisement
ktv6

can_emulator test script

Jul 3rd, 2020
358
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.00 KB | None | 0 0
  1. import os
  2. import sys
  3. import can_emulator as ce
  4.  
  5. # Init adapter CANalyst-II
  6. factory = ce.FactoryCanAnalyst2()
  7. # Назначение данных параметров описано в документации CANalyst-II
  8. ca2_vic = {
  9.     'AccCode': 0x4fa00000,
  10.     'AccMask': 0x00000000,
  11.     'Filter': 1,
  12.     'Timing0': 0x00,
  13.     'Timing1': 0x1C,
  14.     'Mode': 0
  15. }
  16.  
  17. ca2_kwargs = {'DevType': 4, 'DevIndex': 0, 'CANIndex': 0, 'vic': ca2_vic}
  18. ca2 = factory.factory_method(0, 'CANAnalyst-II', **ca2_kwargs)
  19.  
  20. # Establish connection with adapter. Returns 0 on successful connection
  21. ret = ca2.open_connection()
  22. if ret != 0:
  23.     sys.exit('Could not establish connection to CAN-adapter CANalyst-II')
  24.  
  25. # Импорт всех сообщений из dbc файла.
  26. # dbc_messages - словарь <ID, сообщение>
  27. dbc_messages = ce.init_messages(os.path.abspath('general.dbc'))
  28.  
  29. # Добавление потока циклической отправки сообщения с ID 0x27d
  30. ca2.add_send_thread(dbc_messages[0x27d], t_int=0.01)
  31.  
  32. # Старт потока циклического чтения всех сообщений, получаемых адаптером
  33. ca2.start_recv_thread()
  34.  
  35. # Для чтения значения сигнала сообшения
  36. val = dbc_messages[0x27d].read_signal('ABS_VehicleSpeed')
  37. print('ABS_VehicleSpeed value = ', val)
  38.  
  39. # Считываемые сообщения помещаются в очередь из которой можно считать сообщения
  40. while True:
  41.     if not ca2.recv_queue.empty():
  42.         serialized_msg = ca2.recv_queue.get()
  43.         frame_id = serialized_msg.ID
  44.         data = serialized_msg.Data
  45.         dbc_messages[frame_id].decode_message(data, scaling=True)
  46.         if frame_id == 0x27d:
  47.             print(dbc_messages[0x27d].read_signal('ABS_VehicleSpeed'))
  48.         break
  49.  
  50. # Записи значения сигнала
  51. dbc_messages[0x27d].write_signal_value('ABS_VehicleSpeed', 10)
  52.  
  53. # Методы для приостановки и продолжения потока отправки сообщения
  54. # dbc_messages[0x27d].send_thread_pause()
  55. # dbc_messages[0x27d].send_thread_pause()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement