Delphi调用API函数操作串口

再贴上一段用API操作串口的代码,还是API好,一目了然,呵呵。 unit main;  
interface  
uses 
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
Dialogs, StdCtrls, ExtCtrls;  
type 
TForm1 = class(TForm)     Button1: TButton;     Button2: TButton;     Memo1: TMemo;     Memo2: TMemo;     Label1: TLabel;     Label2: TLabel; 
    RadioGroup1: TRadioGroup;     Button3: TButton;     Button4: TButton; 
    procedure Button1Click(Sender: TObject);     procedure OpenSerialPort; 
    procedure Button2Click(Sender: TObject);     procedure Button3Click(Sender: TObject);     procedure Button4Click(Sender: TObject); private 
    { Private declarations } public 
    { Public declarations } end;  var 
Form1: TForm1; 
hSerialPort:Cardinal; implementation  
{$R *.dfm}  
procedure TForm1.Button1Click(Sender: TObject); begin 
OpenSerialPort; end; 
procedure tform1.OpenSerialPort; 












var 
cc:TCommConfig; Temp:string;  
begin 
Temp:='Com'+inttostr(RadioGroup1.ItemIndex+1); 
hSerialPort:=CreateFile(PChar(Temp),GENERIC_READ or GENERIC_WRITE,0,nil,OPEN_EXISTING,0,0); if (hSerialPort=invalid_handle_value) then begin 
    MessageBox(0,'打开串口失败','',MB_OK);     Exit; end; 
GetCommState(hSerialPort,cc.dcb); cc.dcb.BaudRate:=CBR_9600; cc.dcb.ByteSize:=8; 
cc.dcb.Parity:=NOPARITY; 
cc.dcb.StopBits:=ONESTOPBIT; 
if not SetCommState(hSerialPort,cc.dcb) then begin 
    ShowMessage('不能设置串口');     CloseHandle(hSerialPort);     Exit; end else 
     ShowMessage('打开,并设置成功!'); end;  
procedure TForm1.Button2Click(Sender: TObject); begin 
if hSerialPort<>0 then CloseHandle(hSerialPort); Exit; end;  
procedure TForm1.Button3Click(Sender: TObject); var 
temp:string; lw:LongWord; begin 
if hSerialPort=0 then Exit; temp:=Memo1.Text; 
WriteFile(hSerialPort,PChar(temp)^,Length(temp),lw,nil); end;  












procedure TForm1.Button4Click(Sender: TObject); var 
tempString:string; 
inBuff:array[0..2047]of Char; bytesRead,dwError:LongWord; cs:TComStat; begin 
ClearCommError(hSerialPort,dwError,@cs); if cs.cbInQue>SizeOf(inBuff)then begin 
    PurgeComm(hSerialPort,PURGE_RXCLEAR);     Exit; end; 
ReadFile(hSerialPort,inBuff,cs.cbInQue,bytesRead,nil); tempString:=Copy(inBuff,1,cs.cbInQue); Memo2.Text:=tempString;  end;  
end. 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值