📄 cwp53.htm
字号:
<!-- saved from url=(0007)http:// -->
<HTML><HEAD><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><TITLE>WJ.MPR.Reader.MPRFrame</TITLE><LINK REL=STYLESHEET HREF="../CommentReport.css" TYPE="text/css"></HEAD><BODY topmargin=0 rightmargin=0 leftmargin=0 style="background-image: url(../titletile.jpg); background-repeat:repeat-x; background-position: 0 0;" ><DIV CLASS="PageHeading">WJ.MPR.Reader.MPRFrame Class</DIV><DIV CLASS="Description">
The basic unit of communications between the host and the MPR.
Request Frames are sent from Host to MPR, and Response Frames are received by the Host from the MPR.
Both Types of frames have a similar format:
[SOF][Payload]
[SOF] = 0x01
For Request Frames:
[Payload] = [NodeAddress][Length][Command][Data][CRC]
For Response Frames:
[Payload] = [NodeAddress][Length][Status][Data][CRC]
<P></DIV><IMG src="../GradLeft.jpg" width=7 height=378 alt="" border="0" style="position:absolute; left:10; top:18;z-Index:2"><IMG src="../GradTop.jpg" width=352 height=7 alt="" border="0" align="top" style="position:absolute; left:10; top:18; z-index:1"><DIV CLASS="Remarks"><SPAN CLASS="RemarkHdrX">Access: </SPAN>Public</DIV><DIV CLASS="Remarks"><SPAN CLASS="RemarkHdrX">Base Classes: </SPAN>Object</DIV><TABLE CLASS="InfoTable" cellpadding=0 cellspacing=0><TR height=20><TD width=20> </TD><TD valign=top align=left width=9 bgcolor="#cccc66"><IMG SRC="../graycorner.jpg" align=top></TD><TD CLASS="TableLightLabel" WIDTH=206>Members</TD><TD CLASS="TableLightLabel" >Description</TD><TD width=20> </TD></TR><TR height=20><TD width=20> </TD><TD CLASS="TableLightDesc"> </TD><TD CLASS="TableLightDesc"><A HREF="CWP77.HTM" TARGET="CNTFRAME">FrameBytes</A></TD><TD CLASS="TableLightDesc"> </TD><TD width=20> </TD></TR><TR height=20><TD width=20> </TD><TD CLASS="TableLightDesc"> </TD><TD CLASS="TableLightDesc"><A HREF="CWP78.HTM" TARGET="CNTFRAME">Payload</A></TD><TD CLASS="TableLightDesc"> </TD><TD width=20> </TD></TR><TR height=20><TD width=20> </TD><TD CLASS="TableLightDesc"> </TD><TD CLASS="TableLightDesc"><A HREF="CWP80.HTM" TARGET="CNTFRAME">dataBytes</A></TD><TD CLASS="TableLightDesc"> </TD><TD width=20> </TD></TR><TR height=20><TD width=20> </TD><TD CLASS="TableLightDesc"> </TD><TD CLASS="TableLightDesc"><A HREF="CWP81.HTM" TARGET="CNTFRAME">ToHexString</A></TD><TD CLASS="TableLightDesc">
Converts the Frame to a string of Hexadecimal digits
<P></TD><TD width=20> </TD></TR><TR height=20><TD width=20> </TD><TD CLASS="TableLightDesc"> </TD><TD CLASS="TableLightDesc"><A HREF="CWP82.HTM" TARGET="CNTFRAME">ToArray</A></TD><TD CLASS="TableLightDesc">
Converts the Frame to an array of bytes
<P></TD><TD width=20> </TD></TR><TR height=20><TD width=20> </TD><TD CLASS="TableLightDesc"> </TD><TD CLASS="TableLightDesc"><A HREF="CWP83.HTM" TARGET="CNTFRAME">Data</A></TD><TD CLASS="TableLightDesc">
Data Field, Frame[4] to Frame[Length-2]
<P></TD><TD width=20> </TD></TR><TR height=20><TD width=20> </TD><TD CLASS="TableLightDesc"> </TD><TD CLASS="TableLightDesc"><A HREF="CWP85.HTM" TARGET="CNTFRAME">NodeAddress</A></TD><TD CLASS="TableLightDesc">
Node Address Field, Frame[1]
Should always be 0
<P></TD><TD width=20> </TD></TR><TR height=20><TD width=20> </TD><TD CLASS="TableLightDesc"> </TD><TD CLASS="TableLightDesc"><A HREF="CWP87.HTM" TARGET="CNTFRAME">Length</A></TD><TD CLASS="TableLightDesc">
Length Field, Frame[2].
Length of all bytes in Frame except SOF
<P></TD><TD width=20> </TD></TR><TR height=20><TD width=20> </TD><TD CLASS="TableLightDesc"> </TD><TD CLASS="TableLightDesc"><A HREF="CWP89.HTM" TARGET="CNTFRAME">Command</A></TD><TD CLASS="TableLightDesc">
(Request Frames Only) Command Field, Frame[3] - see CmdCode Enumeration
<P></TD><TD width=20> </TD></TR><TR height=20><TD width=20> </TD><TD CLASS="TableLightDesc"> </TD><TD CLASS="TableLightDesc"><A HREF="CWP91.HTM" TARGET="CNTFRAME">Status</A></TD><TD CLASS="TableLightDesc">
(Response Frames Only) Status Field, Frame[3] - see StatusCode Enumeration
<P></TD><TD width=20> </TD></TR><TR height=20><TD width=20> </TD><TD CLASS="TableLightDesc"> </TD><TD CLASS="TableLightDesc"><A HREF="CWP94.HTM" TARGET="CNTFRAME">crc</A></TD><TD CLASS="TableLightDesc">
crc Field, Frame[Length-2] and Frame[Length-1]
<P></TD><TD width=20> </TD></TR><TR height=20><TD width=20> </TD><TD CLASS="TableLightDesc"> </TD><TD CLASS="TableLightDesc"><A HREF="CWP96.HTM" TARGET="CNTFRAME">inFrame</A></TD><TD CLASS="TableLightDesc">
Bytes are ignored (inFrame = false) until a SOF byte received
then bytes are stored (inFrame = true)
<P></TD><TD width=20> </TD></TR><TR height=20><TD width=20> </TD><TD CLASS="TableLightDesc"> </TD><TD CLASS="TableLightDesc"><A HREF="CWP97.HTM" TARGET="CNTFRAME">CompleteFrame</A></TD><TD CLASS="TableLightDesc">
bytes are added (CompleteFrame = false),
until a complete frame has been received (Count = Length + 1) and can be processed. (CompleteFrame = true)
<P></TD><TD width=20> </TD></TR><TR height=20><TD width=20> </TD><TD CLASS="TableLightDesc"> </TD><TD CLASS="TableLightDesc"><A HREF="CWP98.HTM" TARGET="CNTFRAME">Processed</A></TD><TD CLASS="TableLightDesc">
After a Complete Frame has been received it is processed.
After processing, Processed is set to true
<P></TD><TD width=20> </TD></TR><TR height=20><TD width=20> </TD><TD CLASS="TableLightDesc"> </TD><TD CLASS="TableLightDesc"><A HREF="CWP99.HTM" TARGET="CNTFRAME">Add</A></TD><TD CLASS="TableLightDesc">
Add a byte to the frame.
bytes are ignored until SOF = true.
when Count == Length + 1, A complete Frame has been received and is ready for processing
<P></TD><TD width=20> </TD></TR><TR height=20><TD width=20> </TD><TD CLASS="TableLightDesc"> </TD><TD CLASS="TableLightDesc"><A HREF="CWP100.HTM" TARGET="CNTFRAME">MPRFrame</A></TD><TD CLASS="TableLightDesc">
construct a new, empty, frame
<P></TD><TD width=20> </TD></TR><TR height=20><TD width=20> </TD><TD CLASS="TableLightDesc"> </TD><TD CLASS="TableLightDesc"><A HREF="CWP101.HTM" TARGET="CNTFRAME">MPRFrame</A></TD><TD CLASS="TableLightDesc">
Construct a new request frame with the given opcode (command) and parameters (parameters).
<P></TD><TD width=20> </TD></TR><TR height=20><TD width=20> </TD><TD CLASS="TableLightDesc"> </TD><TD CLASS="TableLightDesc"><A HREF="CWP102.HTM" TARGET="CNTFRAME">crctab</A></TD><TD CLASS="TableLightDesc">
The Frame crc calculation uses a table lookup to generate CCITT CRC values.
The CCITT polynomial is: x^16 + x^12 + x^5 + 1
Forward direction table - i.e. msbit first
<P></TD><TD width=20> </TD></TR><TR height=20><TD width=20> </TD><TD CLASS="TableLightDesc"> </TD><TD CLASS="TableLightDesc"><A HREF="CWP103.HTM" TARGET="CNTFRAME">crcSeed</A></TD><TD CLASS="TableLightDesc"> </TD><TD width=20> </TD></TR><TR height=20><TD width=20> </TD><TD CLASS="TableLightDesc"> </TD><TD CLASS="TableLightDesc"><A HREF="CWP104.HTM" TARGET="CNTFRAME">CalculateFrameCRC</A></TD><TD CLASS="TableLightDesc">
Compute the MPR crc for a byteList
<P></TD><TD width=20> </TD></TR><TR height=20><TD width=20> </TD><TD CLASS="TableLightDesc"> </TD><TD CLASS="TableLightDesc"><A HREF="CWP105.HTM" TARGET="CNTFRAME">CRCValid</A></TD><TD CLASS="TableLightDesc">
Whether or not the CRC of this Frame is valid: {crc == CalculateFrameCRC(Payload)}
<P></TD><TD width=20> </TD></TR><TR height=20><TD width=20> </TD><TD CLASS="TableLightDesc"> </TD><TD CLASS="TableLightDesc"><A HREF="CWP107.HTM" TARGET="CNTFRAME">DEF_NODE_ADDRESS</A></TD><TD CLASS="TableLightDesc"> </TD><TD width=20> </TD></TR><TR height=20><TD width=20> </TD><TD CLASS="TableLightDesc"> </TD><TD CLASS="TableLightDesc"><A HREF="CWP108.HTM" TARGET="CNTFRAME">SOF</A></TD><TD CLASS="TableLightDesc"> </TD><TD width=20> </TD></TR></TABLE></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -