dailyprg 好好学习,天天向上

因为有梦想,我们披星戴月,只争朝夕!
posts - 9, comments - 14, trackbacks - 0, articles - 0

2006年6月29日

摘要: Grove——.NET中的ORM实现
发布日期: 6/30/2005 | 更新日期: 6/30/2005
作者:林学鹏

ORM的全称是Object Relational Mapping,即对象关系映射。它的实质就是将关系数据(库)中的业务数据用对象的形式表示出来,并通过面向对象(Object-Oriented)的方式将这些对象组织起来,实现系统业务逻辑的过程。在ORM过程中最重要的概念是映射(Mapping),通过这种映射可以使业务对象与数据库分离。从面向对象来说,数据库不应该和业务逻辑绑定到一起,ORM则起到这样的分离作用,使数据库层透明,开发人员真正的面向对象。图 1简单说明了ORM在多层系统架构中的这个作用。

阅读全文

posted @ 2006-06-29 23:42 天天敲 阅读(1013) 评论(0) 编辑

2006年6月5日

最近帮助同学做毕业设计,做的是智能客户端.
建了个WEB 服务,不知为什么客户端有时可以调用WEB 服务,有时不可以.
经常出现"由于目标机器积极拒绝,无法连接到远程服务器."这个问题.
不知是哪里设置的问题.还望高手指点一二.
谢谢. 我用的是VS2005.

posted @ 2006-06-05 17:02 天天敲 阅读(6371) 评论(8) 编辑

2006年5月31日

