当前位置: 首页 > article >正文

struct结构体【C#】

结构体:

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

结构体是值类型传递。

public unsafe struct VCI_CAN_OBJ  //CAN每帧对象,
{          
 public uint ID;// 帧ID。        【u32】帧id,数据格式为靠右对齐。 详情请参照: 《8.附件1: ID对齐方式.pdf》说明文档。
 public uint TimeStamp;        //【u32】设备时间标识。 时间标示从CAN卡上电开始计时,计时单位为0.1ms。
 public byte TimeFlag;         //是否使用时间标识,=1时TimeStamp有效
 public byte SendType;         //发送类型。=0时为正常发送(发送失败会自动重发,重发超时时间为4秒, 4秒内没有发出则取消);=1时为单次发送
 public byte RemoteFlag;       //是否远程帧标志。 =0时为数据帧, =1时为远程帧(数据段空)。
 public byte ExternFlag;       //是否扩展帧标志。 =0时为标准帧(11位ID), =1时为扩展帧(29位ID)。
 public byte DataLen;          //有效字节 DLC (<=8),即CAN帧Data有几个字节。约束了后面Data[8]中有效字节数。
 public fixed byte Data[8];    //数据包,如DataLen定义为3,即Data[0]、 Data[1]、 Data[2]是有效的。
 public fixed byte Reserved[3];//系统保留。
}

fixed是固定的意思


//====================================

        public struct VCI_BOARD_INFO //主板信息
        { // VCI_ReadBoardInfo【要先运行VCI_OpenDevice(4,0,0);】   VCI_FindUsbDevice2
            public UInt16 hw_Version;//【0x0900】硬件版本,比如0x0100表示V1.00。
            public UInt16 fw_Version;//【0x0341】固件版本,v3.41
            public UInt16 dr_Version;//【0x0900】驱动版本,
            public UInt16 in_Version;//【0x0905】接口版本,
            public UInt16 irq_Num;//   【0x00】  保留参数。
            public byte can_Num;  //   【0x02】  表示有几路CAN通道。
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
            public char[] str_Serial_Num;// 板卡序列号。【31F01031C93】

            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 40)]
            public char[] str_hw_Type;// 硬件类型【55 53 42 43 41 4e 2d 49 49】“USBCAN-II”

            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
            public UInt16[] Reserved;// 系统保留。
        }

C语言的结构体:

typedef struct _VCI_CAN_OBJ 
{ 
 UINT ID; 
 UINT TimeStamp; 
 BYTE TimeFlag; 
 BYTE SendType; 
 BYTE RemoteFlag; 
 BYTE ExternFlag; 
 BYTE DataLen; 
 BYTE Data[8]; 
 BYTE Reserved[3]; 
}VCI_CAN_OBJ, *PVCI_CAN_OBJ; 

//定义了结构体,还定义了指针

// *是解指针,用于获取对象

// &是取指针,用于取对象地址,【注意,这个指针是有类型的】


http://www.kler.cn/news/133989.html

相关文章:

  • Mac M1 M1 pro安装 protobuf 2.5.0
  • vue中使用echarts实现省市地图绘制,根据数据显示不同区域颜色,点击省市切换,根据经纬度打点
  • 【VSCode】Visual Studio Code 配置简体中文环境教程
  • 10个提高VS Code工作效率的技巧
  • 【Linux网络】典型NAS存储方式:NFS网络共享存储服务
  • Android跨进程通信,IPC,RPC,Binder系统,C语言应用层调用
  • 批量替换WordPress文章内图片链接
  • vue3.0中实现excel文件的预览
  • 07-流媒体-RTMP推流
  • 实战项目:VB龟兔赛跑游戏+猜数字游戏
  • vue3安装vue-router
  • 云计算(Docker)
  • 文件转换,简简单单,pdf转word,不要去找收费的了,自己学了之后免费转,之后就复制粘贴就ok了
  • how to find gcc openbug
  • mysql 设置远程登录
  • 【数据结构&C++】二叉平衡搜索树-AVL树(25)
  • 系列五、怎么查看默认的垃圾收集器是哪个?
  • Java 语言关键字有哪些
  • 【0234】PgBackendStatus 记录当前postgres进程的活动状态
  • GDPU 数据结构 天码行空10
  • 华为OD机试 - 转盘寿司(Java JS Python C)
  • Springboot更新用户头像
  • 大语言模型的三阶段训练
  • vim指令
  • promise时效架构升级方案的实施及落地 | 京东物流技术团队
  • 【Go入门】 Go搭建一个Web服务器
  • 340条样本就能让GPT-4崩溃,输出有害内容高达95%?OpenAI的安全防护措施再次失效
  • 电路的基本原理
  • DeepStream--测试resnet50分类模型
  • 大数据-玩转数据-Centos7 升级JDK11