预览模式: 普通 | 列表

奇迹诞生

Lua脚本编辑器(可直接运行Lua 脚本)

最近有个项目需要一个脚本编辑器,选了Lua作为脚本语言,正好在写了个,

目前功能还是很简单,还没有调试功能,还有很多路要走,

暂时对初学者应该还是有帮助的.

查看更多...

分类:个人日志 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 453

C++完美实现Singleton模式

1. 意图
  保证一个类仅有一个实例,并提供一个访问它的全局访问点。
2. 动机
  对一些类来说,只有一个实例是很重要的。虽然系统中可以有许多打印机,但却只应该有一个打印假脱机( printer spooler),只应该有一个文件系统和一个窗口管理器。一个数字滤波器只能有一个A / D转换器。一个会计系统只能专用于一个公司。
  我们怎么样才能保证一个类只有一个实例并且这个实例易于被访问呢?一个全局变量使得一个对象可以被访问,但它不能防止你实例化多个对象。一个更好的办法是,让类自身负责保存它的唯一实例。这个类可以保证没有其他实例可以被创建(通过截取创建新对象的请求),并且它可以提供一个访问该实例的方法。这就是Singleton模式。
3. 适用性

查看更多...

分类:技术文摘 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 77

WM获取GPS数据

GPS功能Windows Mobile手机定位可以通过GPS获取手机所在的详细地址,民用一般误差在5米到50米之间的范围内。通过使用GPSApi文件中包含的一下四个函数,由GPS中层驱动程序(GPSID)提供,可以通过它使用GPS设备并实时更新手机所在位置的信息。注意包含GPSAPI.h头文件与GPAAPI.lib静态链接库。(在做gps方面开始时可以参照sdk的几个Demo)
GPSOpenDevice
GPSGetPosition
GPSGetDeviceState
GPSCloseDevice

   一、下面分别介绍各个函数的功能,参数以及具体怎样实现使用这些函数。

     1.GPS_POSITION
结构
   在介绍各个函数之前,要先介绍GPS_POSITION数据结构,他用来存放GPS定位所需要的各种信息。

typedef struct _GPS_POSITION {
   DWORD dwVersion; 
//GPSID的版本号,在调用GPSGetPosition之前赋值,暂时必须被赋值为GPS_VERSION_1
   DWORD dwSize;    //GPS_POSITION结构的大小,同样应先用sizeof给它赋值
   DWORD dwValidFields;// 结构实例中的有效空间标记,标记结构中哪些值有效
   DWORD dwFlags; //在调用GPSGetPosition函数时修改过的数据的状态
   SYSTEMTIME stUTCTime; //根据GPS卫星提供的信息获得的宇宙时间
   double dblLatitude;   //纬度,单位”度”,正数表示北
   double dblLongitude; //经度,单位”度”,正数表示东
   float  flSpeed;      //移动速度,单位“KNOTS”(海里),估计是海里/小时
   float  flHeading;   //移动方向,单位“度”,数值为偏北往顺时针的度数
   double dblMagneticVariation;   //正北与地磁北极角度差,整数表示往东的度数
   float  flAltitudeWRTSeaLevel; //距海平面高度
   float  flAltitudeWRTEllipsoid;//距椭球面高度
   GPS_FIX_QUALITY     FixQuality;
   GPS_FIX_TYPE        FixType;
   GPS_FIX_SelectION   SelectionType;
   
float flPositionDilutionOfPrecision;
   
float flHorizontalDilutionOfPrecision;
   
float flVerticalDilutionOfPrecision;

   DWORD dwSatelliteCount; 
//获取以上信息使用到的卫星数量
   DWORD rgdwSatellitesUsedPRNs[GPS_MAX_SATELLITES];

   DWORD dwSatellitesInView; 
//GPS硬件设备可见范围内的卫星数量
   DWORD rgdwSatellitesInViewPRNs[GPS_MAX_SATELLITES];
   DWORD rgdwSatellitesInViewElevation[GPS_MAX_SATELLITES];
   DWORD rgdwSatellitesInViewAzimuth[GPS_MAX_SATELLITES];
   DWORD rgdwSatellitesInViewSignalToNoiseRatio[GPS_MAX_SATELLITES];
} GPS_POSITION, 
*PGPS_POSITION;

 

    通过以上可以知道,要获取GPS定位信息,必须定位一个GPS_POSITION变量保存其信息,且在使用GPSGetPosition函数前要将其前两个参数分别赋好值。

      2.GpsOpenDevice
    函数原型如下:
    函数功能:建立程序同GPS中间驱动的连接,获得句柄。
    前两个参数为HANDLE型,都通过CreateEvent的返回值给它们赋值。如:
