代码改变世界

6.5 开发中遇到的问题总结

2010-06-05 16:40 by 马克曼, 169 阅读, 0 推荐, 收藏,
摘要:今天在测试时发现,当多个线程同时往networkstream里写入不同的命令时,出现问题,描述如下:1。假设线程1要发命令 A 然后服务器收到A之后返回相应的操作,线程2发送命令B,服务器收到命令B后返回相应的操作2.由于在发送B命令之前没有考虑,已经写进NETWORKSTREAM中的命令A是否已经被发送出去,而直接往NETWORKSTREAM中写B此时可能出现一种情况就是,缓冲区中的A还没有被发出,B就已经写了进来(只要NETWORKSTREAM中的缓冲区未满,这种情况是允许的),然后AB一起被发了出去 导致服务器不知道怎么处理接收到的命令。解决方法:使用lock机制,当A往缓冲区里写的时候 阅读全文

const

2010-06-05 15:50 by 马克曼, 311 阅读, 0 推荐, 收藏,
摘要:1 从const int i 说起 有了const修饰的ic 我们不称它为变量,而称符号常量,代表着20这个数。这就是const 的作用。ic是不能在它处重新赋新值了。 认识了const 作用之后,另外,我们还要知道格式的写法。有两种:const int ic=20;与int const ic=20;。它们是完全相同的。这一点我们是要清楚。总之,你务必要记住const 与int哪个写前都不影响语义。有了这个概念后,我们来看这两个家伙:const int * pi与int const * pi ,按你的逻辑看,它们的语义有不同吗?呵呵,你只要记住一点,int 与const 哪个放前哪个放后都是. 阅读全文

Grep学习笔记

2010-06-04 14:51 by 马克曼, 157 阅读, 0 推荐, 收藏,
摘要:1.grep正则表达式元字符集(基本集)^ 锚定行的开始 如:'^grep'匹配所有以grep开头的行。$ 锚定行的结束 如:'grep$'匹配所有以grep结尾的行。. 匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。 * 匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行。 .*一起用代表任意字符。[] 匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。 [^] 匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep& 阅读全文

C# 串口通信方法

2010-06-01 21:11 by 马克曼, 394 阅读, 0 推荐, 收藏,
摘要:由于项目需要通过串口通信,所以学习一下在此做一下笔记。.NET 2.0提供了串口通信的功能,其命名空间是System.IO.Ports。这个新的框架不但可以访问计算机上的串口,还可以和串口设备进行通信。创建C#串口通信程序之创建SerialPort 对象通过创建SerialPort 对象,我们可以在程序中控制串口通信的全过程。我们将要用到的SerialPort 类的方法:ReadLine():从输入缓冲区读一新行的值,如果没有,会返回NULLWriteLine(string):写入输出缓冲Open():打开一个新的串口连接Close():关闭 //create a serialport ob. 阅读全文

wince 6.0 Tcp 编程实例

2010-05-31 15:19 by 马克曼, 508 阅读, 0 推荐, 收藏,
摘要:TCPClient 类使用 TCP 从 Internet 资源请求数据。1、public TcpClient()当使用这种不带任何参数的构造函数时,将使用本机默认的ip地址并将使用默认的通信端口号0。以下语句示例了如何使用默认构造函数来创建新的 TcpClient: TcpClient tcpClientC = new TcpClient(); 2、public TcpClient(IPEndPoint)使用本机IPEndPoint创建TcpClient的实例对象。IPEndPoint将网络端点表示为IP地址和端口号,在这里它用于指定在建立远程主机连接时所使用的本地网络接口(IP 地址)和端口 阅读全文

tslib-1.4交叉编译详细笔记

2010-05-31 15:13 by 马克曼, 269 阅读, 0 推荐, 收藏,
摘要:tslib-1.4交叉编译详细笔记交叉编译tslib-1.4./autogen.sh//用于生产configure//配置成将生成的文件安装到/usr/local/tslib目录,./configure--prefix=/usr/local/tslib/--host=arm-linuxac_cv_func_malloc_0_nonnull=yes --enable-inputapi=no //make make install//也可以用make install-strip 生成瘦身应用程序和库 编译和安装后在主机的/usr/local/tslib目录下看到编译好的程序和库。注:如果你的触摸屏 阅读全文

tslib1.4编译笔记

2010-04-15 22:51 by 马克曼, 212 阅读, 0 推荐, 收藏,
摘要:tslib-1.4交叉编译详细笔记交叉编译tslib-1.4./autogen.sh//用于生产configure//配置成将生成的文件安装到/usr/local/tslib目录,./configure--prefix=/usr/local/tslib/--host=arm-linuxac_cv_func_malloc_0_nonnull=yes --enable-inputapi=no //make make install//也可以用make install-strip 生成瘦身应用程序和库 编译和安装后在主机的/usr/local/tslib目录下看到编译好的程序和库。注:如果你的触摸屏 阅读全文

以太网报文结构分析,与解析代码

2010-03-31 20:15 by 马克曼, 1522 阅读, 0 推荐, 收藏,
摘要:以太网的包分三部分组成,Ethernet header,IP header,content,首先是以太网头,typedef struct{unsigned shortdest_hwaddr[3];unsigned shortsource_hwaddr[3];unsigned shortframe_type;}ETH_HEADER; 三个部分分别表示,目的MAC,源MAC和帧类型。帧类型表示后面数据的类型,对于ARP请求和应答来说,该字段的值是0x0806,对于ip包来说应该是0x0800接下来是IP头typedef struct{ unsigned short ver_len_tos; //. 阅读全文

关闭wince桌面任务栏图标的方法

2010-03-30 21:05 by 马克曼, 230 阅读, 0 推荐, 收藏,
摘要:You could remove the explorer from your image and customize (i.e. copy toyour BSP dir and change source files) the taskman(WINCE420/PUBLIC/WCESHELLFE/OAK/TASKMAN) which is a very basic shell.From there, you will now launch taskman.exe (or other if you want to changethe name of this application) inst 阅读全文

linux中使用diff和patch维护源码包

2010-03-30 12:11 by 马克曼, 250 阅读, 0 推荐, 收藏,
摘要:1.diff的使用diff用于比较两个文件或者目录的不同然后生成一份报告。用法如下:假设file.c为原来的文件,file.c.new为修改了的文件,现在要制作一个补丁文件使得安装此补丁的人可以从file.c升级到file.c.new相同的内容,方法如下diff -u file.c file.c.new >file.c.new.path此时在该目录下就会生成一个补丁文件file.c.new.path,生成的补丁文件的文件名可以随意指定。把该补丁文件file.c.new.path拷贝至目标文件所在相同目录,使用命令patch -p1 < file.c.new.path(patch讲解 阅读全文