当前位置:  编程技术>移动开发
本页文章导读:
    ▪xcode 怎么设置第三方库不使用ARC        xcode 如何设置第三方库不使用ARC 猴子原创,欢迎转载。转载请注明: 转载自Cocos2D开发网--Cocos2Dev.com,谢谢! 原文地址: http://www.cocos2dev.com/?p=283 xcode支持ARC技术,对于不熟悉内存管理的.........
    ▪ 惯用git命令及注意事项        常用git命令及注意事项常用git命令及注意事项 整个Android源码放在scm服务器上,我们首先要从服务器上获取源码,进行修改、编辑后再上传回服务器。获取源码的方法参考“获取源代码”。以.........
    ▪ 【物联网智能网关-06】GPS定位+星图展示(WinForm库应用实例)       【物联网智能网关-06】GPS定位+星图显示(WinForm库应用实例) 在2008年上半年就曾经深入研究过GPS,当时还以为已经相对全面的了解GPS呢,现在重新拾起去研究GPS技术,发现还是差了一大截。.........

[1]xcode 怎么设置第三方库不使用ARC
    来源: 互联网  发布时间: 2014-02-18
xcode 如何设置第三方库不使用ARC

猴子原创,欢迎转载。转载请注明: 转载自Cocos2D开发网--Cocos2Dev.com,谢谢!

原文地址: http://www.cocos2dev.com/?p=283

xcode支持ARC技术,对于不熟悉内存管理的是个不错的办法,但是有时自己项目使用了ARC,但是自己在项目中使用第三方库继续引用ARC,可能导致一些莫名的错误,这是最好对第三方库不要使用ARC。

 

如何设置第三方库不使用ARC的方法:

 

对于某些我们不希望使用 ARC 的文件,例如第三方库源文件,可以在 Project Settings -> Build Phases 中,对这些文件选中 -fno-objc-arc 标志。这样 Xcode 编译项目时,这些文件就不会使用 ARC。


    
[2] 惯用git命令及注意事项
    来源: 互联网  发布时间: 2014-02-18
