Archive

Archive for March, 2010

三星i7500搜索联系人的bug

March 14th, 2010 will No comments

在通过刷机解决了i7500的待机时间问题之后,使用联系人搜索发现,与以往三星手机一样,依然不知道联系人拼音首字母查找,明明有的联系通过姓名搜索不出来。通过姓可以搜出一部分此姓的联系人,奇怪了,最初怀疑是我替换了系统的联系人排序libicudata.so库文件所致,libicudata.so存在bug。在观察发现,可以搜出来的都是我后来通过手输入的联系人,搜不出来的联系人是从sim卡导入的,找到这个规律就好办了,将手机中的联系人,挨个再存一遍就ok了。

觉得买i7500看中还是它的外形与做工,尽管很多同学说棒子货做工太乱,但是以我第一个三星手机S508(港版)的使用来看,从04年1月到10年1月,无论从做工还是质量都是没得说的。再说了三星干过Motorola成为世界手机品牌老二不是盖的。一直认为三星手机的软件实力很弱,想这款手机采用google操作系统,应该很强大了,但还是不尽如人意。

Categories: 生活记录 Tags:

延长i7500待机时间的方法

March 11th, 2010 will No comments

入手i7500已经一个多月了,刚开始除了使用不习惯外,最不爽的就是它的待机时间太短,一般就是24小时。但后来参考这个http://androidforums.com/samsung-i7500/14041-improving-troubleshooting-battery-life.html,使待机时间增加到60+小时了。不打算直接翻译,说说我的“汉化”做法。

首先是刷机将手机中的白熊版系统换成最新的L3版(据说本来就很省电)。
关闭GPS、蓝牙、WIFI、同步、APN,仅用2G网络。
作者安装spare parts的目的,只是为了查看电池的状态信息与休眠的时间,L3版系统中输入*#*#4636#*#*即可查看,电池历史记录,选择“正在运行”,如果此此时间与你开机的时间差不多,那就证明你的系统中安装有使系统推出休眠的软件。可以通过adb logcat来查找耗电的软件。这个adb logcat我也没有用过,我所使用的软件似乎都不怎么耗电O(∩_∩)O哈哈~

注:使用过程中发现,开机的状态不同可能会出现某次有比较耗电情况出现,重启一次可能就好了。

Categories: 生活记录 Tags:

编程读取注册表获取串口信息(支持Vista)

March 10th, 2010 will No comments

在编写串口通信程序时,经常需要列举计算机上目前可用的串口。最简单的方法是通过CreateFile串口号1~256(XP系统系统下最大支持的串口号为256),查看返回值,如果返回非INVALID_HANDLE_VALUE就证明此串口号存在。此方法简单实用,因为在只有一个串口的情况也需要遍历256个串口,需CreateFile256次,效率较低,而且不能显示目前正在使用的串口号。

下面介绍通过读取注册表获取串口号与串口个数的方法。

#define MAXCOMNO 256  //最大COM号256
typedef struct{
 char name[8];
 short no;
}SCOM;

/////用读注册表的方式查看系统的串口设备
void GetAvailableCom(SCOM *port,int &cnt)
{
 HKEY  hKey; 
 LONG  ret; 
 OSVERSIONINFO    osvi; 
 BOOL  bOsVersionInfoEx; 
 CString  keyinfo;
 unsigned char comm_name[40];
 char ValueName[40];
 char szNO[3];
 int  i=0,j=0;
 cnt=0;
 DWORD  sType,Reserved,cbData,cbValueName;
 
 ZeroMemory(&osvi,  sizeof(OSVERSIONINFO)); 
 osvi.dwOSVersionInfoSize  =  sizeof(OSVERSIONINFO); 
 
 keyinfo.Format(_T("HARDWARE\\DEVICEMAP\\SERIALCOMM"));
 //CString  keyinfo=_T("HARDWARE\\DEVICEMAP\\SERIALCOMM");

 i=0;  sType=REG_SZ;Reserved=0; 
 bOsVersionInfoEx  = GetVersionEx(&osvi); 

 ret=RegOpenKeyEx(HKEY_LOCAL_MACHINE,keyinfo,0,KEY_ALL_ACCESS,&hKey); 
 if  (ret==ERROR_SUCCESS)
 {
  if  (osvi.dwPlatformId  ==  VER_PLATFORM_WIN32_WINDOWS)    //WIN32,not used
  { 
   for(i=1;i<=MAXCOMNO;i++) 
   {
    memset(comm_name, 0, 40);
    sprintf((char*)comm_name,"COM%d",i);
    ret=RegEnumValue(hKey, i, ValueName, &cbValueName, NULL, &sType, comm_name, &cbData);
    if(ret==ERROR_SUCCESS)
    {
     i++;
    }

   } 
  } 
  else  if  (osvi.dwPlatformId  ==  VER_PLATFORM_WIN32_NT) //WINNT XP 2000
  { 
   do   
   { 
    cbData=40;cbValueName=40; 
    memset(comm_name,0,40);   
    memset(ValueName,0,40);
    memset(szNO,     0, 3);
    ret=RegEnumValue(hKey, i, ValueName, &cbValueName, NULL, &sType, comm_name, &cbData); 
    if  (ret==ERROR_SUCCESS) 
    { 
     for(j=0;j<cbData;j++)
     {
      port->name[j]=comm_name[j];
      if(j>2 && j<6)
      {
       szNO[j-3] = comm_name[j];
      }
     }
     port->no = atoi(szNO);
     port++;
     cnt++;
     i++; 
    } 
   }while(ret==ERROR_SUCCESS); 
  } 
 }
 RegCloseKey(hKey);
}

port包含串口名称与编号,由于注册表中的串口名称排列并非安装串口号顺序排列而是随即排列的,便于界面中顺序列出串口号,故分别保存便于判断。cnt返回当前计算机中包含的串口数量。

注:由于在串口号大于8之后,不能直接用COM10来CreateFile,而要用\\\\.\\COM10的形式,而在COM8一下采用\\\\.\\COM1来CreateFile也是可以的。
在Vista下用此程序来读取串口号失败,其实并没有失败而是在Vista下访问注册表需要管理员权限。解决办法单击你的程序,右键属性,选择“兼容性”选项卡,勾选最下面的“请以管理员身份运行改程序”。

Categories: 学习笔记 Tags: , ,

星际2破解补丁2

March 7th, 2010 will No comments

 

目前星际2破解补丁2独立于星际争霸II版本,会自动启动最新版本的星际2游戏。
新增的支持推出录象与保存。
修正处理Unicode文件的路径问题。
高级用户可以使用命令行参数。

星际2 破解 补丁下载(原地址可能被强,这是提取后的地址,直接迅雷下载即可)

原文地址:http://teknogods.com/?p=427
详细介绍:http://teknogods.com/phpbb/viewtopic.php?f=13&t=2036

Categories: 网络应用 Tags: