大虾们,给看看吧!急呀! (100分)

  • 主题发起人 主题发起人 sansong089
  • 开始时间 开始时间
S

sansong089

Unregistered / Unconfirmed
GUEST, unregistred user!
我使用delphi和spcomm控件,做pc与单片机通讯,需要用到校验位,在校验位为0和1时分别有不同的含义。当pc向单片机发送时,0时表示数据,为1时表示地址。

问题1:我怎么使校验位为0或1呢

问题2:我需要能够用软件验证。比如:当发送数据,接收端接收时,接受端需要能验证
校验值是“1”还是“0”,但是能得到校验值吗?怎么得到?


我看了spcomm的说明说:
当parity为mark时,校验位为“1”;
当parity为space时,校验位为“0”;
但是不知道paritycheck怎么设置,paritycheck的含义到底是什么呀?我看了mscomm控件也有类似的属性。请用spcomm和mscomm的大下虾们给解释以下。

谢谢大家了!!!急呀,我都郁闷好长时间了。
 
第一个问题,我想你应该看一看你所要仔细看一下相关的协议。
第二个问题:parity就是奇偶校验位
 
to ripple:
大哥,加上QQ和你聊聊好吗!
 
spcomm你不用管它是怎么验证的,你只设置好就行了.

最主要是把你的通讯协议搞清楚.
 
你看一下spcomm的create过程就清楚了

constructor TComm.Create( AOwner: TComponent );
begin
inherited Create( AOwner );

ReadThread := nil;
WriteThread := nil;
hCommFile := 0;
hCloseEvent := 0;
FSendDataEmpty := True;

FCommName := 'COM2';
FBaudRate := 9600;
FParityCheck := False; //ParityCheck属性
FOutx_CtsFlow := False;
FOutx_DsrFlow := False;
FDtrControl := DtrEnable;
FDsrSensitivity := False;
FTxContinueOnXoff := True;
FOutx_XonXoffFlow := True;
FInx_XonXoffFlow := True;
FReplaceWhenParityError := False;
FIgnoreNullChar := False;
FRtsControl := RtsEnable;
FXonLimit := 500;
FXoffLimit := 500;
FByteSize := _8;
FParity := None;
FStopBits := _1;
FXonChar := chr($11); // Ctrl-Q
FXoffChar := chr($13); // Ctrl-S
FReplacedChar := chr(0);
FReadIntervalTimeout := 100;
FReadTotalTimeoutMultiplier := 0;
FReadTotalTimeoutConstant := 0;
FWriteTotalTimeoutMultiplier := 0;
FWriteTotalTimeoutConstant := 0;

if not (csDesigning in ComponentState) then
FHWnd := AllocateHWnd(CommWndProc)
end;
 

Similar threads

D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
872
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部