[C#]解决第三方控件引起的"类型Universe无法解析程序集"问题

原创文章,欢迎转载。转载请注明:转载自 祥的博客

原文链接:http://blog.csdn.net/humanking7/article/details/51099285


问题由来

项目中要用到C#的一个开源控件 DockPanel,按照方法加入第三控件(DockPanel)后,对它进行使用。可是在窗体拖动控件的时候,发现了一个错误:

类型Universe无法解析程序集:System.Design,Version=2.0.0.0,Culture=neutral,PublickeyToken=b03f5f7f11d50a3a

pic1

原因

这是因为vs2010新建工程时应用程序默认目标框架为 ” .Net Framework 4 Client Profile “,该选项为微软对.NET Class Library的减肥版,缺少第三方控件需要的组件引用。

pic2

解决方法

解决方法就是更改应用程序的目标框架

步骤:

  1. 解决方案资源管理器中的工程项上点击 右键
  2. 选择 属性
  3. 选择 应用程序 选项卡
  4. 将目标框架 选择为 ” .Net Framework 4 “

pic4


donate

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个基于HAL库的STM32接收多个universe的sACN程序的示例代码: ```c #include "stm32f4xx_hal.h" #include <string.h> #define MAX_SACN_PACKET_SIZE 638 // sACN最大数据包大小 #define NUM_UNIVERSES 4 // 接收的universe数量 #define UNIVERSE_SIZE 512 // 每个universe的大小 // 定义存储接收到的sACN数据的缓冲区 uint8_t sacn_buffer[NUM_UNIVERSES * UNIVERSE_SIZE]; // 定义每个universe的起始地址 const uint16_t universe_address[NUM_UNIVERSES] = { 0x0000, 0x0200, 0x0400, 0x0600 }; // 定义每个universe的组播地址 const uint8_t universe_multicast_address[NUM_UNIVERSES][4] = { { 239, 255, 0, 1 }, { 239, 255, 0, 2 }, { 239, 255, 0, 3 }, { 239, 255, 0, 4 } }; // 定义网络模块句柄 ETH_HandleTypeDef heth; // 定义sACN数据包结构体 typedef struct { uint8_t preamble[4]; uint16_t postamble; uint8_t acn_id[12]; uint16_t flags; uint16_t length; uint8_t vector; uint8_t cid[16]; uint8_t data[]; } sacn_packet_t; // 初始化网络模块 void MX_ETH_Init(void) { heth.Instance = ETH; heth.Init.AutoNegotiation = ETH_AUTONEGOTIATION_ENABLE; heth.Init.PhyAddress = LAN8742A_PHY_ADDRESS; heth.Init.MACAddr[0] = 0x00; heth.Init.MACAddr[1] = 0x80; heth.Init.MACAddr[2] = 0xE1; heth.Init.MACAddr[3] = 0x00; heth.Init.MACAddr[4] = 0x00; heth.Init.MACAddr[5] = 0x00; heth.Init.RxMode = ETH_RXINTERRUPT_MODE; heth.Init.ChecksumMode = ETH_CHECKSUM_BY_HARDWARE; heth.Init.MediaInterface = ETH_MEDIA_INTERFACE_RMII; if (HAL_ETH_Init(&heth) != HAL_OK) { Error_Handler(); } } // 配置网络模块的组播地址 void MX_ETH_ConfigMulticast(void) { for (int i = 0; i < NUM_UNIVERSES; i++) { uint32_t addr = (universe_multicast_address[i][0] << 24) | (universe_multicast_address[i][1] << 16) | (universe_multicast_address[i][2] << 8) | universe_multicast_address[i][3]; HAL_ETH_SetReceiveFilter(&heth, ETH_FILTER_MULTICAST, (uint8_t*)&addr, 1); } } // 接收sACN数据包 void MX_ETH_ReceiveSACN(void) { uint32_t length = 0; HAL_StatusTypeDef status = HAL_ETH_GetReceivedFrame_IT(&heth); if (status == HAL_OK) { sacn_packet_t *packet = (sacn_packet_t*)heth.RxFrameInfos.FSRxDesc->Buffer1Addr; // 检查sACN数据包的前导码和标识符 if (memcmp(packet->preamble, "\x00\x10\x20\x30", 4) == 0 && memcmp(packet->acn_id, "ASC-E1.17\0\0\0\0\0\0\0\0", 12) == 0) { // 获取sACN数据包中包含的universe uint16_t universe = ((uint16_t)packet->data[0] << 8) | packet->data[1]; // 检查universe是否在我们需要接收的范围内 int index = -1; for (int i = 0; i < NUM_UNIVERSES; i++) { if (universe == universe_address[i]) { index = i; break; } } if (index >= 0) { // 将sACN数据包中的数据存储到对应的缓冲区中 memcpy(&sacn_buffer[index * UNIVERSE_SIZE], &packet->data[2], UNIVERSE_SIZE); } } // 释放DMA缓冲区 HAL_ETH_ReleaseRxDescriptor(&heth, heth.RxFrameInfos.FSRxDesc); } } int main(void) { HAL_Init(); MX_ETH_Init(); MX_ETH_ConfigMulticast(); while (1) { MX_ETH_ReceiveSACN(); // 处理缓冲区中的数据 // ... } } ``` 以上代码仅用于演示,具体实现方法需要根据实际情况进行调整。需要注意的是,sACN协议的具体实现可能因硬件和软件平台而异,因此代码中的一些细节可能需要根据实际情况进行更改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值