RS-232에서 다음의 데이터를 수신하려는데 어떻하면 되는지 모르겠군요
부탁합니다....
나오는 데이터 형식은 11Byte이고요
STX - 0x02 1Byte
LEN - 0x06 1Byte
DATA - 2Byte(시)+ 2Byte(분)+2Byte(초)
MSB -> LSB순으로 ASCII 코드로 변환
CRC - CRC16 2Byte
MSB->LSB순으로
EXT - 0x03 1Byte
나오는 샘플데이터 형식은
현재시각이 12시34분30초일때
0x02|0x06|0x31|0x32|0x33|0x34|0x33|0x30|crc hi|crc lo|0x03|
이렇거든요.....
Memo에 시간이 수신되어 표시하고 싶은데 부탁드립니다................
procedure TMainForm.CommPortDriverReceiveData(Sender: TObject;
DataPtr: Pointer; DataSize: Integer);
var p: pchar;
s: string;
begin
// Get current line
if RxMemo.Lines.Count <> 0 then
s := RxMemo.Lines[RxMemo.Lines.Count-1]
else
s := '';
// Parse incoming text
p := DataPtr;
while DataSize > 0 do
begin
case p^ of
#10:; // LF
#13: // CR - cursor to next line
begin
if RxMemo.Lines.Count <> 0 then
RxMemo.Lines[RxMemo.Lines.Count-1] := s
else
RxMemo.Lines.Add( s );
RxMemo.Lines.Add( '' );
s := '';
end;
#8: // Backspace - delete last char
delete( s, length(s), 1 );
else // Any other char - add it to the current line
s := s + p^;
end;
dec( DataSize );
inc( p );
end;
// If current line isn't empty
if (s<>'') then
if RxMemo.Lines.Count <> 0 then
// Update current line
RxMemo.Lines[RxMemo.Lines.Count-1] := s
else
// New line - add it
RxMemo.Lines.Add( s );
RxMemo.Update;
end;