DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3901|回复: 1
打印 上一主题 下一主题

[UUProg] uuprog开发教程:芯片支持库维护4

[复制链接]
跳转到指定楼层
楼主
发表于 2014-12-27 07:54:53 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
上次讲了下快速搜索型号实现的功能,看视解说简单,其实功能实现讲究了技巧。这节我们来讲一下如何实现选择芯片型号,然后填充左边的相关参数。
下图就是点选型号的效果。

点选操作要实现填充窗口左边的相关参数,方便用户查看与修改,这些参数基本就是实现该型号的各种编程操作必须的值,非常重要,不可以出差错。例如编程电压,把这个设高了最后的结果就是编程时直接把芯片烧了。这就是编程器厂家最不愿用户遇到的,同时也是用户不想的。
要实现这个功能主要要处理列表框的单击消息lbn_selchange,我们这里对应的处理函数就是OnSelchangeDeviceList()。下面就是实现代码:
  1. void CProgDeviceManage::OnSelchangeDeviceList()
  2. {
  3.         // TODO: Add your control notification handler code here
  4.         CString temp;
  5.         int iDeviceSel;
  6.         m_cDeviceList.GetText(m_cDeviceList.GetCurSel(),temp);
  7.         for (int i=0; i<parent->m_arDeviceList.GetSize(); i++)
  8.         {
  9.                 if(temp == parent->m_arDeviceList.GetAt(i).DeviceName)
  10.                         iDeviceSel = i;
  11.         }
  12.         m_sDeviceName = parent->m_arDeviceList.GetAt(iDeviceSel).DeviceName;
  13.         temp.Format("%04x",parent->m_arDeviceList.GetAt(iDeviceSel).DeviceManuID);
  14.         m_sDeviceManuID = temp;
  15.         temp.Format("%04x",parent->m_arDeviceList.GetAt(iDeviceSel).DeviceID);
  16.         m_sDeviceID = temp;
  17.         m_sDeviceManuName = parent->m_arDeviceList.GetAt(iDeviceSel).DeviceManuName;
  18.         temp.Format("%04x",parent->m_arDeviceList.GetAt(iDeviceSel).DeviceCheckCRC);
  19.         m_sDeviceCheckCRC = temp;
  20.         m_sDeviceManuICO = parent->m_arDeviceList.GetAt(iDeviceSel).DeviceManuICO;
  21.         m_sDeviceICICO = parent->m_arDeviceList.GetAt(iDeviceSel).DeviceICICO;
  22.         m_sDeviceDatasheet = parent->m_arDeviceList.GetAt(iDeviceSel).Datasheet;
  23.         m_sDeviceNote = parent->m_arDeviceList.GetAt(iDeviceSel).DeviceNote;
  24.         for (i=0; i<parent->m_arAdapterList.GetSize(); i++)
  25.         {
  26.                 if (parent->m_arDeviceList.GetAt(iDeviceSel).DeviceAdapter == parent->m_arAdapterList.GetAt(i).TypeVal)
  27.                 m_cDeviceAdapter.SetCurSel(i);
  28.         }
  29.         for (i=0; i<parent->m_arPackageList.GetSize(); i++)
  30.         {
  31.                 if (parent->m_arDeviceList.GetAt(iDeviceSel).DevicePackage == parent->m_arPackageList.GetAt(i).TypeVal)
  32.                 m_cDevicePackage.SetCurSel(i);
  33.         }
  34.         for (i=0; i<parent->m_arTypeList.GetSize(); i++)
  35.         {
  36.                 if (parent->m_arDeviceList.GetAt(iDeviceSel).DeviceType == parent->m_arTypeList.GetAt(i).TypeVal)
  37.                 m_cDeviceType.SetCurSel(i);
  38.         }

  39.         for (i=0; i<parent->m_arSizeList.GetSize(); i++)
  40.         {
  41.                 if (parent->m_arDeviceList.GetAt(iDeviceSel).DeviceSize == parent->m_arSizeList.GetAt(i).TypeVal)
  42.                 m_cDeviceSize.SetCurSel(i);
  43.         }
  44.         for (i=0; i<parent->m_arVCCList.GetSize(); i++)
  45.         {
  46.                 if (parent->m_arDeviceList.GetAt(iDeviceSel).DeviceVCC == parent->m_arVCCList.GetAt(i).TypeVal)
  47.                 m_cDeviceVCC.SetCurSel(i);
  48.         }
  49.         for (i=0; i<parent->m_arVPPList.GetSize(); i++)
  50.         {
  51.                 if (parent->m_arDeviceList.GetAt(iDeviceSel).DeviceVPP == parent->m_arVPPList.GetAt(i).TypeVal)
  52.                 m_cDeviceVPP.SetCurSel(i);
  53.         }
  54.         for (i=0; i<parent->m_arOperationList.GetSize(); i++)
  55.         {
  56.                 if (parent->m_arDeviceList.GetAt(iDeviceSel).OperationID == parent->m_arOperationList.GetAt(i).TypeVal)
  57.                 m_cOperationID.SetCurSel(i);
  58.         }
  59.         for (i=0; i<parent->m_arPinList.GetSize(); i++)
  60.         {
  61.                 if (parent->m_arDeviceList.GetAt(iDeviceSel).DevicePinCount == parent->m_arPinList.GetAt(i).TypeVal)
  62.                 m_cDevicePinCount.SetCurSel(i);
  63.         }
  64.         for (i=0; i<parent->m_arDataWidthList.GetSize(); i++)
  65.         {
  66.                 if (parent->m_arDeviceList.GetAt(iDeviceSel).DeviceDataWidth == parent->m_arDataWidthList.GetAt(i).TypeVal)
  67.                 m_cDeviceDataWidth.SetCurSel(i);
  68.         }
  69. HBITMAP bmp =(HBITMAP) ::LoadImage(AfxGetInstanceHandle(),
  70.                                                                    parent->m_sAppPath+"brand\\"+m_sDeviceManuICO/*或者相对路径*/,
  71.                                                                    IMAGE_BITMAP,0,0,LR_CREATEDIBSECTION|LR_LOADFROMFILE);

  72. m_cDeviceManuICO.SetBitmap(bmp);
  73. HBITMAP bmp1 =(HBITMAP) ::LoadImage(AfxGetInstanceHandle(),
  74.                                                                    parent->m_sAppPath+"brand\\ic\\"+m_sDeviceICICO/*或者相对路径*/,
  75.                                                                    IMAGE_BITMAP,0,0,LR_CREATEDIBSECTION|LR_LOADFROMFILE);

  76. m_cDeviceICICO.SetBitmap(bmp1);

  77.         UpdateData(false);
  78. }
复制代码
这个函数首先查找到数组中对应的项后获取相关的参数,然后格式化填充到参数窗口里,这里有些需要转换成对应的值,很有技巧的,希望多多研究。
今天先讲到这里,下次就是添加修改操作了,建议大家还是下份源代码先看下。



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
沙发
发表于 2021-1-24 13:55:52 | 只看该作者
这个可以的 不错
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-4-26 05:50 , 耗时 0.112407 秒, 24 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表