R
rogerxu
Unregistered / Unconfirmed
GUEST, unregistred user!
本人急于编写电子秤串口读取程序难点在于,如何分字节的得到每一个字节的内容电子秤的说明书上写明,一次发送6个帧,每个帧10位,第一位是起始位,最后一位是结束位,中间8位为数据我只需要第3,4,5帧的内容,这三帧的内容是BCD1,BCD2,BCD3这样的BCD1 显示电子秤的数值的最低字节BCD2 显示电子秤的数值的中间字节BCD3 显示电子秤的数值的最高字节我怎么才能做到获取每一帧的内容,然后把它展出到窗体上面我在MSCOMM的事件里的代码为procedure TMainForm.ShowChange;var ReceiveData : oleVariant; StrBuffer : string; BufferCount,I : Integer; DataBuffer : Variant; BByte : array of Byte;begin case MSComm.CommEvent of comEvReceive: begin StrBuffer := ''; BufferCount := MSComm.InBufferCount; if BufferCount>0 then begin ReceiveData := MSComm.Input; SetLength(BByte,4096); BByte := ReceiveData; for I := 0 to BufferCount - 1 do begin StrBuffer := StrBuffer + IntToStr(BByte); end; Memo1.Lines.Add(StrBuffer); end; end; 1001: begin MessageBox(Handle,'信号中断','串口通讯错误',MB_OK+MB_ICONERROR); end; 1002: begin MessageBox(Handle,'ClearToSend超时','串口错误',MB_OK+MB_ICONERROR); end; end; StPnlStatus.Caption := '正在接受串口数据......';窗体启动的时候就已经打开了串口,我的串口设置 MSComm.InputLen := 6; //因为要接收6帧 MSComm.InBufferSize := 512; Mscomm.DTREnable := True; // 数据终端准备好 Mscomm.RTSEnable := True; // 请求发送 MSComm.RThreshold := 6; // 接收的数据最少为6个 MSComm.SThreshold := 0; // 发送的数据最少为0个,因为不需要发送数据