面目全非,胸有丘壑 | Json Lee

人若无名,便可专心练剑 | https://lijiansong.github.io/

用Source Insight追踪Arduino的setup和loop

查看一些大型的开源项目自然少不了一款神器——Source Insight。呵呵,不扯了 一般情况下,在ArduinoIDE中编写的程序非常简单,只有setup和loop这两个核心函数。一般的C语言程序都有一个main函数的入口点,而Arduino是基于avr-gcc的二次封装,把这些底层的东...

2016-03-12 22:07:31

阅读数:2948

评论数:0

Arduino IDE的编译执行过程解读

avr-gcc 1997年ATMEL公司的A先生和V先生推出了全新配置的8位精简指令集微处理器(RISC-Reduced Instrction Sot CPU),起名为AVR。AVR是一种指令内核的统称,内部又分为ATtiny、AT90S、ATmega三大系列,分别对应AVR的低、中、高档产...

2016-03-10 21:17:22

阅读数:10496

评论数:1

Arduino自定义通信协议解析

上一篇文章给出了通信协议的设计。通信协议的格式如下: 协议首部 指令长度 控制指令 校验和 “控制指令”设计成如下格式: 设备类型 设备号 端口号 比如说上位机发送如下的格式的数据:AA0305020106,意思就是协议的首部为AA,...

2016-03-04 15:28:35

阅读数:5899

评论数:10

Arduino通信协议设计

最近在一直在研究Arduino硬件平台的东西,先从做一个简单的东西入手,比如说,我通过Android端向Arduino硬件发送指令,控制电机的正转、反转。其中一个必不可少的问题就是这两个端设备之间的通信问题。它们之间的通信可以通过蓝牙模块来完成,此外,还需要自己设计通信协议。 分析 从最简单的模...

2016-03-02 18:36:40

阅读数:2630

评论数:0

DirectX天空球和天空盒子模型

在一些大型的3D游戏中,有几个必不可少的元素,比如说天空和大地,这些元素的存在可以增加3D场景的真实感。三维场景中天空和大地场景的模拟其实很简单,这种场景跟古人所说的“天圆地方”有着异曲同工之妙。天空其实就是一个很大的容器,把整个世界都罩在下面,大地就是一个平面,场景中所有的元素都显示在二者所包围...

2015-11-21 11:48:56

阅读数:2539

评论数:0

Direct3D高程图立体显示

在微软的DirectX Sample Browser中,有个RaycastTerrain例子,做得很好,将一张平面的地形图,在底面添加了一个底部,四周的高度差再封闭起来,然后再添加一个浅蓝色的背景,平面图形的立体感很强,而且灯光和阴影的效果也做得很棒! 这个例子是基于C++的,这里模仿这个例...

2015-11-10 21:44:46

阅读数:1113

评论数:0

Direct3D 地形

高程图生成三角形网格 3D场景的模拟离不开地形,因此3D地形的模拟在3D程序设计中很重要。在3D场景中,地形的表面都是通过三角形网来表示,即通过高度图(也称影像图)上的对应坐标值来表示规则网格顶点坐标值,从而形成规则的矩阵分布三角网。具体的实现就是通过读取高度图上象元的值来获取该坐标位置的高程,然...

2015-11-06 23:11:39

阅读数:837

评论数:0

DirectX 3D Mesh类

Mesh类中定义了若干个3D模型,比如说立方体、圆柱、茶壶等。对于一些复杂的模型可以使用专业的软件比如说3D Max等设计,再利用DirectX提供的插件,将复杂的3D模型保存为.x文件。用Mesh类对象可以加载.x文件,并显示.x文件中的3D模型。Mesh类位于Direct 3D的扩展库中,为了...

2015-11-03 23:41:11

阅读数:2750

评论数:1

DirectX 3D纹理

纹理就是3D模型外表面上的图案。在3D场景中纹理极大地增加了物体的真实性。纹理的本质是把平面图形贴到3D物体表面。在Direct3D中纹理的x和y坐标一般称为Tu和Tv坐标,纹理坐标范围都是0.0-1.0。如果知道一个面的顶点坐标,使面的顶点坐标和句型图片纹理坐标相对应,就可以将这些二维图片贴到3...

