14
2014
01

PC上位机与PLC串行通讯协议与串口DLL之Modbus rtu通信协议

 Modbus rtu通信协议串口通讯动态链接库DLL(以下简称DLL),是为满足工业通信需要,

针对工业领域要求上位机对PLC、工业仪表通讯实时采集与控制的组态编程而设计。

本DLL是采用Delphi语言开发的标准串口通讯库,具有以下特点:

1)、遵循modbus rtu串口通讯协议(施耐德、西门子、台达、永宏等品牌PLC及各类工业仪表等支持本协议);

2)、实时性、可靠性好,通用性强;

3)、适用于多PLC联网和上位机通信,满足多方面的需要(联网时可采用485总线式);

14
2014
01

PC上位机与PLC串行通讯协议与串口DLL之西门子S7-200PPI协议

一、西门子S7-200系列PLC PPI协议动态链接库DLL(以下简称DLL),是为满足工业通信需要,针对工业领域要求上位机对西门子S7-200系列


PLC实时采集与控制的组态编程而设计。本DLL是采用Delphi语言开发的标准串口通讯库,具有以下特点:


1)、实时性、可靠性好,可根据通信数据量自行调整通信时间;

2)、适用于多PLC联网和上位机通信,满足多方面的需要;

3)、函数接口功能全,操作简单;

12
2014
01

SQLite数据库介绍及基本操作代码C#

 

SQLite介绍
在介绍System.Data.SQLite之前需要介绍一下SQLite,SQLite是一个类似于Access的单机版数据库管理系统,它将所有数据库的定义(包括定义、表、索引和数据本身)都保存在一个单一的文件中。并且,SQLite是一个用C实现的类库,它在内存消耗、文件体积、简单性方面都有不错的表现,如果数据在10W条以下,查询速度也是相当快的。
SQLite具有以下特征:
实现多数SQL92的标准,包括事务(原子性、一致性、隔离性和持久性)、触发器和大多数的复杂查询。
不对插入或者更新的数据进行类型检查,你可以将字符串插入到整数列中(这个可能让有些用户不太适应)。
支持Windows/Linux/Unix等主流系统,还支持嵌入式系统如Android或Windows Mobile。
System.Data.SQLite
System.Data.SQLite是SQLite的加强版,它可以无需.NET Framework支持,由于它内部包含了一个ADO.NET 2.0引擎,所以.NET开发人员可以利用System.Data.SQLite方便地开发.NET程序。
System.Data.SQLite及SQLite也有一些限制,比如不支持行级及表级锁,当一个连接锁定数据库以用于写入数据,其它的数据库连接只能等待那个连接操作完成之后进行读写操作,SQLite.NET尝试在超时期内多次尝试。
实际上对于大型的应用我们都会选择一些大型专业的数据库,System.Data.SQLite和SQLite适合于一些受限的场合,比如手机等。在这里我讲一个真实的经历,在此前我曾经做过一个小型系统,要分析三个Excel文件,其中两个的记录大约在400条左右,而另外一个大约是1万条左右,对于这么一个系统如果使用数据库,即使单机版的Access,导入之后利用数据库的特性进行分析,将是一个相对较为简单的事情,因为我们可以在数据库里使用连接查询,还可以对记录使用数据库函数,但是对方提供的信息是部署的机器上尽管安装了Office,但是只是安装了Word、Excel和Outlook,而没有Access,对方也不希望安装其它的软件,由于我也不能确定没有安装Access的机器上是否能通过OleDB访问.mdb文件,所以没有办法,只有才有内存表的形式,即将Excel中的数据读取到DataTable中,然后对三个DataTable进行分析,尽管做了很多优化,但是效率仍然不是太理想。对于这种情况,如果我当时知道System.Data.SQLite就好办多了,将三个Excel中的数据导入到System.Data.SQLite中,然后利用System.Data.SQLite提供的函数处理起来是相当省事和方便的。对于System.Data.SQLite来说,部署时不需要安装,仅需要一个System.Data.SQLite.dll就够了,这个dll仅866K!而且它不需要像使用Com组件那样需要注册。

10
2014
01

应用程序-特定 权限设置未将 COM 服务器应用程序的 本地 激活 权限授予用户NT AUTHORITY\NETWORK SERVICE SID

近日发现服务器上有很多DCOM错误,详细信息如下:

 

应用程序-特定 权限设置未将 COM 服务器应用程序(CLSID 为
{0C0A3666-30C9-11D0-8F20-00805F2CD064}
)的 本地 激活 权限授予用户 NT AUTHORITY\NETWORK SERVICE SID (S-1-5-20)。可以使用组件服务管理工具修改此安全权限。

10
2014
01

