📄 publicfunc.~pas
字号:
unit PublicFunc;
interface
uses
Windows,Classes,Messages,SysUtils,Forms,DB, ADODB,ComObj,Contnrs,DateUtils;
type
//发送串口数据的线程
TPublicFunc = Class(TObject)
private
Post_Event: THandle;//创建事件同步对象的句柄
hSend : THandle;//发送串口的句柄
hRecv : THandle;//接收串口的句柄
Read_os: Toverlapped;//重叠结构的变量
Receive: Boolean; //开关变量,代表是否接收
protected
// procedure Execute; override;
public
// constructor Create(CreateSuspended: Boolean;var SortArray: array of Integer);
// function StartCommProc(frmMsg:TForm):LongBool;//从配置文件中读取配置并启动
function OpenConnection(CommName:String):boolean;
published
end;
implementation
{$R *.dfm}
uses setcom;
//function StartCommProc(frmMsg:TForm):LongBool;
//begin
//end;
function TPublicFunc.OpenConnection(CommName:String):boolean;
var
fRetVal:boolean;
dcb: TDCB;
Error: Boolean;
begin
result := false;
CommName := form2.ComboBox1.Text;
// 打开发送串口
hSend := CreateFile(PChar(CommName), generic_read or generic_write,0,nil, OPEN_EXISTING,FILE_FLAG_OVERLAPPED,0);
if hSend = INVALID_HANDLE_VALUE then
raise Exception.Create('打开'+form2.ComboBox1.Text+'端口错误!');
// 设置输入和输出缓冲区大小
SetupComm(hSend, 1024, 1024);//对指定设备初始化相关参数
//设置串口的波特率、字符位数、奇偶校验、停止位
GetCommState(hSend, dcb);//用指定通信设备的当前控制设置真充设备控制块(DCB)
dcb.BaudRate := strToInt(form2.ComboBox2.Text);//波特率
dcb.ByteSize := 8;//字符位数
dcb.StopBits := 0 ;//0,1,2分别为1,1.5,2
dcb.Parity := 0;//奇偶校验位
Error := SetCommState(hSend, dcb);//重新初始化所有硬件和控制设置
{if (not Error) then
raise Exception.Create('设置'+ComboBox1.text+'错误');}
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -