2025-04-30 17:01:25 +08:00
|
|
|
import 'can_fd_msg.dart';
|
|
|
|
|
2025-04-29 16:32:14 +08:00
|
|
|
//CAN设备状态抽象类
|
|
|
|
class CANDev {
|
|
|
|
//CAN设备名称
|
|
|
|
String devname;
|
|
|
|
//CAN设备序列号
|
|
|
|
String devsn='sn_none';
|
|
|
|
//CAN设备通道数量
|
|
|
|
int devchannel;
|
|
|
|
//CAN运行设备状态
|
|
|
|
bool runstatus=false;
|
|
|
|
//通道状态
|
|
|
|
List<bool> channelstatus=[];
|
|
|
|
//固件版本号
|
|
|
|
String firmwareversion='0.0.0';
|
|
|
|
//设备句柄
|
|
|
|
int devhandle=0;
|
2025-04-30 17:01:25 +08:00
|
|
|
|
|
|
|
int errCounter=0;
|
2025-04-29 16:32:14 +08:00
|
|
|
|
|
|
|
CANDev({
|
|
|
|
required this.devname,
|
|
|
|
required this.devchannel,
|
|
|
|
this.devsn='sn_none',
|
|
|
|
this.runstatus=false,
|
|
|
|
this.devhandle=0,
|
|
|
|
this.firmwareversion='0.0.0',
|
|
|
|
})
|
|
|
|
{
|
|
|
|
for(int i=0;i<devchannel;i++) {
|
|
|
|
channelstatus.add(false);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
abstract class AbstractCANDevice {
|
|
|
|
// 初始化CAN设备
|
|
|
|
bool initialize();
|
|
|
|
|
|
|
|
// 刷新CAN设备
|
|
|
|
int refresh();
|
|
|
|
|
|
|
|
//获取CAN设备列表
|
|
|
|
List<CANDev> getDeviceList();
|
|
|
|
|
|
|
|
// 启动CAN设备
|
2025-04-30 17:01:25 +08:00
|
|
|
bool start({required int canIndex,required int canChannel , required int baudrate});
|
2025-04-29 16:32:14 +08:00
|
|
|
|
|
|
|
// 停止CAN设备
|
2025-04-30 17:01:25 +08:00
|
|
|
bool stop({required int canIndex});
|
2025-04-29 16:32:14 +08:00
|
|
|
|
|
|
|
// 发送CAN消息
|
2025-04-30 17:01:25 +08:00
|
|
|
Future<bool> sendMessage({required int canIndex, required int canChannel, required int canid,required List<int> data});
|
2025-04-29 16:32:14 +08:00
|
|
|
|
|
|
|
// 接收CAN消息
|
2025-04-30 17:01:25 +08:00
|
|
|
Stream<CanFdMsg> receiveMessage({required int canIndex, required int canChannel});
|
2025-04-29 16:32:14 +08:00
|
|
|
}
|