EntityFramework优缺点分析


 Entity Framework  是微软推荐出.NET平台ORM开发组件, 现在已放源代码.  以下我们来讨论一下优缺点和一些问题, 以下简称EF.  有兴趣可查询官网的Entity Framework 6 RoadMap

09
2014
01

由于系统缓冲区空间不足或队列已满的解决方法

windows socket error: 由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作(10055),on API connect

解决方法:

1、重启电脑,最简单方法。

2、虚拟内存太小或者C盘满了。如果是这种,请加大虚拟内存量,并保证C盘还有充足的空间。

如果是这种,右键单击我的电脑——>属性——>高级——>性能设置——>高级——>将虚拟内存的值加大。

3、开始-运行依次输入以下命令,输完这些命令后重新启动windows,然后打开IE看看。 

regsvr32 Shdocvw.dll 
regsvr32 Shell32.dll
regsvr32 Oleaut32.dll 
regsvr32 Actxprxy.dll 
regsvr32 Mshtml.dll 
regsvr32 Urlmon.dll

4、是你电脑里面某个软件的问题。 
这个错误可能是你计算机的Socket句柄资源用尽导致的,能够造成这种现象的一种情况就是你的计算机的某个程序不断的向某个连接发出连接申请,但是始终没能连上,没连上就会引发一个错误,如果软件编程的人没有写释放资源的代码,那么这个连接就始终占据着着一个句柄,于是由于不断的连接,最终导致 Socket句柄资源耗尽。 

5、注册表中的以下二项出现错误
HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Winsock
HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Winsock2
解决办法:备份,然后找一台相同系统的机器,将以下注册表分支导出存为二个文件, 
HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Winsock
HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Winsock2

最后将这二个导出的注册表文件导入到有问题的机器中即可。

6、运行Hijackthis,选择do a system Scan only,在下列选项前打上勾,然后关闭其他程序和IE窗口,点“Fix Checked”,出现提示时一路点“是”让它继续: 
O23 - Service: IEXPLORER - Unknown - C:\\WINNT\\IEXPLORER.exe 灰鸽子

重启电脑按F8进安全模式,打开我的电脑 工具 文件夹选项 查看 设置windows显示所有隐藏文件、受保护的系统文件和文件夹,然后手动删除:C:\\WINNT\\IEXPLORER.exe 及同一时间生成的.DLL文件。 

09
2014
01

“ResGen.exe”已退出解决方法

1. 关闭Visual Studio。

2. 在Visual Studio Tools目录,以管理员身份运行Visual Studio Command Prompt (2010),

[注:这个在开始--所有程序--microsoft visual studio 2010 下面]

切换目录到":\Program Files (x86)\MicrosoftSDKs\Windows\v\bin\”. ( 我的是v7.0A )

07
2014
01

itextsharp合并PDF文档

 using System;
using System.IO;
using iTextSharp.text;
using iTextSharp.text.pdf;
public class PdfMerge
{
public static void MergeFiles(string destinationFile, string[] sourceFiles)
{
try
{
int f = 0;
// we create a reader for a certain document
PdfReader reader = new PdfReader(sourceFiles[f]);
// we retrieve the total number of pages
int n = reader.NumberOfPages;
//Console.WriteLine("There are " + n +

07
2014
01

用iTextSharp给PDF添加文字

 

using System;using System.IO;using iTextSharp.text;using iTextSharp.text.pdf;using (var reader = new PdfReader(@"C:\Input.pdf"))using (var fileStream = new FileStream(@"C:\Output.pdf", FileMode.Create, FileAccess.Write)){
    var document = new Document(reader.GetPageSizeWithRotation(1));
    var writer = PdfWriter.GetInstance(document, fileStream);

    document.Open();

    for (var i = 1; i <= reader.NumberOfPages; i++)
    {
        document.NewPage();

        var baseFont = BaseFont.CreateFont(BaseFont.HELVETICA_BOLD, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
        var importedPage = writer.GetImportedPage(reader, i);

        var contentByte = writer.DirectContent;
        contentByte.BeginText();
        contentByte.SetFontAndSize(baseFont, 12);

        var multiLineString = "Hello,\r\nWorld!";

        foreach (var line in multiLineString)
        {
            contentByte.ShowTextAligned(PdfContentByte.ALIGN_LEFT, line, 200, 200, 0);
            y = y - 16;
        }

        contentByte.EndText();
        contentByte.AddTemplate(importedPage, 0, 0);
    }

    document.Close();
    writer.Close();}

 

07
2014
01

VS2010调试程序慢的解决办法

 

用VS2010 调试程序感觉越来越慢,实在受不了了,可以试试如下步骤:

 

重新设置vs2010环境:(在vs2010命令提示符下,执行devenv.exe /resetuserdata