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