Q&A

  • [질문] CRC 코드 변경작업중에....
CRC16 변경에 대해서 문의드립니다.
C코드를 델파이로 변경했는데 제대로 안되는것 같아서요.
고수님들의 고견한 견해 부탁드립니다.

기존 C 코드 입니다.
#define CRC_POLYNOM_COMMON 0x8408
#define CRC_PRESET_COMMON 0xFFFF

U32 Crc16Full_Common(U8 *data, int count, int Flag_Send)
{
  U32 crcValue = CRC_PRESET_COMMON;
  int i,j;

  for(i=0;i<count;i++){
    crcValue ^=(unsigned int)data[i];
    for(j=0;j<8;j++)
      crcValue=(crcValue & 0x0001) ? (crcValue>>1)^CRC_POLYNOM_COMMON:(crcValue>>1);
  }
  
  if (Flag_Send){
    data[i] = crcValue&0xFF;
    data[i+1] = crcValue>>8;
    return crcValue;
  }
  else {
    if (crcValue ==0) return 0;
    else return 1;
  }
}


위에 C코드를 변경한것인데 맞게 변경한 것인지 모르겠습니다.
작동해 보니 제대로 안되는것도 같고...
틀린부분이 있는지요...부탁드립니다..

function TForm1.make_crc16(msg: PChar; iLength, flag: Integer): Word;
var
  crc, Tembyte : Word;
  i, j : Integer;
begin
  crc := $ffff;

  for i:= 0 to iLength -1 do
  begin
    crc := (crc xor Word(msg[i]));
    for j:= 0 to 7 do
    begin
      if (crc and $0001) > 0 then
        crc := (crc shr 1) xor $8408 // POLYNOM
      else
        crc := (crc shr 1);
    end;
  end;

  if flag = 1 then
  begin
    Buffer2[i] := crc and $ff;
    Buffer2[i+1] := crc shr 8;
    Result := crc;
  end
  else
  begin
    if crc = 0 then
      Result := 0
    else
      Result := 1;
  end;
end;

procedure TForm1.Timer2Timer(Sender: TObject);
var
  SendStr : String;
begin
    SendStr := '6' + Char($FF) + Char($A0) + Char($E2);
    make_crc16(PChar(SendStr), 4, 1);