今天准备用serialport 组件写一个读取条形码扫描器的小程序,以试验一下公司买的条码枪.
结果出了一个我感觉有点奇怪的问题.
如下:
用串口调试软件(http://www.gjwtech.com/)从网上下的一个SComAssistant .将条码枪连接到我的笔记本的COM接口上. 设置如下
端口号 :  COM1
波特率 :  9600
数据位 :  8
停止位 :  1
奇偶校验: 无

问题:
用这个调试软件可以接收到条码枪扫描的条码.
用我写的软件可以和调试软件相互收发数据.
但用我写的软件不能读取条码枪的数据.
两次使用的设置是一样的,当用我写的软件读取条形码时,根本没有触发DataReceived事件.

是不是串口的设置有问题呢,还是其他问题.
不得而知.
还望赐教.

posted @ 2006-05-31 20:07 天天敲 阅读(1028) 评论(3) 编辑

2006年5月24日

最近一直从事与设备有关的编程,一些备提供的函数库是win32 API 或者是COM组件,这就需要对其进行PInvoke处理.
看了一下MSDN中的东西,还有给的例子,大概懂了一些,但有的还是不会用.
还请各位大侠指点一下.
例:
 /*
     * typedef struct tagPT_ReadPortByte
        {
         USHORT port;
         USHORT *ByteData;
        } PT_ReadPortByte, * LPT_ReadPortByte;
     */
    
    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
    public struct ReadPortByte
    {
        public ushort Port;
        public IntPtr ByteData;
    }

这样处理对吗?

posted @ 2006-05-24 22:31 天天敲 阅读(66) 评论(0) 编辑

关于PInvoke 和COM Interop.
1. 平台调用
        利用平台调用这种服务,托管代码可以调用在动态链接库 (DLL)(如 Win32 API 中的 DLL)中实现的非托管函数。此服务将查找并调用导出的函数,然后根据需要跨越互用边界封送其参数(整数、字符串、数组、结构等)。

要封装平台功能,一种有效的方法是将常用的 DLL 函数包装在托管类中。虽然不必在每种情形下都这样做,但由于定义 DLL 函数可能会相当麻烦并且容易出错,所以提供类包装是一种很方便的方法。如果您使用 Visual Basic 或 C# 进行编程,则必须在一个类或 Visual Basic 模块中声明 DLL 函数。

在一个类中,为每个要调用的 DLL 函数定义静态方法。定义中可以包括一些附加信息,如在传递方法参数时使用的字符集或调用约定;如果省略这些信息,将选择默认设置。包装之后,就可以按照对其他任何静态函数调用方法的相同方式来对该函数调用方法。平台调用将自动处理底层的导出函数。

为平台调用设计托管类时,应考虑类和 DLL 函数之间的关系。例如,您可以:

  • 在现有类内声明 DLL 函数。

  • 分别为每个 DLL 函数创建一个类,以便使函数相互隔离,易于查找。

  • 为一组相关的 DLL 函数创建一个类,以形成逻辑分组并减少系统开销。

您可以将该类及其方法命名为任意名称。

DLL 函数的标识包括以下元素:

  • 函数的名称或序号

  • 实现所在的 DLL 文件的名称

例如,如果指定 User32.dll 中的 MessageBox 函数,需要标识该函数 (MessageBox) 及其位置(User32.dll、User32 或 user32)。Microsoft Windows 应用程序编程接口 (Win32 API) 可以包含每个字符和字符串处理函数的两个版本:单字节字符 ANSI 版本和双字节字符 Unicode 版本。如果不进行指定,CharSet 字段所表示的字符集将默认为 ANSI。某些函数可以有两个以上的版本。

MessageBoxA 是 MessageBox 函数的 ANSI 入口点;而 MessageBoxW 是 Unicode 版本。可以通过运行各种命令行工具,为特定 DLL(例如 user32.dll)列出函数名。例如,可以使用 dumpbin /exports user32.dlllink /dump /exports user32.dll 来获取函数名。

您可以在代码中将非托管函数重命名为任何所需的名称,但是要将该新名称映射到 DLL 中的初始入口点。

利用平台调用,可以通过调用 Win32 API 和其他 DLL 中的函数来控制操作系统中相当大的一部分。除了 Win32 API 之外,还有许多其他的 API 和 DLL 可通过平台调用来调用。

下表将说明 Win32 API 中几个常用的 DLL。

DLL 内容说明

GDI32.dll

用于设备输出的图形设备接口 (GDI) 函数,例如用于绘图和字体管理的函数。

Kernel32.dll

用于内存管理和资源处理的低级别操作系统函数。

User32.dll

用于消息处理、计时器、菜单和通信的 Windows 管理函数。





下表列出了在 Win32 API(在 Wtypes.h 中列出)和 C 样式函数中使用的数据类型。许多非托管库包含将这些数据类型作为参数传递并返回值的函数。第三列列出了在托管代码中使用的相应的 .NET Framework 内置值类型或类。某些情况下,您可以用大小相同的类型替换此表中列出的类型。

Wtypes.h 中的非托管类型 非托管 C 语言类型 托管类名 说明

HANDLE

void*

System.IntPtr

在 32 位 Windows 操作系统上为 32 位,在 64 位 Windows 操作系统上为 64 位。

BYTE

unsigned char

System.Byte

8 位

SHORT

short

System.Int16

16 位

WORD

unsigned short

System.UInt16

16 位

INT

int

System.Int32

32 位

UINT

unsigned int

System.UInt32

32 位

LONG

long

System.Int32

32 位

BOOL

long

System.Int32

32 位

DWORD

unsigned long

System.UInt32

32 位

ULONG

unsigned long

System.UInt32

32 位

CHAR

char

System.Char

用 ANSI 修饰。

LPSTR

char*

System.StringSystem.Text.StringBuilder

用 ANSI 修饰。

LPCSTR

Const char*

System.StringSystem.Text.StringBuilder

用 ANSI 修饰。

LPWSTR

wchar_t*

System.StringSystem.Text.StringBuilder

用 Unicode 修饰。

LPCWSTR

Const wchar_t*

System.StringSystem.Text.StringBuilder

用 Unicode 修饰。

FLOAT

Float

System.Single

32 位

DOUBLE

Double

System.Double

64 位

posted @ 2006-05-24 19:28 天天敲 阅读(273) 评论(0) 编辑

2006年5月21日

去年公司从意大利进口了一台测量设备,叫做 Marposs gagebox .这台设备通过串口或者USB口和电脑相连接,用于采集数据.
和设备一起提供了一套驱动程序,其中提供了几个COM组件,用于程序中调用以采集数据.
去年本打算用VS.NET 做一个采集数据的软件,后来因其中一个关键COM组件无法在C#中引用,故使用DELPHI先做了一个,在DELPHI中可以引用此组件.
我使用TLBIMP.EXE 工具对这个组件进行类型库导出时出现一个错误
加载类型库错误.
请各位大侠指点这个问题的原因,以及怎样解决此问题
谢谢.

posted @ 2006-05-21 18:51 天天敲 阅读(190) 评论(0) 编辑

2006年5月20日

摘要: 今天用了一下NDOC ,果然不错破宝汉化的不错,美中不足的就是可以把中文做成资源可以在.NET 2.0 下使用.真的谢谢有要用而不知道在哪下的朋友,可以和我联系dailyprg@hotmail.comNDoc 文档生成器中的 MSDN 文档引擎支持所有 C#程序员参考(参见 .NET Framework SDK)中建议的文档注释标记。此外,它还支持一些新的标记以及标准标记的扩展语法。支持的全部标记...阅读全文

posted @ 2006-05-20 14:12 天天敲 阅读(400) 评论(2) 编辑

2006年5月8日

摘要: 我是一个学生.从去年10月份开始兼职,到现在己经做了两个小项目了.都是独立做的.由于一些地方对实时性要求不高,所以就用.NET 做了,(速度快啊)以后我会把我做的项目,尤其是项目中遇到的问题,做项目的收获和大实分享.阅读全文

posted @ 2006-05-08 10:33 天天敲 阅读(73) 评论(0) 编辑

2006年4月29日

摘要: 以后会经常来的实在是太忙了阅读全文

posted @ 2006-04-29 12:31 天天敲 阅读(53) 评论(1) 编辑