Delphi使用两种不同方法获取系统端口信息--(装载)
Delphi使用两种方法获取windows系统的端口,还可测试发送消息,点击获取端口信息后,可依次得到如下信息:DCB结构大小、波特率大小、XON的临界值、XOFF的临界值、字符位数、奇偶检验位、停止位、XON字符等,也可设置端口信息,设置SPCOMM端口信息:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, SPComm, StdCtrls, ComCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Button2: TButton;
Memo1: TMemo;
Button3: TButton;
Button1: TButton;
Label1: TLabel;
Button4: TButton;
Comm1: TComm;
Edit2: TEdit;
Button5: TButton;
StatusBar1: TStatusBar;
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end; var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button2Click(Sender: TObject);
var
CommPort : string;
hCommFile : THandle;
hdcb:DCB;
begin
commport:=Edit1.Text;
hCommFile := CreateFile(PChar(CommPort),GENERIC_READ or GENERIC_WRITE,
,nil,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,);
//打开端口失败的处理
if hCommFile =INVALID_HANDLE_VALUE then
Statusbar1.SimpleText:='不能打开端口';
GetCommState(hcommFile,hdcb); //获取DCB结构信息
Memo1.Clear;
Memo1.Lines.Add('DCB结构大小是:'+IntToStr(hdcb.DCBlength)+##+
'波特率大小是: '+IntToStr(hdcb.BaudRate)+##+
'XON的临界值是:'+IntToStr(hdcb.XonLim)+##+
'XOFF的临界值是:'+IntToStr(hdcb.XoffLim)+##+
'字符位数是:'+IntToStr(hdcb.ByteSize)+##+
'奇偶检验位:'+IntToStr(hdcb.Parity)+##+
'停止位:'+IntToStr(hdcb.StopBits)+##+
'XON字符:'+hdcb.XonChar+##+
'XOFF字符:'+hdcb.XoffChar+##+
'奇偶错误代替字符:'+hdcb.ErrorChar+##+
'结束字符:'+hdcb.EofChar+##+
'时间字符:'+hdcb.EvtChar+##);
CloseHandle(hcommfile);
//关闭端口句柄,否则重新执行程序时会调用空句柄,不能得到正确的参数值
end;
procedure TForm1.Button3Click(Sender: TObject);
var
CommPort : string;
hCommFile : THandle;
Buffer : PCommConfig;
size : DWORD;
begin
CommPort := 'COM2';
hCommFile := CreateFile(PChar(CommPort),
GENERIC_WRITE,
,
nil,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
);
if hCommFile=INVALID_HANDLE_VALUE then
begin
Statusbar1.SimpleText:='不能打开 '+ CommPort;
exit;
end;
GetMem(Buffer, sizeof(TCommConfig));
GetCommConfig(hCommFile, Buffer^, size);
FreeMem(Buffer, sizeof(TCommConfig));
GetMem(Buffer, size);
GetCommConfig(hCommFile, Buffer^, size);
if CommConfigDialog(PChar(CommPort),Handle,Buffer^) = true then
SetCommConfig(hCommFile, Buffer^, size);
FreeMem(Buffer, size);
CloseHandle(hCommFile);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
setComm : string;
hsetFile : THandle;
hsetdcb:DCB;
begin
//设置断口信息
setcomm:=Edit1.Text;
hsetFile := CreateFile(PChar(setComm),GENERIC_READ or GENERIC_WRITE,
,nil,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,);
//打开端口失败的处理
if hsetFile =INVALID_HANDLE_VALUE then
Statusbar1.SimpleText:='不能打开端口';
GetCommState(hsetFile,hsetdcb);
hsetdcb.BaudRate:=;
hsetdcb.StopBits:=;
hsetdcb.ByteSize:=;
SetCommState(hsetFile,hsetdcb); //获取DCB结构信息
closeHandle(hsetfile); //关闭端口
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
comm1.StopComm; //先关闭端口
{设置一些必要的参数}
Comm1.CommName:=Edit1.Text;
Comm1.BaudRate:=;
Comm1.ByteSize:=_;
Comm1.StopBits:=_;
Comm1.Parity:=None;
Try
comm1.StartComm; //打开端口
except
raise Exception.create('打开端口'+comm1.CommName+'出错了');
end;
Statusbar1.SimpleText:=Comm1.CommName+'打开了';
Button5.Enabled:=True;
end;
procedure TForm1.Button5Click(Sender: TObject);
var str:string;
count:WORD;
begin
str:=pchar(Edit2.Text);
count:=length(str);
If comm1.WriteCommData(pchar(str),count) Then
Statusbar1.SimpleText:='已经发送'+IntToStr(count)+'字符'
Else
Statusbar1.SimpleText:='发送不成功';
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
Comm1.StopComm; //关闭端口
end;
end.
Delphi使用两种不同方法获取系统端口信息--(装载)的更多相关文章
- 关于vector的erase删除操作的两种不同方法,在linux与visual studio的实现讨论
关于vector的erase删除操作的两种不同方法,在linux与visual studio的实现讨论 1.前言: 最近在做某一个题时,用到了vector的删除操作,利用的是erase()函数删除符合 ...
- ThinPHP命名空间,连接数据库是要修改的配置文件,Model数据模型层,跨控制器调用,如何获取系统常量信息,
一.命名空间(主要是为了实现自动加载类) *命名空间(相当于虚拟的目录),为了让类有一个统一的文件夹来管理(可以自动加载'类'),每个文件都要有命名空间*tp如何做命名空间:*TP框架下有一个初始命名 ...
- ThinkPHP框架 3.2.2 获取系统常量信息 连接数据库 命名空间的理解
获取系统常量信息 随便一个方法里加上这句话都能获取到系统常量信息!! var_dump(get_defined_constants()); <?php namespace Admin\Contr ...
- Linux sysinfo获取系统相关信息
Linux中,可以用sysinfo来获取系统相关信息. #include <stdio.h> #include <stdlib.h> #include <errno.h& ...
- android 获取系统硬件信息
一,首先设置权限访问: <uses-permission android:name="android.permission.READ_PHONE_STATE" /> ...
- 获取系统相关信息 (CPU使用率 内存使用率 系统磁盘大小)
引言 在软件开个过程中,对于软件的稳定性和使用率也是我们需要关注的 . 使用sigar来监控,简单方便! 使用说明:下载sigar jar及配合sigar的dll文件来用,需要将dll文件放到JD ...
- 通过java的Runtime.getRuntime()和System.getProperties()来获取系统的信息
第一种,通过Runtime.getRuntime()来获取系统信息. 通过java来获取系统以下的信息: 主机名: OS 名称: OS 版本: OS 制造商: OS 配置: 独立工作站 ...
- Revit二次开发-根据Element获取系统族信息
Element element = doc.getElement(elementId); Autodesk.Revit.DB.Parameter familyType = element.get_Pa ...
- Linux C 语言 获取系统时间信息
比如获取当前年份: /* 获取当前系统时间 暂时不使用 int iyear = 0; int sysyear = 0; time_t now; ...
随机推荐
- XVII Open Cup named after E.V. Pankratiev. GP of Two Capitals
A. Artifact Guarding 选出的守卫需要满足$\max(a+b)\leq \sum a$,从小到大枚举每个值作为$\max(a+b)$,在权值线段树上找到最大的若干个$a$即可. 时间 ...
- mysql安装了半天参考了文章搞定了
https://blog.csdn.net/yelllowcong/article/details/79641313 mysql -uroot -pbrucelee 总结下: 1.安装时注意具体的路径 ...
- css 元素溢出
css元素溢出: 当子元素的尺寸超过父元素的尺寸时,需要设置父元素显示溢出的子元素的方式,设置的方法是通过overflow属性来设置. overflow的设置项: (1)visible 默认值 内容不 ...
- mysql Navicat 导入导出
1.导出数据库: 打开Navicat ,在我们要导出的数据库上右击鼠标,然后弹出的快捷菜单上点击“转储SQL 文件”,(有些版本, 会有子菜单,在再次弹出的子菜单项中选择第一个“数据跟结构”) ...
- elasticsearch视频
简单的集群管理 (1)快速检查集群的健康状况 es提供了一套api,叫做cat api,可以查看es中各种各样的数据 GET /_cat/health?v epoch timestamp cluste ...
- javascript的数组之map()
map()方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的回调函数后返回的结果.新数组 // ES6 let numbers = [1, 5, 10, 15]; let doubles ...
- CDN请求失败,请求本地
方法一: <script src="http://lib.sinaapp.com/js/jquery11/1.8/jquery.min.js"></script& ...
- C++ 编译发现 error C2146: syntax error : missing ';' before identifier 'm_ctrlserver'
解决这个问题的根源是重复包含了头文件
- Javascript获取服务器时间
//获取服务器时间 var getServerDate = function () { var xmlHttpRequest = null, serverDate = new Date ...
- Codeforces 1154E - Two Teams - [线段树+链表]
题目链接:https://codeforces.com/contest/1154/problem/E 题意: $n$ 个人排成一排,第 $i$ 个人的能力值为 $a[i]$,$a[1 \sim n]$ ...