ComTest
- 格式:doc
- 大小:77.50 KB
- 文档页数:13
Java调用C# DLL的方法简介By 潘伟2012-8-7关于java调用C# 封装的DLL文件的方法第一种:java利用JNA进行调用思路:C#源码生成COM组件(dll和tlb文件),再利用C++进行封装,java通过JNA调用C++封装的DLL。
第二种:java利用jacob进行调用第一种java利用JNA调用C# DLL需安装Visual Studio 2010 ,下载jna.jar(解压放置于jdk_home/jre/lib/ext目录下)。
第一步:利用C#写COM组件1、新建一个类库项目(文件—新建—项目—类库;命名:COMTest);//根据实际需要取文件名2、生成.cs主文件;COMTestClass.cs3、右键点击工程->应用程序->程序集信息->使程序集com可见,打上勾4、右键点击工程->生成->为com Interop注册打上勾5、设置强签名(由于.Net下编译的COM组件并等同于C编译的COM组件,所以存在必须在运行目标机器注册的情况,对此.Net下编译的COM组件必须为程序进行签名,即强命名密钥;)打开Visual Studio Command Prompt 输入:sn -k MyKeyFire.snk 生成MyKeyFire.snk 文件,注意路径。
(.snk文件可以随意取,但.snk后缀名别忘记了)在签名标签中选中为程序集签名,选择刚刚生成的强名称文件MyKeyFire.snk 。
6、在“解决方案资源管理器”中找到节点“Properties”打开AssemblyInfo.cs文件如下图7、将[assembly: ComVisible(false)]属性改成[assembly: ComVisible(true)]如下图8、编译程序,\bin\Debug目录中会生成COMTest.dll 和COMTest.tlb文件。
第二步:利用C++进行再封装1、创建C++ DLL项目,新建项目->VC++->Win32 项目(名称:COMTest_Bridge)->下一步->应用程序类型:DLL2、添加类,类名:COMTest_Bridge,.h名:COMTest_Bridge.h,.cpp名:COMTest_Bridge.cpp,然后生成项目;3、把第一步生成的COMTest.dll 和COMTest.tlb文件放入C++项目下的Debug文件夹下。
暖通空调系统自动化课程设计1. 概述暖通空调系统自动化技术是现代智能建筑中不可或缺的环节。
本课程设计通过对暖通空调系统自动化的介绍、实验设计及实验操作等环节的学习,提升学生自动化控制系统设计、调试和运行的能力。
2. 课程学习目标学生通过本课程的学习,应该能够掌握:•暖通空调系统自动化控制系统原理和基本知识。
•暖通空调系统自动化控制方案设计方法。
•暖通空调系统自动化控制器配置、编程及调试方法。
•暖通空调系统自动化控制实验操作方法。
3. 课程内容本课程包括以下内容:3.1 暖通空调系统自动化控制系统原理和基本知识•静态图形和符号规范。
•算法图解和逻辑实现。
•暖通空调系统自动化控制系统的软件和硬件配置。
•自动化控制器编程和调试技术。
3.2 暖通空调系统自动化控制方案设计方法•系统设计重要性介绍。
•系统控制原则和策略讲解。
•系统控制器方案设计。
•系统调试过程介绍。
3.3 暖通空调系统自动化控制器配置、编程及调试方法•PLC常见模块介绍(输入模块、输出模块、计数模块、模拟量模块和通讯模块)。
•常用PLC编程语言介绍。
•自动化控制器调试技术。
3.4 暖通空调系统自动化控制实验操作方法。
•实验室硬件环境介绍。
•实验项目介绍。
•实验流程讲解。
4. 实验设计与操作以某航空机场的空调系统为例,具体设计如下:4.1 实验项目1.温度传感器检测机场大厅内室温,调节风机控制机场大厅内空气循环。
2.机场大厅内湿度传感器检测机场大厅内相对湿度,调节空气加湿类控制。
3.检测所有航站楼内外温度,制定智能化“取暖”计划。
4.2 实验流程1.设计与安装传感器与系统之间的传输协议:使用modbus协议,使用RTU方式进行通讯。
(软件平台使用:目前主流的第三方modbus测试工具如Modscan、Modscan32、Comtest、PDU等)。
2.空气循环控制:设计算法对温度传感器检测到的值进行控制,控制机场大厅内的空气流通。
(软件平台使用:Siemens S7-200 PLC)。
C++Test指南1 正文1.1 环境配置1.1.1 安装C++Test软件软件路径如下:\\yinfulin\【应用软件】\C++TEST\C++Test最终版本,将软件拷贝到本机,双击cpptest_win32_6.7.9.0.exe进行安装,安装完毕后重启计算机。
1.1.2 激活cpptest_win32_6.7.9.0.exe软件双击打开keygen.exe软件,Product选择C++test6.7x,见下图:点击“PatchPubKey”按钮,出现三个文件破解成功的提示后点击确定,但不要关闭keygen.exe。
运行C++Test,提示输入密码,点击“是(Y)”。
选择“Local license”,在“Expiration date”填入使用的截止日期,尽量填久一点(如下图),再将keygen.exe中“Password”中的数据复制到“Password”后面。
点击Check,如果验证通过,则“OK”按钮变为可用状态,点击“OK”即可,如果提示失败,则在keygen.exe中点击“Generate”按钮重新产生一个密码,重复第4步,直到成功。
2.1.3 安装insure_Win32_7.0.8.exe双击insure_Win32_7.0.8.exe软件,安装完毕后,启动keygen.exe软件,Product选择Insure++ 7x,点击PatchPubKey,然后确定,拷贝keygen软件中的Password,进入开始菜单启动Insure- Insure++ Control Panel软件,选择Password,在Password 中粘贴刚拷贝的Password,点击应用,确定。
到此软件安装完毕。
1.2 代码规范测试1.2.1 测试工程测试使用VS2005工程,存放路径如下:\\yinfulin\【应用软件】\C++TEST\C++Test 最终版本,工程名称为:CommTester.rar,拷贝该程序到本机解压,1.2.2 建立C++Test工程打开C++Test软件,点击File New Project打开新建工程对话框:左边选择Import Visual C++@2005Project,填写新建立工程的名称,选择新建立工程存放路径,选择要测试的VS2005工程(刚刚拷贝到机器的程序),见上图选择,点击OK,接下来直接点击确定,完成C++Test工程的建立。
霍尔效应测试㈠霍尔效应的组成,功能及性能,工作原理.组成: HMS测试系统主要由恒电流源、范德堡法则终端转换器、电压测量计,低温管道系统及磁场强度系统组成.功能及性能:工作原理:范德堡法则1 、电阻率测量测量电阻率时,依次在一对相邻的电极通电流,另一对电极之间测电位差,得到电阻R,代入公式得到电阻率ρ。
这种方法对于样品形状没有特殊的要求,但是要求薄膜样品的厚度均匀,电阻率均匀,表面是单连通的,即没有孔洞。
此外,A,B,C,D四个接触点要尽可能小(远远小于样品尺寸),并且这四个接触点必须位于薄膜的边缘。
为了简化测量和计算,常常要求待测薄膜为正方形,这是由于正方形具有很高的对称性,正方形材料的四个顶点从几何上是完全等效,因而可推知电阻值R AB,CD和R BC,AD在理论上也应该是相等。
查表可知当R AB,CD/R BC,AD=1时,f=1。
因此,最终电阻率的公式即可简化为:2、霍尔系数和迁移率测量测量霍尔系数时,在一对不相邻的电极通上电流,并在垂直样品方向上加一磁场,在另一对不相邻的电极上测量电压的变化,可得霍尔系数及其载流子浓度.其中d为样品厚度,B为磁场强度,q为电子电荷。
由电阻率和霍尔系数的测量,同时还可以得到电子的霍尔迁移率。
㈡软件菜单使用说明1. 先打开电脑主机,再打开设备开关。
2. 左手拿磁极的上盖(N朝上),将待测得薄膜样品放入弹簧夹内,此时弹簧夹应正面朝上(如果放反,会将样品烧坏),放好后盖好上盖。
3. 开始界面4. 进入霍尔测试界面需要输入数据的只有左上角的INPUT VALUE栏,别的都不用改动。
INPUT VALUE的菜单说明如下所示。
DATE:测试日期;USER NAME:用户名称;SAMPLE NAME:样品名称;(前三项自己正确填写);COMPORT:通信端口(已设置好不用重新输入);TEMP:测试温度(室温下测选择300K,液氮的环境中测选择77K);I: 测试电流(根据试验需求输入);DELAY:更换测试点测试延时(一般无需改动,0.100s);D:样品厚度(根据自己的样品输入);B:测量磁场(根据磁铁上的数据输入);Measurement Number:测量次数(一般选择1000)。
终端考试试题及答案终端考试试题⼀、填空题。
1.CPU 平台为Intel 的产品 WT8870A 、 WT8872A 、TC8670A 、 TC8672A 、 TC8670-15A 等。
2.WBT终端产品按操作系统可以分为 WIN CE系列、 WIN XPE系列、 LINUX系列。
3.WBT终端产品按CPU平台可以分为 VIA C3 、 ADM LX800 、 Intel 、VIA C7 。
4.WBT终端产品按⽹卡可分为单⽹卡、双⽹卡。
5.写出三种双⽹卡产品型号 WT8852B 、 WT8862A 、 TC8872C 、TC8672-15A 等。
6.写出三种单⽹卡产品型号 WT8850 、 WT8860A 、 WT8870A 、 TC8670-15A 等。
7.写出三种WIN XPE 系列产品 TC8662C 、TC8872 、 TC8852B、 TC8872-15A 等。
8.WIN CE 系列终端串⼝检测命令是 COMTEST 。
9.WIN XPE系列终端串⼝检测命令是 Ctrl+Alt+T 、Ctrl+Alt+F5 。
10.检测⽹络是否连接主机正常的命令是 PING 。
11.开机后按Ctrl+Alt+D键恢复缺省的显⽰参数(800×600,60Hz)12.进⼊控制⾯板热键为 F2或Ctrl+F2 。
13.WBT终端同时⽀持使⽤⽹络或者串⼝通讯与服务器进⾏连接。
14.终端开机显⽰停在GWI画⾯后就不运⾏了,可以在开机时按 G 键恢复出⼚参数15.WBT终端按 DEL键或Ctrl+Alt+F1键进⼊COMS 设置项进⾏设置。
16.我公司的终端只有辅串2可以由232电平转换成TTL电平17.我公司终端采⽤的主板型号主要有945M1、852FE、945BK、945GMS等。
18.电⼦盘的容量主要有128M、1G、2G、4G、16G等。
19.硬盘的容量有80G、160G、250G。
20.硬盘/电⼦盘的接⼝类型有IDE、SATA。
富平县天成农业产业园视频监控系统施工方案2010-2-27目录一、系统实施组织方案 (4)1.1、项目进度管理 (7)1.2、设备及技术资料交付的具体实施 (8)1.3、质量管理 (10)1.4、验收测试方法及标准 (14)二、技术支持与售后服务 (14)2.1、技术支持服务形式 (14)2.2、本项目具体技术支持服务计划 (15)2.4、技术服务内容 (16)2.5、售后服务内容及方式 (17)2.6、维护服务承诺 (19)三、系统培训 (19)3.1、厂家培训: (20)3.2、现场培训: (20)3.3、培训目的: (20)3.4、培训资料 (21)四、系统实施规范与标准 (21)4.1、布线施工步骤 (22)4.2、系统实施要求 (22)5、光缆芯线终端的安装 (26)6、前端摄像机及配件安装 (26)五、系统实现功能与验收标准 (28)一、系统实施组织方案我公司凭借技术实力、人员实力、项目管理经验和工程实施经验,承诺“按照合同在规定的时间内保质保量完成工程”。
为了保证工程的实施进度,采取一系列的措施,在生产、技术、人员、文档、管理、实施等各个方面进行了周密的部署和计划安排。
具体的说,主要包括项目施工进度管理、质量管理、文档管理、技术管理、人员组织、项目管理软件选型以及项目实施过程中的系统培训管理。
项目管理机构配置建立和设计合理的项目组织结构,并根据组织内外部因素的变化适时地调整组织结构,其目的是为了更有效地实现组织目标。
因此,项目组织的效能高低是项目最终成功的基础和保证。
我们将建立一个能够有效把各类管理和技术人员结合在一起高效运作的项目经理部,实行项目经理负责制;项目经理部下设项目副经理、项目技术负责人和合同营运负责人,分别管理三个不同的职能组,即项目施工组,技术质量组和合同运营组。
保证视频监控系统的成功建设。
该项目的管理机构配备情况表如下所示:项目组及人员职责项目负责人由公司工程部门经理担任,其主要职责是:牵头开展项目组和各有关单位、部门之间的协调工作;对整个项目建设过程的进度、计划、质量等活动进行宏观监督;项目管理部:主要职能包括:质量管理,进度管理,成本管理,劳动管理,机械设备管理,安全管理,现场文明施工管理,施工现场材料管理,奖惩管理,业务招待、现金、支票的管理,过程文件及竣工资料的管理等。
终端考试试题一、填空题。
1.CPU 平台为Intel 的产品 WT8870A 、 WT8872A 、TC8670A 、 TC8672A 、 TC8670-15A等。
2.WBT终端产品按操作系统可以分为 WIN CE系列、 WIN XPE系列、 LINUX系列。
3.WBT终端产品按CPU平台可以分为 VIA C3 、 ADM LX800 、 Intel 、VIA C7 。
4.WBT终端产品按网卡可分为单网卡、双网卡。
5.写出三种双网卡产品型号 WT8852B 、 WT8862A 、 TC8872C 、TC8672-15A 等。
6.写出三种单网卡产品型号 WT8850 、 WT8860A 、 WT8870A 、 TC8670-15A 等。
7.写出三种WIN XPE 系列产品 TC8662C 、TC8872 、 TC8852B、 TC8872-15A 等。
8.WIN CE 系列终端串口检测命令是 COMTEST 。
9.WIN XPE系列终端串口检测命令是 Ctrl+Alt+T 、Ctrl+Alt+F5 。
10.检测网络是否连接主机正常的命令是 PING 。
11.开机后按Ctrl+Alt+D键恢复缺省的显示参数(800×600,60Hz)12.进入控制面板热键为 F2或Ctrl+F2 。
13.WBT终端同时支持使用网络或者串口通讯与服务器进行连接。
14.终端开机显示停在GWI画面后就不运行了,可以在开机时按 G 键恢复出厂参数15.WBT终端按 DEL键或Ctrl+Alt+F1键进入COMS 设置项进行设置。
16.我公司的终端只有辅串2可以由232电平转换成TTL电平17.我公司终端采用的主板型号主要有945M1、852FE、945BK、945GMS等。
18.电子盘的容量主要有128M、1G、2G、4G、16G等。
19.硬盘的容量有80G、160G、250G。
20.硬盘/电子盘的接口类型有IDE、SATA。
延边大学计算机VB期末考试试题整理单选1.没有Caption 属性的控件是 D 。
Frame1 label1 command1 text12.下列关于数组的说法中,正确的是 B 。
在visual basic中,数组只能在模块中定义,不能在过程中定义定义数组时,数组的每一维元素的个数必须是常数,不能是变量或表达式在visual basic中一个数组所包含的元素只能是同类型的数据与普通变量一样。
数组也可以不定义就使用3. 表达式Int(7.8)+Int(-7.2)的结果是 D 。
0 15 1 -14. 下列对象不具有KeyPress事件的是 D命令按钮文本框窗体标签5. 用ReDim语句定义的数组是 C 。
多维数组永久数组临时数组静态数组6. 下列对象不具有MousePointer属性的是 C图片框框架形状窗体7. 下列关于Select Case的叙述中,错误的是 C 。
Case”abc”,”ABC”表示判断is是否和”abc”、”ABC”两个字符串中的一个相同Case”X”表示判断is是否是大写字母XCase -7,0,100表示判断is是否等于字符串”-7,0,100”Case 10 to 100 表示判断is是否介于10与100之间8. 有如下程序:Sub MySub(ParamArray a())s = 1For Each x In as = s + xNext xPrint sEnd SubPrivate Sub Command1_Click()MySub 2, 3, 6, 18End Sub程序运行后,单击命令按钮,则输出的结果是 A .30 3 1 299. 下列指定非蓝色的表达式是 D 。
Vbblue qbcolor(12) rgb(0,0,255) &hff000010. 在窗体上画一个列表框 List1,编写如下两个事件代码: Private Sub Form_Load()List1.AddItem "111":List1.AddItem "222"List1.AddItem "333":List1.AddItem "444"End SubPrivate Sub List1_DblClick()Str1 = "666"Print List1.Text + Str1End Sub程序运行后,双击列表框中的”222”,则输出的结果是 C 222 888 222666 66622211. 关键字ListBox代表的控件类型是 D .文本框文本框列表组合框列表框12. 在窗体上画一个名称为Command1的命令按钮和一个名称为Text1的文本框,然后编写如下程序:Sub s1(ByVal x As Integer, ByVal y As Integer, z As Integer)z = x * yEnd SubPrivate Sub Command1_Click()Dim a, b, c As Integera = -3 :b = -2 :c = 0Call s1(a, b, c)Text1.Text = Str(c)End Sub程序运行后,单击命令按钮,则在文本框中显示的内容是 B .Str(c) 6 0 空白字符串13. Visual Basic的过程有三种,它们是 C .属性过程、通用过程和函数过程事件过程、通用过程和函数过程事件过程、函数过程和子程序过程通用过程、子程序过程和函数过程14. 已知字母 "A" 的ASCII码是65 则Asc("HI")的值是 B 。
matlab的combuilder系列-matlab下做com组件com builder是matlab6.5才有的,也是mathworks公司推荐使用于混合编程的,这些日子我对他进行了全方位的摸索,感觉是爽呆了,下面我们一起来揭开它的神秘面纱,^_^。
此系列分为以下几块:1.matlab下做com组件2.vb,c#.net实现调用3.vc实现调用4.打包5.优缺点评注其中2,3部分可以选择一个看有什么问题请发到邮箱: dkf03@,也可以上smth,ID:xxhn后期补充:6.vc中的数组和com中的V ARIANT变量的相互转换(By capriccio)7.vb,.net中的数组和com中的V ARIANT变量的相互转换8. Matlab与VC混合编程(用idl或dll来调用com组件)builder与vc混编中复数类型的输出(By LPCTSTR)一.matlab下做com组件com是component object module的简称,它是一种通用的对象接口,任何语言只要按照这种接口标准,就可以实现调用它。
matlab6.5新推出来的combuilder就是把matlab下的程序做成com组件,供其他语言调用。
我们先准备两个测试文件,并copy一个图片到c盘下,起名叫1.jpg(这些你都可以改的,我这儿是为了程序方便)第一个叫im_test.m如下:function im_test %这个文件不带输入与输出I=imread('c:\1.jpg'); %因为以前带有imshow的程序用mcc编成dll后用%不了,所以想试combuilder是否imshow(I); %能支持这些函数第二个叫split2rgb.m,就是前些日子Zosco发给我的那个程序,因为它用mcc编成dll后有问题,所以我在这儿继续将它进行测试,而且它也带有多个输入及输出参数,所以也正好拿来测试在matlab的workspace下打comtool,就打开了matlab com builder,点击file-new project,新建一个工程,在component name里填上comtest,Class name里填上一个sgltest(并将自动生成classes里的comtest remove掉),compliecode in选c或c++都无所谓,将Complier options里的Use Handle Graphics library的复选框画上,点击ok就行了。
PC端串口通信示例教程一、使用VC6和虚拟串口本文介绍的工程示例都基于微软公司的Visual C++6.0(简称VC6)工具软件进行开发。
首先确认电脑中是否有安装VC6开发软件。
如果电脑中没有安装VC6,可以打开短学期资料文件夹中的工具软件子目录,双击“VC6_SP6”图标进行安装,建议设置安装路径到C:\VC6如图1所示。
图1 安装VC6安装完软件后,打开VC6如图2所示。
选择菜单项“File”→“Open Workspace”,弹出窗口如图3所示。
然后打开资料文件夹下工程示例中的PC串口子目录,选择其中的COMTEST示例工程。
图2 VC6集成开发环境图3 打开示例工程COMTEST打开COMTEST示例工程后,可以看到VC6主界面如图4所示。
打开工程后,可以点击工具栏上的“Build”按钮或按快捷键F7进行编译。
选择左边的“ClassView”类视图可以查看整个工程用户相关的类代码结构;选择“ResourceView”资源视图可以查看整个工程相关的图标、文字、窗口等资源信息;选择“FileView”文件视图可以查看打开整个工程相关的用户源文件。
图4 VC6主界面布局接下来,本文准备用虚拟串口和串口调试助手进行软件调试。
打开资料文件夹→工具软件→PC端串口→虚拟串口,先按照说明安装虚拟串口驱动(本文不再详述)。
然后打开虚拟串口配置程序vspdconfig如图5所示。
软件会自动生成一对互相连接的虚拟串口,我们只需要点击“Add Pair”按钮即可添加好。
图5 虚拟串口配置软件回到图4的VC6主界面,选择“ClassView”类视图,展开CCOMTESTDlg类,双击OnInitDialog 函数如图6所示。
修改其中的OpenPort代码行,将打开端口改为COM2。
图6 修改OnInitDialog函数重新编译成功后,点击“Execute Program”按钮运行程序如图7所示。
图7 运行COMTEST程序运行串口调试助手程序,选择打开COM1端口。
Code:baudRatelLabel.Text = ex.Message;}}private void ReadButton_Click(object sender, EventArgs e){try{//clear the text boxtextBox.Text = "";//read serial port and displayed the data in text boxtextBox.Text = sp.ReadLine();}catch(System.Exception ex){baudRatelLabel.Text = ex.Message;}}private void Form1_Load(object sender, EventArgs e){}private void Form1_FormClosing(object sender, FormClosingEventArgs e){MessageBox.Show("Do u want to Close the App");sp.Close();}private void startCommButton_Click(object sender, EventArgs e){startCommButton.Hide();sendButton.Show();readButton.Show();textBox.Show();}//when we want to save the status(value)private void saveStatusButton_Click_1(object sender, EventArgs e){//display values//if no property is set the default valuesif (pp.bRate == "" && pp.sBits == ""){dataBitLabel.Text = "BaudRate = " + sp.BaudRate.ToString();readTimeOutLabel.Text = "StopBits = " + sp.StopBits.ToString();}else{dataBitLabel.Text = "BaudRate = " + pp.bRate;readTimeOutLabel.Text = "StopBits = " + pp.sBits;}parityLabel.Text = "DataBits = " + sp.DataBits.ToString();stopBitLabel.Text = "Parity = " + sp.Parity.ToString();readTimeOutLabel.Text = "ReadTimeout = " +sp.ReadTimeout.ToString();if (propertyButton.Visible == true)propertyButton.Hide();saveStatusButton.Hide();startCommButton.Show();try{//open serial portsp.Open();//set read time out to 500 mssp.ReadTimeout = 500;}catch (System.Exception ex){baudRatelLabel.Text = ex.Message;}}}}属性设置对话框代码:Code:#region Using directivesusing System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;#endregionnamespace Serialexpample{partial class PropertyPage : Form{//variables for storing values of baud rate and stop bitsprivate string baudR="";private string stopB="";//property for setting and getting baud rate and stop bitspublic string bRate{get{return baudR;}set{baudR = value;}}public string sBits{get{return stopB;}set{stopB = value;}}public PropertyPage(){InitializeComponent();}private void cancelButton_Click(object sender, EventArgs e){this.bRate = "";this.sBits = "";//close formthis.Close();}private void okButton_Click_1(object sender, EventArgs e){//here we set the value for stop bits and baud rate.this.bRate = BaudRateComboBox.Text;this.sBits = stopBitComboBox.Text;//this.Close();}}}一.概述在Visual Studio 6.0中编写串口通讯程序,一般都使用Microsoft Communication Control(简称MSComm)的通讯控件,只要通过对此控件的属性和事件进行相应编程操作,就可以轻松地实现串口通讯。
但在技术广泛应用的今天,Visual 没有将此控件加入控件库,所以人们采用了许多方法在Visual 来编写串口通讯程序:第一种方法是通过采用Visual Studio 6.0中原来的MSComm控件这是最简单的,最方便的方法,但需要注册;第二种方法是采用微软在.NET推出了一个串口控件,基于.NET的P/Invoke 调用方法实现;第三种方法是自己用API写串口通信,虽然难度高,但可以方便实现自己想要的各种功能。
现在微软推出了最新版本的Visual Studio 2005开发工具,可以不再采用第三方控件的方法来设计串口通讯程序。
NET Framework 2.0 类库包含了SerialPort 类,方便地实现了所需要串口通讯的多种功能,为了使MSComm编程方法快速转换到以SerialPort类为核心的串口通讯的设计方法,本文着重讨论了Visual Studio 6.0的MSComm控件和SerialPort 类设计方法的异同点。
二.SerialPort常用属性、方法和事件1.命名空间System.IO.Ports命名空间包含了控制串口重要的SerialPort类,该类提供了同步I/O 和事件驱动的I/O、对管脚和中断状态的访问以及对串行驱动程序属性的访问,所以在程序代码起始位置需加入Using System.IO.Ports。
2.串口的通讯参数串口通讯最常用的参数就是通讯端口号及通讯格式(波特率、数据位、停止位和校验位),在MSComm中相关的属性是CommPort和Settings。
SerialPort类与MSComm有一些区别: a.通讯端口号[PortName]属性获取或设置通信端口,包括但不限于所有可用的COM 端口,请注意该属性返回类型为String,不是mPort的short类型。
通常情况下,PortName正常返回的值为COM1、COM2……,SerialPort类最大支持的端口数突破了CommPort控件中CommPort属性不能超过16的限止,大大方便了用户串口设备的配置。
b. 通讯格式SerialPort类对分别用[BaudRate]、[Parity]、[DataBits]、[StopBits]属性设置通讯格式中的波特率、数据位、停止位和校验位,其中[Parity]和[StopBits]分别是枚举类型Parity、StopBits,Parity类型中枚举了Odd(奇)、Even(偶)、Mark、None、Space,Parity枚举了None、One、OnePointFive、Two。
SerialPort类提供了七个重载的构造函数,既可以对已经实例化的SerialPort对象设置上述相关属性的值,也可以使用指定的端口名称、波特率和奇偶校验位数据位和停止位直接初始化SerialPort 类的新实例。
3.串口的打开和关闭SerialPort类没有采用MSComm.PortOpen=True/False设置属性值打开关闭串口,相应的是调用类的Open()和Close()方法。
4. 数据的发送和读取Serial类调用重载的Write和WriteLine方法发送数据,其中WriteLine可发送字符串并在字符串末尾加入换行符,读取串口缓冲区的方法有许多,其中除了ReadExisting和ReadTo,其余的方法都是同步调用,线程被阻塞直到缓冲区有相应的数据或大于ReadTimeOut属性设定的时间值后,引发ReadExisting异常。
5.DataReceived事件该事件类似于MSComm控件中的OnComm事件,DataReceived事件在接收到了[ReceivedBytesThreshold]设置的字符个数或接收到了文件结束字符并将其放入了输入缓冲区时被触发。
其中[ReceivedBytesThreshold]相当于MSComm控件的[Rthreshold]属性,该事件的用法与MsComm控件的OnComm事件在CommEvent为comEvSend和comEvEof时是一致的。
三.SerialPort的使用对于熟悉MSComm控件的程序设计者,SerialPort类是相当容易上手的。
在进行串口通讯时,一般的流程是设置通讯端口号及波特率、数据位、停止位和校验位,再打开端口连接,发送数据,接收数据,最后关闭端口连接这样几个步骤。