1个参数:    HANDLE       hNewLocationData  CreateEvent生成的句柄或者为NULL当有新的GPS定位信息时,这个事件被GPS中间驱动设置为信号态。
2个参数:    HANDLE       hDeviceStateChange  CreateEvent生成的句柄或者为NULLGPS设备位置发生改变时,驱动将其设置为信号态。
3个参数:必须为NULL
4个参数:必须为0
返回值:成功则返回GPS中间驱动句柄。失败则为NULL

      3.GPSGetPosition
1个参数:HANDLE   hGPSDevice  GPS设备句柄。GPSOpenDevice函数打开的设备句柄。这个参数可以为NULL,此时函数不会启动GPS设备。但函数会返回其他程序调用GPS驱动后保留的数据。这个数据满足dwMaximumAge设置的时间值。
2个参数:GPS_POSITION *pGPSPosition  GPS_POSITION结构指针。函数将填充这个结构。用户必须输入结构版本和大小参数值。 4个参数:    DWORD         dwFlags  保留值为0
返回值:成功:ERROR_SUCCESS  失败:错误信息。
GPSGetDeviceState
DWORD GPSGetDeviceState(
  GPS_DEVICE *pGPSDevice
);
函数功能:获取GPS硬件设备的当前状态信息。
参数:GPS_DEVICE *pGPSDevice GPS_DEVICE结构体指针。
返回值:成功:ERROR_SUCCESS  错误:错误编号。

      4.GPSCloseDevice
函数功能:关闭GPS设备句柄。
参数:HANDLE hGPSDeviceGPSOpenDevice打开的GPS设备句柄。
返回值:成功:ERROR_SUCCESS  错误:错误信息。


二、GPS具体实现细节

 

HANDLE GPSOpenDevice(
  HANDLE       hNewLocationData,
  HANDLE       hDeviceStateChange,
  
const WCHAR *szDeviceName,
  DWORD        dwFlags
);

查看更多...

分类:技术文摘 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 320

使用CryptoAPI解析X509证书和P12证书


一、解析X509证书
 二、解析P12证书
 

查看更多...

分类:技术文摘 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 156

联通3G - WCDMA 小用

      实在是受不了蹭网这种既不文明又受制于人的行为了,一狠心买了张1200块钱包年每月3G流量的WCDMA资费卡(实际花费799,也就是每一个月66.6元),熬到16号开卡(省了48块钱的半个月费用)凌晨3点上线测试,用的是沃达丰的 GX1020 内置PCMCIA接口卡 连接速度 7.2M.随便百度个mp3 下载速度150K 左右徘徊,还算可以 估计迅雷速度会快些,小测了20分钟,上床睡觉..

     上午上班继续测试发现这个内置卡貌似对Win7支持不太好,跟老板交涉了下,全额退款且回去的邮费由老板出呵呵,真是个好老板啊. 重新选了个国内华为的E180V网卡,这个卡可是HSDPA/HSUPA的,应该够未来几年用的了.店主下午就发货了,明天应该就到了,到时候再继续发个使用感受.

总结:3G国内已经开通有些时日了.总算搭个小车赶上移动互联小游了下,效果蛮好,比ADSL方便,对于我们这样白天上班晚上回家的人来说,选流量套餐貌似是一个非常好的选择,需要下载的都在单位下了.在家需要的流量反而很少.比限时好处是,挂着QQ出去兜一圈不用担心时间溜走而期间产生的流量却非常少.

查看更多...

分类:个人日志 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 28

C++ like format for std::string

分类:信手拈来 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 76

一个不错的16进制文本到数字的转换

#include <windows.h>
#include <stdio.h>

///////////////////////////////////////////////////////////////////////////////
// hex to asc: 0x22 -> "22"

查看更多...

分类:信手拈来 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 60