高分求delphi/c++builder监听串口源码(吕雪松大侠请进)(200)

  • 主题发起人 主题发起人 fsnhlzm
  • 开始时间 开始时间
F

fsnhlzm

Unregistered / Unconfirmed
GUEST, unregistred user!
delphi/c++builder监听串口源码,是想找一个不占用串口就能接收到串口信息的程序.好像PortMon那样.网上有源码的贴,但编译出错.出错源码放在二楼.知道的朋友请留言,或发我邮箱:apple7777888@163.com
 
编译时constructor Create; 出错.
 
没人知道吗?没人知道吗?
 
unit frmComm; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,StdCtrls, ComCtrls; const MAXBLOCK = 160; type TComm = record idComDev : THandle; fConnected : Boolean; end; TCommForm = class(TForm) ComboBox1: TComboBox; Button1: TButton; StatusBar1: TStatusBar; Button2: TButton; ComboBox2: TComboBox; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); private { Private declarations } public { Public declarations } end; TCommThread = Class(TThread) protected procedure Execute;override; public constructor Create; end; var CommForm: TCommForm; CommHandle : THandle; Connected : Boolean; CommThread : TCommThread; implementation {$R *.DFM} uses frmMain,frmMdiMapView; procedure TCommThread.Execute; var dwErrorFlags,dwLength : DWORD; ComStat : PComStat; fReadStat : Boolean; InChar : Char; AbIn : String; XX,YY : double; file://经度、纬度 VID : string; file://车号 begin while Connected do begin GetMem(ComStat,SizeOf(TComStat)); ClearCommError(CommHandle, dwErrorFlags, ComStat); if (dwErrorFlags >0) then begin PurgeComm(CommHandle,(PURGE_RXABORT and PURGE_RXCLEAR)); // return 0; end; dwLength := ComStat.cbInQue; if (dwLength>0) then begin fReadStat := ReadFile(CommHandle, InChar, 1,dwLength, nil); if (fReadStat) then begin if (InChar <>Chr(13)) and (Length(abIn) < MAXBLOCK+5 ) then AbIn := AbIn + InChar else begin ... {接收完毕,} end;//if (fReadStat>0){ end; file://if (dwLength>0){ FreeMem(ComStat); end;{while} end; constructor TCommThread.Create; begin FreeOnTerminate := TRUE; inherited Create(FALSE); file://Createsuspended = false end; // procedure TCommForm.Button1Click(Sender: TObject); var CommTimeOut : TCOMMTIMEOUTS; DCB : TDCB; fRetVal : Boolean; begin StatusBar1.SimpleText := '连接中...'; CommHandle := CreateFile(PChar(ComboBox1.Text),GENERIC_READ,0,nil,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL , 0); if CommHandle = INVALID_HANDLE_VALUE then begin StatusBar1.SimpleText := '连接失败'; Exit; end; StatusBar1.SimpleText := '已同端口 '+ ComboBox1.Text + ' 连接!'; CommTimeOut.ReadIntervalTimeout := MAXDWORD; CommTimeOut.ReadTotalTimeoutMultiplier := 0; CommTimeOut.ReadTotalTimeoutConstant := 0; SetCommTimeouts(CommHandle, CommTimeOut); GetCommState(CommHandle,DCB); DCB.BaudRate := 9600; DCB.ByteSize := 8; DCB.Parity := NOPARITY; DCB.StopBits := ONESTOPBIT; fRetVal := SetCommState(CommHandle, DCB); if (fRetVal) then begin Connected := TRUE; try CommThread := TCommThread.Create; except Connected := FALSE; CloseHandle(CommHandle); fRetVal := FALSE; StatusBar1.SimpleText := '线程建立失败'; Exit; end; end else begin Connected := FALSE; CloseHandle(CommHandle); end; end; procedure TCommForm.Button2Click(Sender: TObject); begin Connected := FALSE; CloseHandle(CommHandle); {终止线程} CommThread.Terminate; StatusBar1.SimpleText := '关闭端口'+ComboBox1.Text; end; procedure TCommForm.FormClose(Sender: TObject; var Action: TCloseAction); begin Connected := FALSE; CloseHandle(CommHandle); StatusBar1.SimpleText := '关闭端口'+ComboBox1.Text; end; end.
 
吕雪松大侠请进.二楼是你所发的源码.为何我编译不了? 用的是 delphi7
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部