2015-11-03 23:26:39

阅读数:1002

评论数:0

DirectX 3D灯光和材质

前面所介绍的东西都假设模型有自己的颜色,即认为模型自己发光。其实自然界的大部分物体并不发光。当光线照射到物体上,物体吸收某些颜色的光,反射另一些颜色的光,反射的光的颜色就是我们所看到的物体的颜色。这里的灯光是指光源,在Direct 3D中有4种光源:环境光、定向光源、点光源和聚光灯。反射光被分为3...

2015-11-03 23:20:50

阅读数:1133

评论数:0

DirectX 3D图形

前面的一篇文章Direct 3D基础介绍了一些基本概念,叙述了如何在显示器上直接绘制具有立体感的2D图形。上面的方法是不现实的,因为预先根据透视原理人工计算出3D物体在显示屏幕上显示的坐标然后再绘制的这种方式如果涉及从不同角度观察的3D物体的话,需要计算的次数会很多。Direct 3D实现3D所采...

2015-11-01 20:51:15

阅读数:1042

评论数:3

Direct3D基础

最近在公司里实习,有个项目的接合点需要用到三维处理的东西,还是比较麻烦的,虽然之前也学过一点图形学的理论知识,但都是皮毛,研究得也不深入。所以趁现在把一些基本的概念拾起来,开发平台用微软的DirectX框架并结合C#,很多东西都是现学的。下面给出几个基本的概念。 图形卡即显卡,计算机和显示器之间的...

2015-11-01 15:42:19

阅读数:630

评论数:0

流和文件的区别

前面介绍的Linux下的文件编程所涉及的操作方式都是不带缓冲的I/O,因为每次调用相应的函数比如说read、write等对文件进行操作的时候都会调用内核的系统调用,由于每次都要通过内核对文件进行操作,所以操作效率比较低,对于流编程来说,首先对文件所映射的流进行操作,然后分阶段将相应的数据写入文件,...

2015-10-07 00:54:18

阅读数:3367

评论数:1

Linux C下的内存映射函数

前面有一篇文章 内存映射文件 给出了windows环境下,内存映射文件的例子。其实在Linux环境下,针对C语言也有相应的内存映射函数。使用内存映射函数可以提高文件读写的速度,在Linux环境下,利用mmap函数可以将指定的文件映射到内存区域中,通过对该内存区域的操作即可以实现对该文件的操作。 ...

2015-10-06 20:07:03

阅读数:929

评论数:0

共享内存和动态数据交换

仔细研究一下操作系统本身的机制,比如说内存管理、进程间通信等,越发觉得这些机制很精妙,很精深,perfect! 为了让具有依赖关系的线程或者进程协调工作,可以使用两种技术,第一种是进程间或者线程间通信(interprocess or interthread communication),在具有通信...

2015-08-31 20:06:57

阅读数:2197

评论数:0

Windows 多进程通信API总结

在一个大型的应用系统中,往往需要多个进程相互协作,进程间通信(IPC,Inter Process Communication)就显得比较重要了。在Linux系统中,有很多种IPC机制,比如说,信号(signal)、管道(pipe)、消息队列(message queue)、信号量(semaphore...

2015-08-30 20:16:25

阅读数:23782

评论数:7

Windows中的宽字符串处理问题

在用VC做开发的时候,对于一些字符串,会经常调用一般_t、_T、T(),其实这些东西都和Unicode有关系。比如说,AfxMessageBox(_T("Error! Fail to connect the database!"));这里用到了一个_T(),不使用_T()有时候...

2015-08-30 11:52:27

阅读数:903

评论数:0

Windows多线程问题

进程和线程是操作系统里面经常遇到的两个概念,还有一个概念,是应用程序。应用程序包括指令和数据,在开始运行之前,只是分布在磁盘上的指令和数据。正在执行的应用程序称为进程,进程不仅仅是指令和数据,它还有状态。状态是保存在处理器寄存器中的一些值,记录一些信息,比如说当前执行指令的地址,保存在内存中的值等...

2015-08-30 00:57:04

阅读数:2400

评论数:2

提示
确定要删除当前文章?
取消 删除
关闭
关闭