var
fcomm: TFCOMM;
viewstring:string;
rbuf,sbuf:array[1..8] of byte;
//打开串口
procedure TFCOMM.FormShow(Sender: TObject);
begin
comm1.StartComm;
end;
//关闭串口
procedure TFCOMM.FormClose(Sender: TObject; var Action: TCloseAction);
begin
comm1.StopComm;
end;
//接收过程
procedure TFCOMM.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;BufferLength: Word);
var
i:integer;
begin
viewstring:=‘’ ;
move(buffer^,pchar(@rbuf)^,bufferlength);
for i:=1 to bufferlength do
viewstring:=viewstring+ inttohex(rbuf[i],2)+‘’ ;
viewstring:=‘接收’+ viewstring;
memo1.lines.add(viewstring);
memo1.lines.add(‘’ );
end;
这段代码在delphi 中读出的串口数据是什么数据类型?
API+VCL结构的
ReadFile
WriteFile
足够了,何必那么麻烦
用API的优点是不用带上OCX控制,爽..
var
DUFF: array[0..50] of CHAR; //存放读出的数据放在缓冲区该缓冲区中
xx: cardinal; //实际读取的字节数
BCC: BOOLEAN;
ss_xx, ss_yy: string;
LAPPED: pOVERLAPPED;
begin
bcc := readfile(pub_handle, duff, 50, XX, nil);
if not bcc then
begin
result := 0;
read_str := '';
end else //not bcc
begin
if xx > 0 then
begin
ss_yy := duff;
ss_xx := copy(ss_yy, 1, xx);
read_str := pchar(ss_xx);
result := xx;
duff := '';
end else //xx>0 表示有数据读出
begin
read_str := '';
result := 0;
duff := '';
end;
end; //not bcc
end;
Tcom_para = record
tt_com: pchar; //COM 口
tt_buad: integer; //波特率
tt_even: pchar; //奇偶校验 0-4=no,odd,even,,space
tt_stop: integer; //停止位
tt_size: integer; //数据位
end;const
VER_NT_WORKSTATION = $00000001;
VER_NT_DOMAIN_CONTROLLER = $00000002;
VER_NT_SERVER = $00000003; VER_SERVER_NT = $80000000;
VER_WORKSTATION_NT = $40000000; VER_SUITE_SMALLBUSINESS = $00000001;
VER_SUITE_ENTERPRISE = $00000002;
VER_SUITE_BACKOFFICE = $00000004;
VER_SUITE_COMMUNICATIONS = $00000008;
VER_SUITE_TERMINAL = $00000010;
VER_SUITE_SMALLBUSINESS_RESTRICTED = $00000020;
VER_SUITE_DATACENTER = $00000080;
VER_SUITE_SINGLEUSERTS = $00000100;
VER_SUITE_PERSONAL = $00000200;
VER_SUITE_BLADE = $00000400;
POSVersionInfoEx = ^TOSVersionInfoEx;
OSVERSIONINFOEXA = record
dwOSVersionInfoSize: DWORD;
dwMajorVersion: DWORD;
dwMinorVersion: DWORD;
dwBuildNumber: DWORD;
dwPlatformId: DWORD;
szCSDVersion: array[0..127] of AnsiChar;
wServicePackMajor: WORD;
wServicePackMinor: WORD;
wSuiteMask: WORD;
wProductType: BYTE;
wReserved: BYTE;
end;
OSVERSIONINFOEXW = record
dwOSVersionInfoSize: DWORD;
dwMajorVersion: DWORD;
dwMinorVersion: DWORD;
dwBuildNumber: DWORD;
dwPlatformId: DWORD;
szCSDVersion: array[0..127] of WideChar;
wServicePackMajor: WORD;
wServicePackMinor: WORD;
wSuiteMask: WORD;
wProductType: BYTE;
wReserved: BYTE;
end;
OSVERSIONINFOEX = OSVERSIONINFOEXA;
TOSVersionInfoEx = OSVERSIONINFOEX;
你还缺少填写DCB,API相对还是复杂点.建议用SPCOMM吧
吧.