web view串口通信-mscomm控件使用详解. 2012-11-13 09:35 6988人阅读 评论(0) 收藏...

Download Web view串口通信-MSComm控件使用详解. 2012-11-13 09:35 6988人阅读 评论(0) 收藏 举报. 控件编程 Delphi编程(13) MSComm 控件通过串行

If you can't read please download the document

Upload: dinhkhuong

Post on 06-Feb-2018

281 views

Category:

Documents


2 download

TRANSCRIPT

-MSComm

2012-11-13 09:356988(0)

Delphi13

MSComm MSCommAPIVCVBDelphiMicrosoft Communications ControlMSCommMicrosoftWindowsActiveX(Eventdriven)

1.MSComm

1.1

Carrier Detect (CD) Request To Send (RTS) MSComm OnComm OnComm CommEvent OnCommMSComm MSComm

1.2

CommEvent

2.MSComm

MSComm1.Settings:=9600,n,8,1; //,,,

Settings:,,,,9600,n,8,19600, ,8,1

MSComm1.InBufferSize:=1024;//

InBufferSize:,1024,,, MSComm1.InBufferSize:=2000,2000

MSComm1.OutBufferSize:=1024;//

OutBufferSize:,1024,

MSComm1.InBufferCount:=0;//

InBufferCount:,count:=MSComm1.InBufferCount,

count,InBufferCount MSComm1.InBufferCount:=0,

MSComm1.OutBufferCount:=0;//

OutBufferCount:,OutBufferCount

MSComm1. OutBufferCount:=0,

MSComm1.InputMode:=comInputModeText;//

MSComm1.InputMode:=comInputModeBinary; //

InputMode:, comInputModeText(0)(ASCII),

comInputModeBinary(1)

comInputModeText, comInputModeBinary,0,1

RcvByte:=MSComm1.Input

Input:Input,RcvByte:=MSComm1.Input,RcvByte:array ofBytearray ofVariant.RcvByte:SetLength(RcvByte,len),,SetLength(RcvByte, MSComm1.InBufferCount)

MSComm1.Output:=OutputDat

Output:Output,MSComm1.Output:=OutputDat,OutputDat,OutputDatarray ofByte,OutputDat, SetLength(OutputDat,len),OutputDat,MSComm1.OutBufferCount:=0,MSComm1.Output:=OutputDat

MSComm1.InputLen:=0; //

InputLen:Input, MSComm1.InputLen:=1,,MSComm1.InputLen:=0,

MSComm1.SThreshold:=0; //,OnComm

SThreshold:OnComm(),MSComm1.SThreshold:=0,,OnComm,MSComm1.SThreshold:=5,54,OnComm

MSComm1.RThreshold:=1; //1OnComm

RThreshold:OnComm(),MSComm1.RThreshold:=0,OnComm,MSComm1.RThreshold:=5,5,OnComm

MSComm1.PortOpen:=True;//

PortOpen:,MSComm1.PortOpen:=True,

MSComm1.PortOpen:=False

MSComm1.CommPort:=CommPort;

CommPort:, MSComm1.CommPort:=1,COM1

CommEvent:comEvReceive, comEvSend

OnComm

comEvSend1comEvReceive 2comEvCTS3clear-to-sendcomEvDSR4data-set readycomEvCD5carrier detectcomEvRing6comEvEOF7

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

ComPort

object.CommPort[value ] (value ) value 1 16 1 PortOpen MSComm 68 CommPort

RThreshold MSComm CommEvent comEvReceive OnComm object.Rthreshold [ = value ]value OnComm Rthreshold 0 OnComm Rthreshold 1 MSComm OnComm

CTSHolding Clear To Send (CTS) Clear To Send object.CTSHoldingBoolean

Mscomm CTSHolding True Clear To Send False Clear To Send

Clear To Send (CTSHolding = False) MSComm CommEvent comEventCTSTO (Clear To Send Timeout) OnComm

Clear To Send RTS/CTS (Request To Send/Clear To Send) Clear To Send CTSHolding

Handshaking

SThresholdMSComm CommEvent comEvSend OnComm

object.SThreshold [ = value ]value OnComm

Sthreshold 0 OnComm Sthreshold 1MSComm OnComm valueCommEvent comEvSend OnComm comEvSend Sthreshold Sthreshold 5 5 4 comEvSend Sthreshold comEvSend

HandShake comNone 0 comXonXoff 1 XOn/Xoff comRTS 2 Request-to-send/clear-to-send comRTSXOnXOff 3 Request-to-send clear-to-send

