using CompressorXN_Common; using System; using System.Text; using USB2XXX; namespace CompressorXN_Communication.TuMos { public class BaseTMS { private static USB_DEVICE.DEVICE_INFO DevInfo = new USB_DEVICE.DEVICE_INFO(); private static Int32[] DevHandles = new Int32[20]; protected static int DevHandle = 0; protected static Byte WriteCANIndex = 0; protected static Byte ReadCANIndex = 0; private static bool state; private static Int32 DevNum = 0; /// /// 打开设备 /// /// public static (bool isOk, string msg) OpenDevice() { return (true, "连接成功"); //扫描查找设备 DevNum = USB_DEVICE.USB_ScanDevice(DevHandles); if (DevNum <= 0) { return (false, $"无设备连接!"); } DevHandle = DevHandles[0]; //打开设备 state = USB_DEVICE.USB_OpenDevice(DevHandle); if (!state) { return (false, $"打开设备异常:state={state}!"); } //获取固件信息 StringBuilder FuncStr = new StringBuilder(256); state = USB_DEVICE.DEV_GetDeviceInfo(DevHandle, ref DevInfo, FuncStr); if (!state) { return (false, $"获取设备信息异常:state={state}!"); } else { Console.WriteLine($"{DateTime.Now}>>>>Firmware Info:"); Console.WriteLine(" Name:" + Encoding.Default.GetString(DevInfo.FirmwareName)); Console.WriteLine(" Build Date:" + Encoding.Default.GetString(DevInfo.BuildDate)); Console.WriteLine(" Firmware Version:v{0}.{1}.{2}", (DevInfo.FirmwareVersion >> 24) & 0xFF, (DevInfo.FirmwareVersion >> 16) & 0xFF, DevInfo.FirmwareVersion & 0xFFFF); Console.WriteLine(" Hardware Version:v{0}.{1}.{2}", (DevInfo.HardwareVersion >> 24) & 0xFF, (DevInfo.HardwareVersion >> 16) & 0xFF, DevInfo.HardwareVersion & 0xFFFF); Console.WriteLine(" Functions:" + DevInfo.Functions.ToString("X8")); Console.WriteLine(" Functions String:" + FuncStr); } GlobalVar.DevHandle = DevHandle; return (true, "连接成功"); } /// /// 初始化CAN /// /// public static void CanInit(uint bps) { USB2CAN.CAN_INIT_CONFIG CANConfig = new USB2CAN.CAN_INIT_CONFIG(); //波特率 var ret = USB2CAN.CAN_GetCANSpeedArg(DevHandle, ref CANConfig, bps); if (ret != USB2CAN.CAN_SUCCESS) { Console.WriteLine("Get CAN Speed failed!"); return; } else { Console.WriteLine("Get CAN Speed Success!"); } //初始化配置CAN CANConfig.CAN_Mode = 0x80;//正常模式 CANConfig.CAN_ABOM = 0;//禁止自动离线 CANConfig.CAN_NART = 1;//禁止报文重传 CANConfig.CAN_RFLM = 0;//FIFO满之后覆盖旧报文 CANConfig.CAN_TXFP = 1;//发送请求决定发送顺序 ret = USB2CAN.CAN_Init(DevHandle, WriteCANIndex, ref CANConfig); if (ret != USB2CAN.CAN_SUCCESS) { Console.WriteLine("Config Send CAN failed!"); return; } else { Console.WriteLine("Config Send CAN Success!"); } //配置过滤器,接收所有数据 //int[] pIdList = new int[1] { Convert.ToInt32(GlobalVar.agreementMsgVM.ReciveId, 16) }; //byte idListLen = 1; //ret = USB2CAN.CAN_FilterList_Init(DevHandle, ReadCANIndex, pIdList, idListLen); //if (ret != USB2CAN.CAN_SUCCESS) //{ // Console.WriteLine("Config CAN Filter failed!"); // return; //} //else //{ // Console.WriteLine("Config CAN Filter Success!"); //} //启动CAN接收数据 ret = USB2CAN.CAN_StartGetMsg(GlobalVar.DevHandle, GlobalVar.ReadCANIndex); if (ret != USB2CAN.CAN_SUCCESS) { Console.WriteLine("Start CAN failed!"); return; } else { Console.WriteLine("Start CAN Success!"); } } } }