XuGang

记录一个程序员的成长

 

随笔分类 -  C#

1 2 3 下一页

使用SerialPort 对象实现串口拨号器通信[下]
摘要:定义 ModemManager 调度管理类ModemManager 类用于对所有 Modem 对象进行管理和调度使用。ModemManager 类代码如下:using System;using System.Collections.Generic;using System.Text;using System.IO.Ports;using System.Threading;namespace RequestResponse001CS{ // 拨号器管理者 public class ModemManager { //已经安装了拨号器的串口对象 priv... 阅读全文

posted @ 2013-05-13 16:24 钢钢 阅读(1498) 评论(2) 推荐(1) 编辑

使用SerialPort 对象实现串口拨号器通信[上]
摘要:首先,定义 CommandInfo结构体结构体 CommandInfo 用于保存当前 AT 指令的相关信息,代码如下: enum CommandDirection { None = 0, Read = 1, Write = 2 } enum CommandKey { None = 0, AT = 1, ATD = 2, ATH = 3, AT_CFUN = 4 } struct CommandInfo { public... 阅读全文

posted @ 2013-05-13 15:51 钢钢 阅读(2699) 评论(0) 推荐(1) 编辑

考勤表生成工具介绍及使用说明
摘要:为了方便公司的普通员工,简化每个人每个月的个人考勤记录数据核对工作,特地抽出空余时间制作本考勤表生成工具,以方便本公司广大草根阶层,节省琐碎和无辜的时间浪费!一、工具界面考勤表生成工具的设计界面与使用说明如下图所示:二、生成结果生成的 Excel 考勤表结果如下图所示:三、工具特性优点:1、本工具只需要添加个人信息、异常考勤记录即可,无需填写正常考勤的数据,简化了录入操作;2、本工具根据使用者本人操作系统的日期,自动计算和显示当月的日期数据,简化了日期的选择;3、本工具根据用户的数据,自动生成Excel 考勤记录表,省去了表格制作和手动填充数据的事宜;4、本工具为绿色版本,无需安装,没有多余. 阅读全文

posted @ 2013-03-19 11:54 钢钢 阅读(4352) 评论(3) 推荐(0) 编辑

Modbus RTU 通信工具设计
摘要:Modbus 是一个工业上常用的通讯协议、一种通讯约定。ModBus 协议是应用层报文传输协议(OSI 模型第7层),它定义了一个与通信层无关的协议数据单元(PDU),即PDU=功能码+数据域。ModBus 协议能够应用在不同类型的总线或网络。对应不同的总线或网络,Modbus 协议引入一些附加域映射成应用数据单元(ADU),即ADU=附加域+PDU。目前,Modbus 有下列三种通信方式:1. 以太网,对应的通信模式是Modbus TCP。2. 异步串行传输(各种介质如有线RS-232-/422/485/;光纤、无线等),对应的通信模式是 Modbus RTU 或 Modbus ASCII。 阅读全文

posted @ 2012-12-13 10:09 钢钢 阅读(21259) 评论(7) 推荐(2) 编辑

使用C# 实现串口拨号器的SIM卡通信[修正版]
摘要:在第一版 使用C# 实现串口拨号器的SIM卡通信 的代码中,存在一些实际的问题,经过反复测试和实际使用,对原代码进行了一些改进。首先,博客园的ㄟ荖樹炪厊ㄖ同学提出将拨号指令ATD发出后,不必使用 Thread.Sleep(20 * 1000) 方法等待20秒后进行挂机,而改用AutoResetEvent来处理,不必让线程死等,也能提高你程序的性能。但修改后效果并不理想,还是使用Thread.Sleep(20 * 1000) 方法快捷实用。其次,由于拨号器以及服务器等硬件设备的差异,导致反馈信息的速度不一致,以前采用Thread.Sleep() 方法绑定固定秒数然后查看返回信息的方式存在一定的问 阅读全文

posted @ 2012-09-19 16:06 钢钢 阅读(1765) 评论(7) 推荐(0) 编辑

使用C# 实现串口拨号器的SIM卡通信
摘要:写此博客意为抛砖引玉,希望能和博客园的朋友们探讨一下关于.NET 在工业方面的应用,包括:物联网、无线通信、嵌入式开发、工业控制等等。欢迎探讨,多多指教!^_^下面是我在开发中,使用C#代码实现对安装在COM 串行端口上的SIM卡拨号器的拨号调度程序。应用场景:在使用新能源的风光互补路灯远程管理系统中,通信服务器需要通过无线通信方式唤醒上位机。> 上位机中内置GPRS 无线上网卡,被安装在风光互补路灯中。> 通信服务器上扩展出4个COM 串行端口,分别安装有:西门子C35TS 拨号器和西门子MC52I 拨号器。使用需求:> 监控中心跟上位机进行通信前,对没有连接上的上位机先使 阅读全文

posted @ 2012-08-23 16:29 钢钢 阅读(7260) 评论(26) 推荐(16) 编辑

什么是BCD 码
摘要:BCD码(Binary-Coded Decimal‎)亦称二进码十进数或二-十进制代码。用4位二进制数来表示1位十进制数中的0~9这10个数码。是一种二进制的数字编码形式,用二进制编码的十进制代 码。BCD码这种编码形式利用了四个位元来储存一个十进制的数码,使二进制和十进制之间的转换得以快捷的进行。这种编码技巧最常用于会计系统的设计里,因 为会计制度经常需要对很长的数字串作准确的计算。相对于一般的浮点式记数法,采用BCD码,既可保存数值的精确度,又可免却使电脑作浮点运算时所耗费的时 间。此外,对于其他需要高精确度的计算,BCD编码亦很常用。来源:http://baike.baidu.com/v 阅读全文

posted @ 2012-04-23 15:27 钢钢 阅读(8458) 评论(0) 推荐(1) 编辑

我的INI 配置文件读写动态库
摘要:工作需要,今天上午花时间看了一下INI 配置文件的相关文章,并添加到项目中。后来想想,干脆封装成DLL 动态库,并提供给大家使用,顺便更新一下博客。^_^INI 配置文件的格式 在早期的Windows 桌面系统中,主要是用INI 文件作为系统的配置文件,从Win95 以后开始转向使用注册表,但是还有很多系统配置是使用INI 文件的。其实,INI 文件就是简单的text 文件,只不过这种txt 文件要遵循一定的INI 文件格式。“.ini” 就是英文 “initialization” 的头三个字母的缩写;当然INI file 的后缀名也不一定是".ini"也可以是" 阅读全文

posted @ 2012-03-21 13:44 钢钢 阅读(6009) 评论(4) 推荐(4) 编辑

C# 实现16进制和字符串之间转换的代码[转]
摘要:十六进制字符串与数值类型之间转换(C# 编程指南) 以下示例演示如何执行下列任务: 获取字符串中每个字符的十六进制值。 获取与十六进制字符串中的每个值对应的字符。 将十六进制 string 转换为整型。 将十六进制 string 转换为浮点型。 将字节数组转换为十六进制 string。 示例分析 此示例输出 string 中的每个字符的十六进制值。首先,它将 string 分析为字符数组,然后对每个字符调用 ToInt32(Char) 以获取相应的数字值。最后,在 string 中将数字的格式设置为十六进制表示形式。 C# 代码:stringinput="HelloWorld!&qu 阅读全文

posted @ 2011-11-14 14:02 钢钢 阅读(28313) 评论(8) 推荐(0) 编辑

定义简单的反射工厂示例
摘要:首先,定义一个水果抽象类,代码如下:classFruit{//定义虚方法publicvirtualvoidEating(){Console.WriteLine("水果有各种吃法。。。");}}然后,实例化几个水果类,代码如下:classBanana:Fruit{publicoverridevoidEating(){Console.WriteLine("香蕉扒皮吃。。。");}}classOrange:Fruit{publicoverridevoidEating(){Console.WriteLine("橘子剥皮吃。。。");}}cla 阅读全文

posted @ 2011-05-20 13:27 钢钢 阅读(2275) 评论(7) 推荐(5) 编辑

初尝C# 连接本地数据存储 SQLite
摘要:一:安装 SQLITE,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统。我直接使用的是http://sqlite.phxsoftware.com/(An open source ADO.NET provider for the SQLite database engine),下载完毕是一个EXE。 然后引用 System.Data.SQLite.dll 程序集;如果你还想在使用SQLite 中同时使用Linq,则还需要引用 System.Data.SQLite.Linq.dll 程序集;二:新建数据库 安装完毕后,打开visual studio,新建数据连接,可以看到数据源多了一项. 阅读全文

posted @ 2011-04-19 11:51 钢钢 阅读(12297) 评论(2) 推荐(2) 编辑

收藏.NET 技术社区
摘要:摘自:圣殿骑士 的.NET 技术社区谈之英文篇和.NET 技术社区谈之中文篇 英文社区: 名称:MSDN 地址:http://msdn.microsoft.com/zh-cn/default.aspx 描述:这个网站是大家学.Net的初始网站,也是.net方面官方和权威的资料,相信大家都知道或经常访问这个网站。即是初学者的最佳资料, 同时也是中高级开发者的参考资料。同时里面还包括很多视频、library、每月技术杂志、社区等。 名称:CodeProject 地址:http://www.codeproject.com 描述:分类十分的清晰,同时涵盖了.net技术的方方面面,最关键的是它的基本所. 阅读全文

posted @ 2011-03-29 00:47 钢钢 阅读(1214) 评论(1) 推荐(0) 编辑

C# 实现多线程的同步方法详解
摘要:本文主要描述在C#中线程同步的方法。线程的基本概念网上资料也很多就不再赘述了。直接接入 主题,在多线程开发的应用中,线程同步是不可避免的。在.Net框架中,实现线程同步主要通过以下的几种方式来实现,在MSDN的线程指南中已经讲了几 种,本文结合作者实际中用到的方式一起说明一下。 1. 维护自由锁(InterLocked)实现同步 2. 监视器(Monitor)和互斥锁(lock) 3. 读写锁(ReadWriteLock) 4. 系统内核对象 1) 互斥(Mutex), 信号量(Semaphore), 事件(AutoResetEvent/ManualResetEvent) 2) 线程池 除了以 阅读全文

posted @ 2011-03-20 22:48 钢钢 阅读(11866) 评论(4) 推荐(3) 编辑

关于C# 中的Attribute 特性
摘要:声明纠结地说,这应该算是一篇关于Attribute 的笔记,其中的一些思路和代码借鉴了他人的文笔(见本文底部链接)。但是,由于此文对Attribute 的讲解实在是叫好(自夸一下 ^_^),所以公之于众,希望能对大家有所帮助。Attribute与Property 的翻译区别Attribute 一般译作“特性”,Property 仍然译为“属性”。Attribute 是什么Attribute 是一种... 阅读全文

posted @ 2011-01-06 13:35 钢钢 阅读(24472) 评论(26) 推荐(44) 编辑

C# 扩展方法[学习]
摘要:C#中可以定义扩展方法,还可以为集合做扩展方法。示例如下:[代码]注意:1 C# 只支持扩展方法,不支持扩展属性、扩展事件等;2 方法名无限制,第一个参数必须带 this ;3 扩展方法的命名空间可以使用 namespace System ,但不推荐;4 定义扩展方法的类是静态类;在使用this 参数扩展了方法之后,该程序集会在编译的时候会在对应静态类上加上类似以下的东西。以便于调用的时候方便找到。[代码]MSIL 中,自动添加了如下的代码:[代码]可以看出,在运行时是需要引用 System.Core.dll。参考来源:C#进阶 Methods下 Extension Methods不能不说的C 阅读全文

posted @ 2010-12-29 12:33 钢钢 阅读(3794) 评论(1) 推荐(3) 编辑

浅谈C# 中的lock 方法与Monitor 类的关系_以及同步与互斥
摘要:这是一个旧瓶新装的话题。只是将我今日的所见所思予以实践和整理,以备往后所用。同时也提供给大家,希望能有所帮助。 A 从单例模式说起代码如下:关于单例模式,大家可以参考:http://terrylee.cnblogs.com/archive/2005/12/09/293509.htmlB 关于lock 方法在以上单列模式的代码中:将在lock( ) 方法处,抛出未处理的异常:System.Argum... 阅读全文

posted @ 2010-11-05 12:27 钢钢 阅读(5796) 评论(11) 推荐(9) 编辑

C# 多线程学习系列
摘要:我的C# 多线程学习系列C# 多线程学习(一) 多线程的相关概念C# 多线程学习(二) 如何操纵一个线程C# 多线程学习(三) 生产者和消费者C# 多线程学习(四) 多线程的自动管理(线程池)C# 多线程学习(五) 多线程的自动管理(定时器)C# 多线程学习(六) 互斥对象推荐阅读C# 线程系列讲座 © 银河使者C# 线程系列讲座(1):BeginInvoke和EndInvoke方法C# 线程系列讲座(2):Thread类的应用C# 线程系列讲座(3):线程池和文件下载服务器C# 线程系列讲座(4):同步与死锁C# 线程系列讲座(5):同步技术之Monitor多线程知识(系列) - 阅读全文

posted @ 2010-11-03 12:50 钢钢 阅读(2920) 评论(2) 推荐(2) 编辑

C# 浅拷贝与深拷贝区别
摘要:也许会有人这样解释C# 中浅拷贝与深拷贝区别: 浅拷贝是对引用类型拷贝地址,对值类型直接进行拷贝。不能说它完全错误,但至少还不够严谨。比如:string 类型咋说? 其实,我们可以通过实践来寻找答案。首先,定义以下类型:int 、string 、enum 、struct 、class 、int[ ] 、string[ ]代码如下: //枚举 publicenummyEnum {_1=1,_2=2}... 阅读全文

posted @ 2010-09-09 18:34 钢钢 阅读(16918) 评论(7) 推荐(3) 编辑

C# 根据反射和特性实现ORM 映射[学习]
摘要:(一)关于反射什么是反射?反射就是在运行时,动态获取对象信息的方法。比如:运行时获得对象有哪些属性,方法,委托等。反射的作用? 能够实现运行时,动态调用对象的方法,以及动态设置、获取属性值等。反射的示例: usingSystem; usingSystem.Reflection; namespaceCS_Test { publicclassMyStudent { privatestringsName... 阅读全文

posted @ 2010-08-07 12:57 钢钢 阅读(5257) 评论(2) 推荐(1) 编辑

理解值与引用[学习]
摘要:面向对象分析和设计需要区分对象的值语义与引用语义。我的一块钱和你的一块钱相等,这是值语义;20岁的我和30岁的我是同一个人,这是引用语义。值对象包括2大特征:表示和运算。比如:3这个整数在计算机内部用二进制11表示,可以参与+,-,*,/等运算;引用对象包括3大特征:标识、状态 和 行为。比如:person对象拥有不变的标识,并可通过行为改变状态。值对象的同一性建立在表示的基础上,而引用对象的同一... 阅读全文

posted @ 2010-07-29 09:27 钢钢 阅读(616) 评论(2) 推荐(0) 编辑

1 2 3 下一页

导航