常用git命令及注意事项
常用git命令及注意事项 整个Android源码放在scm服务器上,我们首先要从服务器上获取源码,进行修改、编辑后再上传回服务器。获取源码的方法参考“获取源代码”。以下是我们工作中常用到的git命令:
  • git clone
    该命令从服务器上克隆一份完整、最新的源代码,参考“获取源代码”
  • git pull
    执行该命令可将服务器端的代码同步到本地。当其他同时上传代码到服务器后,我们必须使用git pull命令将服务器上的代码同步到本地。*当我们准备提交代码时,必须先执行git pull命令,避免提交代码时发生冲突*。
  • git status
    查看代码中文件的修改状况。使用git status dir可以查看指定目录下的文件修改状况。
  • git diff
    对比代码修改前后的变动。使用git diff dir(or file)可以查看指定目录或文件的修改情况。
  • git add
    执行该命令将修改或者新增的文件加入到提交列表中。该命令需要指定增加的目录或者文件。
  • git comit
    该命令将提交列表中的文件提交到本地git代码库中。使用格式:git comit -m "提交注释,必须用英文写"
  • git push
    将本地git代码同步到服务器。
  • git log
    查看修改日志。可以带参数“--name-only”,列出修改文件名。带参数“-p”,以补丁的方式列出修改内容。
  • git reset
    该命令可以将已经使用git add命令增加到提交列表中的文件中移出。使用格式:git reset file
  • 注意事项
  • 修改和提交代码一定要仔细、仔细,再仔细,因为每个人提交的代码都会影响到整个团队的开发。
  • 在每次用git add文件时,最好用git diff查看修改内容,确认这些内容是否需要修改?是否有自己增加的无用的调试信息?是否有不小心误删的内容?代码对齐、整洁度是否良好等?
  • 在每次准备提交代码时,必须先执行git pull命令,将远程服务器的代码同步到本地。然后尽量在较短的时间内完成git add、git comit、git push的动作。在执行git comit前再执行一次git pull,确认服务器端代码没有修改后,然后再执行完git comit,紧接着执行git push,将代码推送到服务器,避免中间有其他同事提交代码导致代码冲突而无法推送到服务器。一定要查看git push命令是否执行成功。
  • 如有疑问请找同事帮忙,请勿在服务器上随意试验git命令。
  • 获取源代码
    git clone gitolite@scm:RK3066/SDK4.0
    

        
    [3] 【物联网智能网关-06】GPS定位+星图展示(WinForm库应用实例)
        来源: 互联网  发布时间: 2014-02-18
    【物联网智能网关-06】GPS定位+星图显示(WinForm库应用实例)

     在2008年上半年就曾经深入研究过GPS,当时还以为已经相对全面的了解GPS呢,现在重新拾起去研究GPS技术,发现还是差了一大截。最初以为GPS是单向通信,GPS模块按照固定的时间间隔发送文本格式的GPS数据。现在才知道GPS不仅可以双向通信,还可以以二进制格式收发数据,并且可以配置需要发送数据的种类和发送间隔,当然必要的时候,还可以用专门的工具,更新GPS模块的固件。

    最初了解GPS,是基于WINCE平台,为写一本书而做,详情请参见《实战WindowsEmbedded CE 6.0—GPS篇》和《我的第一个WINCE驱动》。后来为了便于调试,又把程序移植到Windows Mobile手机上(采用.NET精简框架集的Winform完成,本篇.NET MF界面代码就是基于原先的这套代码,稍作改进而来,而底层接收代码,添加了校验和更全的GPS命令解析),相关博文请参见《GPS NMEA0183协议解析》。

    现在重新研究GPS,是为物联网网关系统封装一个GPS库,最初的时候,购买了几个低价二手的GPS模块,但是却无法定位,在阳台附近无法定位也就算了,但是我直接到空旷的大操场也无法定位,并且没有一个星的信号。所以后来只好又购买一个价钱较高,带有源天线的GPS模块。

    这个带外接天线的模块果然不错,信号强度蛮强,但是我在购买的时候犯了一个错误,选型的时候,选择了“4800bps GPRMC数据包输出,不带PPS”,所以就只能输出$GPRMC基本信息了,但是这样星图就无法显示了。

    由于技术支持不在线,所以只好先自己想办法解决这个问题了。我想应该有两种思路可以解决这个问题,一是更新固件。但是这种方法显然需要技术支持来提供相应固件,如果自己找相关工具和固件进行烧写,难免会出问题(后来问了技术支持才知道,还得飞一个线,进入烧写模式才行);二是配置信息输出。这种方法最方便,问题是,掉电配置就丢失了,但是这个GPS板子带纽扣电池,所以问题不大。

    有了第二种思路,然后网上就进行搜索,果然功夫不负有心人,搜到了如下信息:

        NMEA信息输出控制

    $PSRF103,00,01,00,01*25<CR><LF>

    格式说明(Set Serial Port Data Format):

    Name

    Example

    Unit

    Description

    Message ID

    $PSRF103

     

    PSRF103 protocol header

    Msg

    00

     

    0:GGA

    1:GLL

    2:GSA

    3:GSV

    4:RMC

    5:VTG

    6:MSS (If internal beacon is supported)

    7:Not defined

    8:ZDA (if 1PPS output is supprttd)

    9:Not defined

    Mod

    01

     

    0 = Set Rate

    1 = Query one time

    2 = ABP On

    3 = ABP Off

    Rate

    00

     

    Output Rate:

    0 = Off

    1–255 = seconds between messages

    CksumEnable

    01

     

    0=Disable Checksum

    1=Enable Checksum

    Checksum

    *25

     

     

    <CR><LF>

     

     

    End of message termination

    示例

    关闭GGA:

    $PSRF103,00,00,01,01*25

    设置GGA为5秒输出一次:

    $PSRF103,00,00,05,01*21

     

    关闭GSA:

    $PSRF103,02,00,00,01*26

    设置GSA为5秒输出一次:

    $PSRF103,02,00,05,01*23

             但是由于NMEA有校验,所以还需要一个专门的工具来设置才行,所以又找到了SiRFLive软件,这个软件很不错,可以方便的调试GPS模块。也许是供电的问题,我这次在阳台测试我原先的GPS模块,居然可以定位成功了。下图便是该GPS模块使用SiRFLive软件进行测试的效果图。


    如果需要配置GPS,直接进入命令发送窗口即可,记得选择NMEA协议。

    修改了相关配置,新购买的GPS果然可以输出星图信息了,在物联网智能网关上的运行效果图如下:

    GPS库相关内容我这里就不细说了,文档里面有详细的说明。我这里说一下,在.NET Micro Framework平台,如何进行Winform界面开发(WinForm for .NET MF 功能一览)。

    本实例程序,GPS相关函数一旦执行,会自动把GPS模块的相关参数赋值到GPS类的相关属性中去。界面绘图我们采用重载Form类的OnPaint方法,为了避免闪烁,我们还采用了在Windows编程中常见的技巧,就是重载OnPaintBackground方法,不去绘制背景。

             protected override void OnPaint(PaintEventArgse)

        {

            try

            {

                e.Graphics.Clear(Color.Gray);   //绘制背景

                //--------------------------

                //绘制信噪比图

                DrawSNR(e.Graphics, new Rectangle(2,240 - 80, 320 - 4, 80));

                //绘制星图

                DrawSatellite(e.Graphics, new Rectangle(10,60, 100, 100));

     

                //状态

                e.Graphics.DrawString("状态:" + (GPS.Online ? "已连接 " : "未连接 ") + (GPS.Manage.AnchorState == "A" ? "已定位" : "未定位"), font, sb, 5, 8);

     

                //坐标

                e.Graphics.DrawString("坐标:" + GPS.Manage.ToString("D"),font, sb, 5, 25);

                //pb_Graphics.DrawString("坐标:" + GPS.Manage.Latitude.ToString()+ " " + NMEA.GPS.Longitude.ToString(), font, newSolidBrush(Color.White), 5, 25);

     

                //时间

                e.Graphics.DrawString("时间:" + GPS.Manage.UTCDateTime.ToString(), font, sb,150, 25);

                //-------------------------------

                //卫星数

                e.Graphics.DrawString("卫星:" + GPS.Manage.SatelliteNum.ToString() + " 颗", font, sb, 130, 60);

                //定位状态 0=未定位,1=GPS单点定位固定解,2=差分定位,3=无效PPS,4=RTK固定解,5=RTK浮点解,6=估计值,7=手工输入模式,8=模拟模式

                e.Graphics.DrawString("状态:" + strState[GPS.Manage.AnchorSStateEx], font, sb,130, 75);

                //获取定位模式(A=自动,M=手动)。

                e.Graphics.DrawString("模式:" + (GPS.Manage.AnchorMode == "A" ? "自动" : "手动"), font, sb, 130, 90);

                //定位类型(1=未定位,2=2D定位,3=3D定位)

                e.Graphics.DrawString("类型:" + strType[GPS.Manage.AnchorType], font, sb, 130,105);

                //海拔

                e.Graphics.DrawString("海拔:" + GPS.Manage.Altitude.ToString("F2") + "("+ GPS.Manage.Height.ToString("F2")+ ")", font, sb, 130, 120);

                //速度

                e.Graphics.DrawString("速度:" + GPS.Manage.KSpeed.ToString("F2"), font, sb, 130, 135);

                //方向

                e.Graphics.DrawString("方向:" + GPS.Manage.Track.ToString("F2"), font, sb, 130, 150);

                //信息

                Microsoft.SPOT.Debug.Print(GPS.ErrorMessage);

            }

            catch {}

        }

    具体绘制绘制信噪比图的代码如下:

        private void DrawSNR(Graphicse, Rectangle rect)

        {

            Fontfont = new Font("Arial", 9, FontStyle.Regular);

            intFontHeight = 20;

            int SNRHeight= rect.Height - FontHeight;

            intSNRWidth = (rect.Width - FontHeight / 2) / 12;

     

            //绘制信噪比图

            e.DrawLine(newPen(Color.Gray),rect.Left, rect.Top, rect.Right, rect.Top);

            e.DrawLine(newPen(Color.Gray),rect.Left, rect.Top + SNRHeight / 2, rect.Right, rect.Top + SNRHeight / 2);

            e.DrawLine(newPen(Color.Gray),rect.Left, rect.Top + SNRHeight, rect.Right, rect.Top + SNRHeight);

     

            for (int i = 0; i < 12; i++)

            {

                stringstrPRN = GPS.Manage.Satellite[i].PRN.ToString();

                if(strPRN.Length == 1) strPRN = "0"+ strPRN;

                intHeight = (int)(GPS.Manage.Satellite[i].SNR *SNRHeight / 100);

                intfont_h, font_w;

                font.Value.ComputeExtent(strPRN, out font_w, outfont_h);

     

                //星号

                e.DrawString(strPRN, font, new SolidBrush(Color.White), (int)(rect.Left+ FontHeight / 4 + SNRWidth * i), (int)(rect.Top+ SNRHeight + 4));

     

                //信噪比

                e.FillRectangle(new SolidBrush(Color.Blue), new Rectangle(rect.Left + FontHeight / 4 + SNRWidth *i, rect.Top + SNRHeight - Height, font_w, Height));

            }

        }

    绘制星图的代码如下:

    private voidDrawSatellite(Graphics e, Rectangle rect)

        {

            Fontfont = new Font("Arial", 9, FontStyle.Regular);

     

            int X = rect.Left + rect.Width / 2;

            int Y =rect.Top + rect.Height / 2;

            intSize = (rect.Width > rect.Height ? rect.Height : rect.Width);

            int R =(Size - 12 * 2) / 6;

            int r =8;

     

            e.DrawLine(newPen(Color.Red),X - R * 3 - 12, Y, X + R * 3 + 12, Y);

            e.DrawLine(newPen(Color.Red),X, Y - R * 3 - 12, X, Y + R * 3 + 12);

     

            e.DrawEllipse(newPen(Color.Blue),new Rectangle(X- R, Y - R, R * 2, R * 2));

            e.DrawEllipse(newPen(Color.Blue),new Rectangle(X- R * 2, Y - R * 2, R * 4, R * 4));

            e.DrawEllipse(newPen(Color.Blue),new Rectangle(X- R * 3, Y - R * 3, R * 6, R * 6));

            e.DrawString("N",font, new SolidBrush(Color.White), X + 2, Y - R * 3 - 10);

            e.DrawString("S",font, new SolidBrush(Color.White), X + 2, Y + R * 3 + 2);

            e.DrawString("W",font, new SolidBrush(Color.White), X - R * 3 - 10, Y + 2);

            e.DrawString("E",font, new SolidBrush(Color.White), X + R * 3 + 2, Y + 2);

     

            //绘制卫星位置

            int X0= 0, Y0 = 0, L = 0;

            doubleA1 = 0, A2 = 0;

            StringFormatsFormat = new StringFormat();

            sFormat.Alignment = StringAlignment.Center;

            sFormat.LineAlignment = StringAlignment.Center;

     

            for (int i = 0; i < 12; i++)

            {

                if(GPS.Manage.Satellite[i].PRN > 0)

                {

                    A1 =GPS.Manage.Satellite[i].Elevation * Math.PI/ 180;

                    A2 =GPS.Manage.Satellite[i].Azimuth * Math.PI /180;

                    L = (int)(Math.Cos(A1) * 3 * R);

                   X0 = X + (int)(Math.Cos(Math.PI * 5 / 2 - A2) * L);

                    Y0 = Y - (int)(Math.Sin(Math.PI * 5 / 2 - A2) * L);

                    e.FillEllipse(new SolidBrush(Color.Blue), new Rectangle(X0 - r, Y0 - r, 2 * r, 2 * r));

                    e.DrawString(GPS.Manage.Satellite[i].PRN.ToString(),font, new SolidBrush(Color.White), new Rectangle(X0 - r * 2, Y0 - r * 2, 4 * r, 4 * r),sFormat);

                }

            }

     

        }

    从以上代码可以看出,在.NET Micro Framework系统中开发WinForm程序,和上位机没有什么区别,上面的代码也基本上也可以在windows桌面.Net程序中直接可以使用。

       

    下载地址:http://www.sky-walker.com.cn/MFRelease/library/V42/YFSoft.Hardware.GPS.rar

    MF简介:http://blog.csdn.net/yefanqiu/article/details/5711770

    MF资料:http://www.sky-walker.com.cn/News.asp?Id=25



        
    最新技术文章:
    ▪Android开发之登录验证实例教程
    ▪Android开发之注册登录方法示例
    ▪Android获取手机SIM卡运营商信息的方法
    ▪Android实现将已发送的短信写入短信数据库的...
    ▪Android发送短信功能代码
    ▪Android根据电话号码获得联系人头像实例代码
    ▪Android中GPS定位的用法实例
    ▪Android实现退出时关闭所有Activity的方法
    ▪Android实现文件的分割和组装
    ▪Android录音应用实例教程
    ▪Android双击返回键退出程序的实现方法
    ▪Android实现侦听电池状态显示、电量及充电动...
    ▪Android获取当前已连接的wifi信号强度的方法
    ▪Android实现动态显示或隐藏密码输入框的内容
    ▪根据USER-AGENT判断手机类型并跳转到相应的app...
    ▪Android Touch事件分发过程详解
    ▪Android中实现为TextView添加多个可点击的文本
    ▪Android程序设计之AIDL实例详解
    ▪Android显式启动与隐式启动Activity的区别介绍
    ▪Android按钮单击事件的四种常用写法总结
    ▪Android消息处理机制Looper和Handler详解
    ▪Android实现Back功能代码片段总结
    ▪Android实用的代码片段 常用代码总结
    ▪Android实现弹出键盘的方法
    ▪Android中通过view方式获取当前Activity的屏幕截...
    ▪Android提高之自定义Menu(TabMenu)实现方法
    ▪Android提高之多方向抽屉实现方法
    ▪Android提高之MediaPlayer播放网络音频的实现方法...
    ▪Android提高之MediaPlayer播放网络视频的实现方法...
    ▪Android提高之手游转电视游戏的模拟操控
     


    站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3