VIA工程师部落

“VIA工程师部落”(www.viaet.cn VIA中国第一社区),计划3月1日做为正式的开张的日子,希望广大VIA的同行们一起捧捧场:) 在那里你可以发表自己的经验,提出自己的问题,大家一起发挥余热,集思广义,也许能把问题很好地解决。其团队成员都有多年的经验,有比我更老的VIA工程师,还会有VIA总部的顾问。 

Camera添加对闪光灯的控制

        默认的Camera选项中没有对闪光灯的控制,但低层上有提供类似的功能。于是要在UI上添加对其的控制,即可以打开,关闭闪光灯:

1.首先查看驱动层提供的接口:
 gCapAttr.optFlash = CameraFlash[(ValCameraFlashT)Data->PropNum ];
static const
MCATCH_UINT16
CameraFlash[VAL_CAMERA_FLASH_MAX] =
{
 MCATCH_FLASH_OFF,
 MCATCH_FLASH_ON,
 MCATCH_FLASH_AUTO
}
可以看出只要给CameraFlash付正确的值就可以实现对闪光灯的控制。现在的问题就是把UI的消息一层一层地传递到驱动层。这里层与层之间的传递是通过消息及函数调用进行的。
2. 从VAL层到驱动层的消息传递:
这是VAL层往驱动层发的消息:
MediaMsgDataP->PropId = (uint32)CaptureProp;
/*store
the parameter in the msg*/
MediaMsgDataP->PropNum = *(uint32 *)DataP;
      /*make the routine
running in mediatask*/
ExeMsgSend(EXE_MEDIA_ID,
MEDIA_MAIN_MAILBOX_ID,MEDIA_CAMERA_CMD_CAPTURE_PROP_MSG,
MediaMsgDataP, sizeof(MediaPropMsgT));
mediatask会处理这里发送的消息,并调用相应的处理函数
static uint32
CmrCapturePropSet(void *DataP)
{
    …
case VAL_CMR_CAPTURE_PROP_OPT_FLASH:
   {
 gCapAttr.optFlash = CameraFlash[(ValCameraFlashT)Data->PropNum
];
 break;
   }
   …
 }
3.从UI层到VAL层是通过对函数的调用来实现的,具体的步骤如下
在UI层新添加一个函数响应按“打开”“关闭”闪光灯的消息:
void
CameraModelC::SettingFlashLight(uint32 status)
{
                
……
AslCmrSnpshtPropSet(ASL_CMR_CAPTURE_PROP_OPT_FLASH, &status);
                
……
}
VAL…
AslCmrResultT
AslCmrSnpshtPropSet(AslCmrCapturePropT snapshotProp, void *data)
{
 return
(AslCmrResultT)
ValCmrCapturePropSet((ValCmrCapturePropT)snapshotProp, data);
}
VAL…
ValCmrCapturePropSet如上2的处理,发送消息到驱动层。
整个过程如此,但有很多工作在这里没有提及,如在资源中添加相应的资源,添加对应的按键消息,打开菜单时的初始化,恢复初厂设置后的初始化等等。

 

做VIA方案的朋友们

最近又认识一些搞VIA方案的朋友们,但发现大部分都是搞驱动的,UI的很少。哈哈,本人是搞UI的(其实叫UI不全面,我现在所做的工作是除了驱动什么都做),所以驱动方面的东西我就不太懂了(只做驱动的接口还行),但我做驱动的同事也许能帮到你,但给我的经验是"不停地看Spec,不停地试验" 🙂

BDF格式的字库转BMP工具_BDF2BMP

 

     由于我们D600项目需求大字体,而我们只有BDF格式的字库,要转成VIA平台所需要的数组形式的字体数据。
     VIA有两个工具,FontConvert,能把BMF格式的转为数组形式的,FontGener可以把一组以对应的Uniconde编码命名的BMP图像的字体文件转成数组形式的。
    
但首先要把BDF转成BMP,在网上找到一个开源的程序BDF2BMP,它可以生成一张巨大的BMP图片,进行了修改BDF2BMP2009,它现在可以生成一张张独立的BMP文件,有些参数需要根据坏境定制一下,这部分没做到可选参数,所以就把源码发出来,有需要的自己再改动一下,在VC6~9中直接编译运行即可。

关于多域名WCF配置出错问题

当只有一个域名(如www.a.cn)指向程序时,一切ok
当另外一个域名(如a.cn)也指向程序时,html页面可以访问,但是wcf出错

错误提示:此集合已经包含方案 http 的地址。此集合中每个方案中最多只能包含一个地址

曾被这个问题困挠了许久,在网上也搜了好久,哈哈,终于找到了解决办法
通过在webconfig里面添加这个解决了这个问题:

<serviceHostingEnvironment>
   
<baseAddressPrefixFilters>
        <add prefix="http://www.a.cn" />
   
</baseAddressPrefixFilters>
</serviceHostingEnvironment> 

我试过这样是可行的,当然,还有更复杂的解决办法如“通过添加ServiceHostFactory”
这是好不容易找到的解决方案的地址:VIEW

 

新年新的开始

如果你够细心,会发现我把网站做了一些小小的改动,哈哈,主要增添了New与Works List 的更多列表显示。后天就要上班了,这次共休息了12天,不用加班,难得的幸福:)新的一年到来了,各项工作即将展开。