2011.7.20-总结一下近来学习过程中的波折

 

从7月8号发下的培训规范到现在已经有11天的时间了,目前任务的进度有1/3已经实现了,这期间主要是解决了这么几个关键的地方:

1.串口数据的读取存储

2.数据的解析

3.绘制星空图

这是任务进行到此的三个关键实现的过程。在实现串口数据的读取时,开始我并不了解什么是串口,串口对应于电脑上的哪些端口,串口发送数据的格式是怎么样的,

串口会把数据发送到哪,又该如何进行读取。现在看来我的理解是这样的,串口是众多端口的一种,也是通常GPS与PC连接进行数据交互的方式。

在.NET里SerialPort类提供了对串口的各种操作的类,如搜索可用的串口,创建串口对象,设置串口的属性,多种从串口读取数据的方式。了解到了这里,再结合一个

参考实例,大致就了解了一个串口读取数据的过程是如何实现的了,还有一个重要的地方是,串口数据在传输时是二进制的形式(?)在数据缓冲区里也是二进制的格

式,而用不同的读方法(readchar、readbyte、readline、readexisiting)而得到的不一样形式的数据对象(字节、字符、字符串、字符数组(?)),然后在将这个读

取到的对象存储到相同类型的数据对象,以供下一步所用。

在读取到数据之后,就是对数据的分析,了解其格式、内容,考虑我们是将之显示出来,或是直接从中提取出需要用到的数据属性。这里涉及到的主要是对字符串的处

处理,将字符串里的数据内容通过一定的方式提取出来,然后在转换成所需要的数据类型(string、int、double、datetime、经纬度、角度),字符串处理相信会是一

有意思的部分,对一个字符串,到底会有多少种方法将之变成你所想要的数据呢?大致都是将之分割,匹配提取,转换格式吗?再将这些数据按条目的形式存储到数组

里,或者是一个自己定义的类对象里,这里有一个疑问,为什么对象数据,在使用的时候需要确定其大小,并将每个对象进行初始化? 最后得到了想要的数据。

在获得了想要的数据之后,就是将这些数据使用的时候了,简单的通过界面控件显示,一些卫星经纬度数据还可以通过绘制星空图的方式更形象的显示,在这个过程中

所遇到的问题是,怎么样在我需要的地方绘制我所期望的图形,我的解决办法是,通过一个PictureBox控件,在其之上绘制,之后又遇到了一个困扰了我两天的问题,

picturebox 是通过paint事件进行绘制的,在窗体初始化之后,不知道该怎么再重新触发paint事件按我给的方法进行再绘制,我去看了事件与委托的介绍,感觉仍不明白

之后,我写了一个委托的方法,处理数据的过程中加入判断,满足条件时则调用这个绘制方法,这里遇到了一个大困惑,绘制是通过 Graphics 对象(或许不是对象,

Graphics没有构造函数)执行绘制方法完成的,但是在我的委托方法里,没有picturebox1的Graphics对象,我只看到在paint事件执行的方法里有个PaintEventArgs类

型的 e ,e 就是那个事件里绘制动作的执行者,我想e是对应于picturebox1的,而我写的委托里虽然也有e,但是却不是那个e,paint事件里的e是个参数,我该如何把

它赋给委托方法里的e呢?始终想不到如何用方法传递,最后我在全局范围声明了一个 Graphics对象g,在paint事件运行时的e.Graphics赋予给g,然后再在之后的

委托方法里调用g,这在逻辑上应该可以了吧,但是运行的时候却是不行,提示参数出错,我想一定是我这样传递对象的方式错误,而具体的原因我想是深一层的,期望

得到解答,后来我通过CreatGraphics()方法实现了绘制, Graphics gg = picturebox1.CreatGraphics() ,这样的gg就是属于picturebox1的Graphics对象了,这样我用

gg执行的方法就是在picturebox1上绘制图形了。

 

其实编程的过程就是将处理事情进行逻辑表达的过程,步骤与方法大致相似,但是不同的语言在表现和实现上各有不同,.NET类的封装实现了非常非常多的方法,使得

不需要去自己创造一个方法(类与方法封装了实现的细节),不需要每个人都去造轮子,需要做的是去了解这方法有什么用怎么用。(这里不得不说看MSDN上的类理

解起来真的吃力),还需要将这些方式试着用,才能更了解其作用,用多了之后也就对这些方法熟悉了。

再回到开始之初,在遇到问题时,我已经想到了处理的逻辑过程,但是该如何去编程实现呢?该用哪些方法,处理什么数据,定义什么对象,实现什么过程,这些没有

人告诉你,但是还好知道该从哪里找,那就去找去试吧,在这过程中一定会有疑惑和犯错,不知道方法的用处或用错方法,这都是一个经验积累的过程,积累的错误经

验和正确经验越来越多时,就能越快的找到正确的方法去解决问题,同时也对其中的某些方法更熟练而得心应手。

程序员使用不同的语言帮助人们更智能的使用Cumputer,为成为一个合格的程序员而努力吧!

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值