舟's profile快乐的舟PhotosBlogListsMore Tools Help

Blog


    June 20

    从家里回来了

    从常州回到南京,从一个火坑跳到了另一个火坑
    家里虽然有空调,虽然有美食,虽然有电视,可是不能给我带来一点乐趣,无聊至极,竟然看起了《哑巴新娘》之类的连续剧,整天就是三、吃了睡,睡了看,看了再吃,吃了再睡。。。。如此循环
    总算回到可爱的学校了,乖乖,不得了肋,一下子没了空调,人就完全成了蒸笼里的肥肉了,冒汗,冒汗,还是冒汗。。。。
    天大地大,却没有我的容身之地
    June 13

    常用电脑软件推荐

    电脑里的软件,在精不在多
    我平常也喜欢收集一些常用好用的软件,推荐给大家。
     
    解压缩:不用说 winrar  经典软件
    网页浏览: Maxthon    采用ie内核,功能和易用性绝对超过IE6
    下载: 迅雷  国产精品软件,支持,速度比flashget快   bt下载用bitcomet
    邮件浏览 : Foxmail 不错的垃圾邮件识别功能
    聊天 : QQ,MSN  没什么好说的
    网络电视: ppstream,pplive 各有千秋
    网络杀毒: 自己找吧
    办公软件: office             绝对主导
    PDF查看: adobe reader   很常用的软件
    图像处理: PS           专业软件,难用
    图像浏览: ACDSee   也可以不装,用Windows自带的就好了
    虚拟光驱: DaemonTools  体积小,功能强
    数码相片管理: Picasa2  Google推出的免费软件,相片处理功能十分强大,适合不会用ps 的初学者
    媒体播放: 影音风暴  有它在 ,其他一切播放器统统删掉
    MP3播放器: 千千静听    国产软件,很不错,可以和winamp媲美,占用资源更少
    磁盘整理: Diskeeper   很强大,不过好像是收费软件,免费版功能少,貌似找不到破解版
    系统优化: windows优化大师  还不错,网上到处有破解版
    桌面美化: StyleXP  专业美化桌面软件,国外的
    输入法: 微软拼音   只会用拼音输入法,这款是用的最舒服的
     
     
     
     
     
     
    June 08

    PocketPC上的GPS开发4

    实现界面,一个是定位,一个是追踪

    PocketPC上的GPS开发3

    1.1.1双线程协同工作

    获得当前的经纬度和显示当前的经纬度分别属于两个不同的功能模块,GPS模块不断地从GPS卫星上接收到的信号,并将它们分离出经纬度信息;GIS模块不断地将GPS模块处理完的经纬度显示在数字地图上。两个行为必须同时工作。因此,采用双线程技术,设置为两个不同的线程。

    OpenGPS()函数执行时,创建新的读GPS数据的线程,该线程循环地从缓冲区读取数据,调用解析数据函数解析出经纬度信息。

    由于经纬度信息不需要很频繁地更新,在GIS线程中设置一个计时器Timer,每隔3秒钟GIS线程读取一次经纬度信息。

    将更新GPS数据的操作放入临界区,进一步协调线程之间的通信,以避免GIS线程读到无效数据。

    部分实现代码如下:

    readThread = CreateThread(NULL,0,ReadData,(LPVOID) &data,0,&threadID);

    //新建线程

    DWORD  WINAPI ReadData(LPVOID a)….//线程执行函数

    1.1.2 显示GPS信息

    GPS部分仅仅能获得当前的GPS定位信息,要将它们显示给用户还需要GIS的功能。

    MapX中,通过MapX对象新建一个专门用于显示GPS的图层。当GPS定位时,新建MapX中的点对象,将经纬度数据作为参数传递给它,通过对点的操作将该点画在新加层上。当GPS追踪时,新建一个点集合,每隔一段时间,将新的坐标点加入该集合,通过画图函数将点连接起来并在添加层显示,随着界面的不断刷新,运动轨迹就不断在地图上显示。

    部分实现代码如下:

    CMapXLayer l;

    CMapXFeature tt;

    l = m_ctrlMapX.GetLayers().Item(1); //获取GPS

    CMapXStyle style = this->m_ctrlMapX.GetDefaultStyle().Clone();

    style.SetLineColor(255); //设置样式

    style.SetLineWidth(2);

    VARIANT s1;

    s1.vt = VT_DISPATCH;

    s1.pdispVal = style.m_lpDispatch;

    CMapXPoints ps;  //建立点集合

    ps.CreateDispatch(ps.GetClsid());

    VARIANT p1;

    p1.vt = VT_DISPATCH;

    ps.AddXY(tempX,tempY);

    ps.AddXY(position_X,position_Y);  //将新的坐标点加入点集

    p1.pdispVal = ps.m_lpDispatch;

    tt = m_ctrlMapX.GetFeatureFactory().CreateLine(p1,s1); //显示轨迹

    l.AddFeature(tt);

    l.Refresh(); // 刷新页面

    PocketPC上的GPS开发2

    1.1 具体实现

    1.1.1 开启GPS端口

    GPS接收机一般通过COM4端口与PocketPC设备连接,在Windows CE操作系统中,不支持直接对串口进行操作,所有的端口均被视为"文件",因此在对串口进行侦听之前需要通过打开文件来打开串口,并对其进行相关参数配置。

        Windows CE下打开文件的操作是CreateFile()函数,若打开端口成功,则函数返回一个HANDLE类型的值,通过对该值的引用来进一步进行和串口的数据通信。此时,程序源源不断地从COM4端口读取GPS数据,并将它们添加到预置的缓冲区中。

        打开端口后,还必须对两个结构体COMMTIMEOUTSDCB进行初始化。COMMTIMEOUTS设置通讯设备的超时参数。DCB为设置串口的配置参数,由于GPS采用的是NMEA 0183协议,该协议规定了特定的串口配置,因此需要将DCB初始化为NMEA 0183协议规定的配置。

    部分实现代码如下:

    hComm = CreateFile(L“COM4:”,GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, 0); //以异步方式打开串口 

    SetupComm(hComm, 4096, 4096); // 设置缓冲区

    COMMTIMEOUTS ctoCommPort;   //设置COMMTIMEOURS 结构体

    ctoCommPort.ReadIntervalTimeout = MAXWORD;

    ctoCommPort.ReadTotalTimeoutConstant = 0;

    ctoCommPort.ReadTotalTimeoutMultiplier = 0;

    SetCommTimeouts(hComm,&ctoCommPort); 

    DCB dcbCommPort;  //设置DCB结构体

    dcbCommPort.BaudRate = 4800;

    dcbCommPort.Parity =0;

    dcbCommPort.ByteSize = 8;

    dcbCommPort.StopBits =0;

    SetCommState(hComm, &dcbCommPort);

    1.1.2 读取GPS数据

    对串口的操作都映射成对文件的操作,因此,读取串口的数据相当于读取文件的数据,使用ReadFile()函数不断循环地从缓冲区读取数据。为了协同读写程序,设置一个消息事件来标记缓冲区的状态。当缓冲区没有数据时,读数据线程处于等待状态,一旦有新的GPS数据发送到缓冲区,程序触发消息事件,发送事件信号来唤醒读数据线程启动ReadFile()函数读取数据。

    部分实现代码如下:

    SetCommMask(hComm,EV_RXCHAR);  //添加windows消息事件

    WaitCommEvent(hComm,&dwEvtMask,NULL); // 等待事件

    if ( (dwEvtMask&EV_RXCHAR) == EV_RXCHAR ) //事件触发

    ReadFile(hComm,m_readbuff,ComStat.cbInQue,&dwLength,&moverlapped);

    //读缓冲区数据

    1.1.3 解析GPS数据

    将一条条GPS电文数据从缓冲区读出后,就必须对电文进行解析以取出所需要的信息。对GPS定位和跟踪功能有用的是GPS推荐定位信息(GPRMC),该电文信息的格式为:

    $GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*hh<CR><LF>

        通过对电文的帧头是否为“$GPRMC”,可以将所有的GPRMC格式电文取出。电文内容中不同部分由“,”隔开,可以以“,”为分隔符,将电文内容分割成不同的部分。<2>的内容表示GPS数据是否有效,取值A=有效定位,V=无效定位,当有效定位时,得到的经度纬度才有效。<3><4>为经度信息,<5><6>为纬度信息。通过字符串的操作可以简地取出有效的地理数据。

    部分实现代码如下:

        for(int i=0;i<gpsStr.GetLength();i++){

                         if(gpsStr[i] == L'$') {  

                                SectionID = 0; //逗号计数器

                                GP_str = L"";

                         }

                         if(gpsStr[i] == L',') {

                                SectionID++;

                         }

                         else

    {

                                if(SectionID == 0){

                                       GP_str += gpsStr[i]; //帧头

                                }

                                else

                                {

                                       if(GP_str == L"$GPRMC"){

                                              switch(SectionID)

                                              {

                                              case 2:

                                                     if(gpsStr[i] == L'A')  //GPS定位有效位

                                                            data->GPS_A = true;

                                                     else

                                                            data->GPS_A = false;

                                                     break;

                                              case 3:

                                                     c_sPositionY += gpsStr[i]; //纬度信息

                                                     break;

                                              case 5:

                                                     c_sPositionX += gpsStr[i]; //经度信息

                                                     break;

                                              default:

                                                     break;

    }

                                       }

                                }

                         }

    PocketPC上的GPS开发1

    我毕业设计做的是基于PocketPC的校园通系统,主要开发里面的GPS定位和跟踪模块。毕业论文写完了,从里面贴点实现部分出来,希望对有需要的人有帮助。
     
     

    第一章 GPS功能实现

    1.1 开发环境

    1.1.1 开发平台

    CampusGIS系统是在PocketPC上开发的,它的操作系统是Microsoft Windows CE

    Microsoft Windows CE 是微软专门开发的应用于嵌入式设备上的操作系统。与其他嵌入式操作系统相比,它有强大的Internet功能,多媒体功能,高度模块化,很好的开发支持环境,与Windows系列兼容等优点。

    1.1.2 开发工具

    CampusGIS系统是由MapX  Mobile + EVC + Pocket  Acess开发的。

    GPS功能开发时,主要用到MapX  Mobile EVC两个开发工具。通过EVC编写主程序代码,包括界面,GPS数据读取及处理等。通过MapX Mobile提供的组件来辅助实现GIS功能。

    1.MapX Mobile

    MapInfo MapX Mobile是一个专门为移动用户,专业技术人员创建的基于绘画应用的开发工具,可以为PocketPC开发新的移动软件。

    MapX Mobile MapX for Windows的自然延伸,Windows的程序员可以用它来开发Mobile软件。用 MapX Mobile 建立的软件可以单独在PocketPC上运行,并且能够和PocketPCWindows CE 操作系统兼容。在地图数据方面,MapX Mobile支持Mapinfo.tab,因此在移动地图软件里可以直接使用在Windows下创建的地图对象,并不需要无线连接,把数据下载到本地直接激活就可以运行。在跟踪定位方面它可以通过连接在PocketPC上的GPS设备来显示坐标,并在移动地图软件中显示相应的地里位置。

    Mapx Mobile 具有如下主要的功能特征:

    1.    主题映射:用于可视化数据,把数据和地图上的特征联系起来

    2.    数据绑定:将外部数据引入MapX Mobile,实现外部数据与地图空间数据的连接

    3.    注记:对地图添加文本对象和符号对象

    4.    图层化:显示和控制地图图层,每个图层包含整个地图的一个方面,包含不同的地理特征

    5.    选择集:标识选择满足特定条件的地理特征

    6.    栅格地图:将栅格地图置底,使地图背景更具体生动

    7.    地图编辑:让用户添加,修改,删除地图上的特征

    2. EVC

    EVCEmbedded Visual C++)是Windows CE上的主流开发工具,封装了加密/解密、网络底层通讯、COM互操作、RAPI等等。EVC支持MFC类库的子集,可以给开发者提供最强大的支持,也使Win32平台上的VC程序员可以很容易地迁移到Windows CE平台上。需要注意的是,EVC开发的程序是在PocketPC上运行的,只支持unicode ,因此,在EVC下编程要注意编码问题。

    1.1.3 平台搭建

    为了进行Windows Mobile开发,需要搭建相应的开发环境。

        1.安装Embedded Visual C++

        如果使用C/C++语言来进行native开发,或者想在Windows Mobile设备上开发COM组件及应用,可以选择EVC作为开发工具。目前EVC的最高版本为4.0 + SP4

        2.安装Pocket PC 2003 SDK

        为了开发Pocket PC 2003应用程序,需要安装Pocket PC 2003 SDK

    由于本系统是在中文Windows CE 环境下开发的,需要下载中文版SDK

    3ActiveSync环境搭建

    ActiveSync是一款管理Windows Mobile设备连接、与PC进行数据同步的工具。如果开发时使用的是真实设备,则最好事先安装ActiveSync使之与PC机连接。可能的执行操作包括:向设备/模拟器中复制文件,从设备/模拟器中删除文件,与设备/模拟器同步数据,开发和调试包含RAPI (Remote API)功能的应用。

    比女人还漂亮的男人-----李俊基

    昨晚看了《王的男人》后,突然惊叹世间竟有如此美丽的男子。
     
    June 06

    要答辩了

         明天就要毕业论文答辩了,心里好紧张,四年来的努力一朝揭晓。
    虽然论文写得挺详细了,虽然也准备好多了,虽然明天答辩的老师不是特严格,虽然大部分人都会过得,可是心里就是莫名地紧张,紧张。
         这种感觉现在已经很少来了,因为现在的生活中少了一份激情。上次紧张估计就是考研那会儿吧。
         。。。。。。。。。。。。。。。。。。。。。。
         明天在台上应该不会太紧张的啦,面对答辩老师最基本的要领就是谦虚。在老师面前,学生永远是孙子:)
        
     
     
    不写了,还是多看几遍论文吧。
     
    明天看RP了。
     
    上帝保佑我,阿门!
    June 01

    看看你的星座,测测你的运气哦

    今日星运
    请选择 白羊座 金牛座 双子座 巨蟹座 狮子座 处女座 天秤座 天蝎座 射手座 摩羯座 水瓶座 双鱼座
    本周星运
    请选择 白羊座 金牛座 双子座 巨蟹座 狮子座 处女座 天秤座 天蝎座 射手座 摩羯座 水瓶座 双鱼座
    本月星运
    请选择 白羊座 金牛座 双子座 巨蟹座 狮子座 处女座 天秤座 天蝎座 射手座 摩羯座 水瓶座 双鱼座
    自我星座查询
    请选择阳历生日
    每日塔罗占卜
    how to add a hit counter to a website
    View My Stats

    摆弄BLOG

    玩了一天BLOG,现在俨然成了自己的一个小家了
    于是就把自己的这个“家”,这边修修,那边补补,
    把版面重新排了一下
    背景换了一下
    添加了一个媒体播放器
    添加了一个天气预报
    添加了网页访问人数计数器
    添加了显IP的小程序
    哈哈
    我的家现在看起来有点像样了哦
    赞自己一个先
     

    吃在浦口

    在浦口生活了四年,吃了四年。学校食堂的饭菜么。暂且不评论其好坏。校园外的那个小吃广场却深深吸引着我。马上就要离开了,发一些他们的照片怀念一下。

    how to add a hit counter to a website
    View My Stats
     

    一个文盲开始写BLOG了!

    前言:
    看着周围的人都有了自己的BLOG,突然觉得自己已经落伍了。
    于是,经几个高手传授经验以后,他也开始写B 了。
     
     
    正文:
    。。。。。。。。。。。。。。。。。。。。。。。
    。。。。。。。。。。。。。。。。。。。。。。。
    。。。。。。。。。。。。。。。。。。。。。。。
    。。。。。。。。。。。。。。。。。。。。。。。
    。。。。。。。。。。。。。。。。。。。。。。。
    。。。。。。。。。。。。。。。。。。。。。。。
     
     
    就这样,一片处女作完成了
    从此,世界上少了一个文盲
     
     
     
     
     
     
    。。。。。。。。。。。。。。。。。。。。。。
    小时候最怕的就是写作文了,其实现在写BLOG的 真正原因嘛,就是看了别人的BLOG羡慕。可是自己没有BLOG,不好意思在别人的BLOG上发表评论。
    how to add a hit counter to a website
    View My Stats