初始化 CAN、I2C 和 RS485 通信模块,然后在循环中根据中断和数据状态进行读取和处理,生成随机数据并通过 CAN 和 RS485 发送,同时进行 I2C 设备的扫描与状态检测
from m5stack import *
from m5ui import *
from uiflow import *
import module
import time
setScreenColor(0x3a3a3a)
rand = None
temp_data = None
com = module.get(module.COMMU)
import random
com.commu_can_init(3, 15)
i2c = com.commu_i2c_init(21, 22, 0x44, 100000)
rs485 = com.commu_uart_init(2, 17, 16, 115200, 8, None, 1)
print((str('I2C Device:') + str((i2c.scan()))))
while True:
if com.commu_can_interrupt_occur():
print((str('CAN Message:') + str((com.commu_can_read_message(1)))))
print((str('CAN ID:') + str((com.commu_can_id))))
if i2c.available():
print('TRUE')
print((str('I2C Device:') + str((i2c.scan()))))
else:
print('FALSE')
if rs485.any():
print((str('RS485 Data:') + str((rs485.read()).decode())))
rand = random.randint(10000000, 16777215)
wait(1)
temp_data = [(rand & 0xff0000) >> 16, (rand & 0x00ff00) >> 8, rand & 0xff]
com.commu_can_send_message(0x100, temp_data)
print((str('temp data:') + str(temp_data)))
wait(1)
rs485.write(str(rand))
print((str('rand data:') + str(rand)))
wait_ms(2)
com.commu_can_available_message()
com.commu_can_clear_interrupts()
com.commu_can_config_rate(15)
com.commu_can_debug(True)
com.commu_can_init(3, 15)
com.commu_can_interrupt_occur()
com.commu_can_read_message(1)
com.commu_can_id
com.commu_can_reset()
com.commu_can_send_message(0x100, [0, 0, 0])
com.commu_can_set_mode(0x00)
i2c.available()
[][0]
com.commu_i2c_init(21, 22, 0x50, 100000)
i2c.read_data(0, i2c_bus.UINT8LE)
i2c.read_mem_data(0, 0, i2c_bus.UINT8LE)
i2c.read_reg(0x00, 0)
i2c.read_u8(0x00)
i2c.read_u16(0x00, byteorder="big")
i2c.scan()
i2c.write_u16(0x00, 0x0000, byteorder="big")
i2c.write_u8(0x00, 0x00)
i2c.write_data(0, i2c_bus.UINT8LE)
i2c.write_mem_data(0, 0, i2c_bus.UINT8LE)
i2c.write_mem_list(0, [0, 0, 0])
uart.any()
com.commu_uart_init(1, 1, 3, 9600, 8, None, 1)
uart.read()
uart.readline()
uart.read(0)
uart.write('')
uart.write(''+"\r\n")
uart.write(bytes([0, 0, 0]))