• struct结构体【C#】


    结构体

    C#中的结构体很少用,一般用class

    结构体是值类型传递。

    1. public unsafe struct VCI_CAN_OBJ //CAN每帧对象,
    2. {
    3. public uint ID;// 帧ID。 【u32】帧id,数据格式为靠右对齐。 详情请参照: 《8.附件1: ID对齐方式.pdf》说明文档。
    4. public uint TimeStamp; //【u32】设备时间标识。 时间标示从CAN卡上电开始计时,计时单位为0.1ms。
    5. public byte TimeFlag; //是否使用时间标识,=1时TimeStamp有效
    6. public byte SendType; //发送类型。=0时为正常发送(发送失败会自动重发,重发超时时间为4秒, 4秒内没有发出则取消);=1时为单次发送
    7. public byte RemoteFlag; //是否远程帧标志。 =0时为数据帧, =1时为远程帧(数据段空)。
    8. public byte ExternFlag; //是否扩展帧标志。 =0时为标准帧(11位ID), =1时为扩展帧(29位ID)。
    9. public byte DataLen; //有效字节 DLC (<=8),即CAN帧Data有几个字节。约束了后面Data[8]中有效字节数。
    10. public fixed byte Data[8]; //数据包,如DataLen定义为3,即Data[0]、 Data[1]、 Data[2]是有效的。
    11. public fixed byte Reserved[3];//系统保留。
    12. }
    13. fixed是固定的意思
    14. //====================================
    15. public struct VCI_BOARD_INFO //主板信息
    16. { // VCI_ReadBoardInfo【要先运行VCI_OpenDevice(4,0,0);】 VCI_FindUsbDevice2
    17. public UInt16 hw_Version;//【0x0900】硬件版本,比如0x0100表示V1.00。
    18. public UInt16 fw_Version;//【0x0341】固件版本,v3.41
    19. public UInt16 dr_Version;//【0x0900】驱动版本,
    20. public UInt16 in_Version;//【0x0905】接口版本,
    21. public UInt16 irq_Num;// 【0x00】 保留参数。
    22. public byte can_Num; // 【0x02】 表示有几路CAN通道。
    23. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
    24. public char[] str_Serial_Num;// 板卡序列号。【31F01031C93】
    25. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 40)]
    26. public char[] str_hw_Type;// 硬件类型【55 53 42 43 41 4e 2d 49 49】“USBCAN-II”
    27. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
    28. public UInt16[] Reserved;// 系统保留。
    29. }

    C语言的结构体:

    1. typedef struct _VCI_CAN_OBJ
    2. {
    3. UINT ID;
    4. UINT TimeStamp;
    5. BYTE TimeFlag;
    6. BYTE SendType;
    7. BYTE RemoteFlag;
    8. BYTE ExternFlag;
    9. BYTE DataLen;
    10. BYTE Data[8];
    11. BYTE Reserved[3];
    12. }VCI_CAN_OBJ, *PVCI_CAN_OBJ;
    13. //定义了结构体,还定义了指针
    14. // *是解指针,用于获取对象
    15. // &是取指针,用于取对象地址,【注意,这个指针是有类型的】

  • 相关阅读:
    Spring(18) @Order注解介绍、使用、底层原理
    代码随想录算法训练营第四十九天 | 动态规划 part 10 | 买卖股票的最佳时机i、ii
    “似水无形” 的小程序化
    目标检测---以制作yolov5的数据集为例,利用labelimg制作自己的深度学习目标检测数据集(正确方法)
    MongoDB~分片数据存储Chunk;其迁移原理、影响,以及避免手段
    分布式事务解决方案之TCC
    网络编程套接字
    centos7中如何安装gdal最好?
    深度学习--RNN循环神经网络和LSTM
    【C语言】文件操作
  • 原文地址:https://blog.csdn.net/cfqq1989/article/details/134467614