//    ComPort2.Write(Buffer2,Length(Buffer2));
end;
0  COMMENTS
    • 김상진
    • 2008.06.04 21:57
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2008.06.04 22:59
      MySQL_Front 의 버전이 설치하신 MySQL 서버와 호환이 안되는 경우 같습니다.
    • 석주현
      2008.06.04 23:33
      위의 문제점을 해결하기 위해서는 <!--CodeS--> 1. 모든 Client 프로그램을 4.1이상으로 업그...
    • 이정욱
      2008.06.04 21:19
      코드싸인은 델파이나, C++ 이나 VB나... 기타 등등의 EXE나 DLL을 뱉어내는 개발툴에서 모두 같습니다. ...
    • 이정욱
      2008.06.04 10:02
      흠.. 저는 되었던 것 같습니다. 저도 ExpressBarSuite를 사용했는데, 저번에 진행했던 프로젝트가 MDI...
    • 루단스
      2008.06.04 18:03
      ㅎㅎ 감사합니다. 되는군요. 역시 제가 잘 못 사용했네요. 웰케 바보스러운쥐...ㅜ.ㅜ DockSite의 Au...
    • 이정욱
      2008.06.04 23:03
      델파이 2007 기준입니다. Component 메뉴에서, Import Library -> Import ActiveX Control -> 그리고....
    • 홍성락
    • 2008.06.04 02:42
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2008.06.04 23:04
      헉.. 답변 하셨었네요 ㅋ 가능하면 코멘트로 달아주세요 ^^; 발급되는 포인트는 같습니다 ^^
    • 홍성락
      2008.06.05 00:17
      예 알겠습니다. 코멘트가 보는거나 검색에 용이하지요. 첨부자료가 없으면 애용하겠습니다. *잠깐 붙임...
    • 석주현
      2008.06.04 00:21
      <!--CodeS--> cbbTest.Items.NameValueSeparator := ':'; cbbTest.Items.Values['00'] := '...
    • 공성환
      2008.06.04 02:53
      cbbTest.Items.NameValueSeparator 요넘이 델버젼 몇부터인가요? 작년까지 델3 올해 델4쓰고있어여 ㅠ...
    • 석주현
      2008.06.04 10:18
      아 그러시군요. 음 전 요즘 7.0을 쓰고 있습니다. 몇년 전까지 5.0을 썼었고요.. 아 하위 버젼에 ...
    • 공성환
      2008.06.04 19:42
      델4는 다덜 별루라고 하고... 델5는 쓸만하다고 하는데... 도대체 난 언제쯤 상위버젼 써불수 있을까... ...
    • phono
      2008.06.04 20:18
      또 다른 방법은 조금 고통스런 노가다 필요하지만.. for i:=0 to ComboBox1.ComboBox1.items.Cou...
    • 이정욱
      2008.06.02 22:14
      공장 자동화 쪽으로는 거의 델파이가 독보적(?) 이라고 할 수 있을 정도로 점유율이 높습니다. 제 생...
    • 이성훈
      2008.06.02 22:32
      음...일단 회사에서 쓰는 주력언어을 먼저 배우시는게 좋지 않을까요? 어차피 회사에서도 재활용이 용...
    • phono
      2008.06.04 01:59
      공장자동화 FA 라면 당근 델파이 강추 합니다. 델파이는 초기 버전때 부터 한솔제지등 굵직굵직한 프로...
    • 공호준
      2008.06.04 18:23
      동감합니다. 속도면에 VB보다 좋더군요(아주). http://fadelphikorea.com/ 사이트을 활용하시면 될것 같...
    • 화이팅
    • 2008.06.02 19:40
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2008.06.02 22:05
      ModalResult에 값이 설정되면 모달창은 닫히게 됩니다. 이게 모달의 특성이죠... bbt_Login버튼에 Modal...
    • 이정욱
      2008.06.02 22:08
      몇가지 방법이 있습니다. 일단 암호가 틀렸을 경우 로그인 폼의 ModalResult 를 안주면 괜찬습니다. ...
    • 이정욱
      2008.06.02 22:09
      헛... 최용일님께서 동일한 답변을 같은시간에 ㅋ ㅎㅎ 그래도 지우지 않으렵니다 ㅋㅋ
    • 화이팅
      2008.06.03 04:15
      감사합니다~ 이해하기 쉽게.. ^^ 많은 도움 되었습니다
    • 공성환
      2008.06.02 18:20
      SELECT* FROM PROF_LEVEL ORDER BY LEVNAME 요기에서 SELECT* 요넘이 붙어있는것 같은데요... 이거 아...
    • 화이팅
      2008.06.02 19:51
      SELECT * 을 띄웠는데도 문제가 생기네요.. SQL 쿼리에 값이 없다고 합니다.. 첨부파일 올릴테니 아시...
    • 공성환
      2008.06.02 20:22
      db커넥션 하는곳에서 잘못된거 아닌가요? 디자인모드에서 쿼리콤포넌트에 위에 쿼리 넣어주시고 active ...
    • 화이팅
      2008.06.02 20:40
      아... 고쳐졌습니다~ 순서가 바뀌니 에러나 뜨네요.. ZZOM2님 너무 감사합니다^^
    • 권용민
    • 2008.06.01 21:48
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 석주현
      2008.06.02 16:21
      음 마우스로 그린다는 게 특정 Satate 에서 마우스 왼쪽 버튼 클릭 메시지 처리와 마우스 무브 메시지 처...
    • 신철우
    • 2008.06.01 01:54
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2008.06.01 06:33
      초기화를 해서 할수도 있지만 이런 방법도 있습니다. type DirectoryType = (_WINDOWS, _TEMP, _...
    • 박세철
    • 2008.05.31 19:24
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 신민철
    • 2008.05.31 10:18
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 공성환
      2008.05.31 18:46
      쿼리를 작성시 ORDER BY 해서 추출해서 추가시키면 되는거 아닌가요? 쿼리가 여러개라면 우선 추출된...
    • 구창민
      2008.05.30 21:30
      안녕하세요.. DB에서 값을 가져올때 총건수를 확인해 보세요... 그후, 그리드의 RowCount 를 총건수에 ...
    • 홍성락
      2008.05.30 21:59
      위의 소스를 보면 데이타배열(lv_ID,lv_NM)은 i가 0에서 시작되고 Cells은 i는 1에서 시작되네요. for문...
    • 천천히
    • 2008.05.30 22:05
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 화이팅
    • 2008.05.30 03:51
    • 5 COMMENTS
    • /
    • 0 LIKES
    • dbwrite
      2008.05.30 05:28
      combobox item인가 거기에다 값넣으시고(문자) list 콤포넌트 써서 (코드) 입력후 combo선택시 index가져...
    • 이정욱
      2008.05.30 08:08
      items.values 에 넣지 마시고... items.clear; 하신후, items.add 하세요. 또는 그냥 items.text 에다...
    • 공성환
      2008.05.30 19:34
      아래코드 참조하시면 도움될까요? <!--CodeS--> unit Unit1; interface uses Windows, ...
    • 공성환
      2008.05.30 19:38
      콤보박스가 디비룩업콤보처럼 코드,명을 같이 쓸수가 없을거예요... 저도 콤보3처럼 사용많이 했어여.....
    • 화이팅
      2008.05.31 03:00
      아.. 다들 정말 감사합니다. 이제 조금씩 이해 되는거 같아요... 정말 답답했는데.. 너무 감사합니다^^
    • 양선호
    • 2008.05.30 02:31
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2008.05.30 20:43
      New -> Packages 로 패키지를 하나 만듭니다. 그리고 그 패키지 파일에 컴포넌트 파일을 추가 합니다....
    • 이정욱
      2008.05.30 23:15
      컴파일 속도는.. 빠를텐데요.. 2006 이라고 해서 컴파일속도가 느려지진 않았습니다. 컴파일 옵션중에...
    • 이은주
      2008.09.01 18:35
      저도 2007 을 사용하고 있는데 에전에 7 쓸때와 비교하면 거의 5 배 이상 늦군요. warning 을 제거하면 ...
    • 홍성락
      2008.05.30 02:30
      모두 지우는건 Image2.Canvas.FillRect(Image2.Canvas.ClipRect); 이렇게 하시되 Image2.Canvas.Brush의 ...
    • 임정미
      2008.05.31 10:01
      감사합니다. image1,image2의 Stretch 속성을 모두 false로 바꾸고 했더니 말씀대로 좌표는 같게 나...
    • 홍성락
      2008.06.01 06:50
      아~예. 해결되었다니 다행입니다, 마지막 말한게 혼돈되시나보네요. 뭐든 방법은 여러가지로 해결할 수 ...