OnComm comEvSend 1 comEvReceive 2 comEvCTS 3 clear-to-send comEvDSR 4 data-set ready comEvCD 5 carrier detect comEvRing 6 comEvEOF 7

Error comEventBreak 1001 comEventCTSTO 1002 Clear-to-send comEventDSRTO 1003 Data-set ready comEventFrame 1004 comEventOverrun 1006 comEventCDTO 1007 Carrier detect comEventRxOver 1008 comEventRxParity 1009 Parity comEventTxFull 1010 comEventDCB 1011 (DCB)

InputMode

comInputModeText 0 Input comInputModeBinary 1 Input

CDHolding Carrier Detect (CD) Carrier Detect

object.CDHoldingCDHolding True Carrier Detect False Carrier Detect Carrier Detect (CDHolding = True) MSComm CommEvent comEventCDTOCarrier Detect OnComm Carrier Detect Receive Line Signal Detect (RLSD) Boolean

DSRHolding Data Set Ready (DSR) Data Set Ready object.DSRHoldingobject DSRHolding True Data Set Ready False Data Set Ready Data Set Ready (DSRHolding = True) MSComm CommEvent comEventDSRTO OnComm Data Terminal Equipment (DTE) Data Set Ready/Data Terminal Ready Boolean

Setting

: object.Settings[ = value] value MSComm 380Value "BBBB,P,D,S"BBBB P D S value "9600,N,8,1"

InputLen Input

object.InputLen [ = value]InputLen value Input InputLen 0 InputLen 0 Input MSComm

InputLen Input ("") Input InBufferCount

EofEnable MSComm (EOF) EOF OnComm CommEvent comEvEOFobject.EOFEnable [ = value ]EOFEnable value EOF OnComm value True EOF OnComm False EOF OnComm EOFEnable FalseOnComm EOF

MS Comm

MSComm

380 comInvalidPropertyValue383 comSetNotSupported394 comGetNotSupported8000 comPortOpen8001 08002 comPortInvalid8003 8004 8005 comPortAlreadyOpen8006 8007 8008 8009 8010 8011 8012 comNoOpen8013 8014 comm 8015 comm comSetCommStateFailed8016 comm 8018 comPortNotOpen8019 8020 comm comReadError8021 comDCBError

3.

[delphi]view plaincopy

1. procedureTFMonitorCenter.SBtnOpenPortClick(Sender:TObject);

2. var

3. i,CommPort:integer;

4. Speed,DataBit,StopBit,CheckBit,SetString:string;

5. begin

6. CommPort:=1;

7. Speed:='115200';

8. DataBit:='8';

9. CheckBit[1]:='N';

10. StopBit:='1';

11. ifMSComm1.PortOpen=Falsethen

12. begin

13. MSComm1.CommPort:=CommPort;//

14. SetString:=Speed+','+CheckBit[1]+','+DataBit+','+StopBit;

15. MSComm1.Settings:=SetString;//,,,

16. MSComm1.InBufferSize:=1024;//

17. MSComm1.OutBufferSize:=1024;//

18. MSComm1.InBufferCount:=0;//

19. MSComm1.OutBufferCount:=0;//

20. ////////MSComm1.InputMode:=comInputModeText;//

21. MSComm1.InputMode:=comInputModeBinary;//

22. MSComm1.InputLen:=0;///////////////////////

23. MSComm1.SThreshold:=0;//,OnComm

24. MSComm1.RThreshold:=1;////////////1OnComm

25. MSComm1.PortOpen:=True;//

26. end;

27. end;

OnComm

[delphi]view plaincopy

1. procedureTFMonitorCenter.MSComm1Comm(Sender:TObject);

2. var

3. str:string;

4. RcvByte:arrayofByte;//RcvByte

5. i,len,NumOfFlag:integer;//NumOfFlagOnComm'~'

6. OldCRCResult,NewCRCResult:WORD;

7. CRCByte:array[0..255]ofByte;

8. begin

9. if(MSComm1.CommEvent=comEvReceive)then//

10. begin//Rthreshold

11. if(MSComm1.InBufferCount0)then//

12. begin

13. len:=MSComm1.InBufferCount;//

14. SetLength(RcvByte,len);//

15. RcvByte:=MSComm1.Input;

16.

17. ......

18.

19. end;

20.

21. end;

22. //*****************************************************//

23. if(MSComm1.CommEvent=comEvSend)then//

24. begin

25. ......

26. end;

27.

28.

29.

30. end;