Q&A

  • async pro사용해보신분 좀 도와주세요..
procedure TfrmMdiForm.asPortTriggerAvail(CP: TObject; Count: Word);
var
btDatas : array of byte;
begin
SetLength(btDatas,Count);
asPort.GetBlock(btDatas, Count);
end;

데이타가 256byte(Count=256이 되겠죠)가 넘어왔다고 했을때..
256바이트를 통째로 읽을려면 위에처럼하면 되는거 아닌가요?
자꾸 데이타가 이상하게 넘어오면서 에러가떨어지네요..
꼭..GetChar을 사용해서 256번 루프를 돌려야 하는건지..

쉽게말해 블록(배열)단위로 데이타를 보내구 데이타를 받는 부분을
asyncpro를 사용할때 어떻게 하는지 좀 갈켜주세요.
자꾸 에러나서 미치겠네요..
도와주세요..  

3  COMMENTS
  • Profile
    이중철 2004.04.09 20:15
    동적배열의 문제 같거든요
    GetBlock의 파라메터가 어떤식인지 몰라서 제가 정확히 답변을 못드리지만

    var BtDatas : array[0..1024] of byte;
    begin
      asPort.GetBlock(btDatas, Count);
    end;

    이런식으로 바꾸어 보세요 아니면
    var btDatas : array of byte;
    begin
      SetLength(btDatas,Count);
      asPort.GetBlock(@btDatas[0], Count);
      // GetBlock의 파라메터를 몰라서.. 또는
      asPort.GetBlock(btDatas[0], Count);

    end;

  • Profile
    김만수 2004.04.09 20:30
    도움말에 나와있는 GetBlock의 함수설명입니다.
    지금 보니깐 Char배열이네요..쩝.. 근데 Char로 해도 안되네요..ㅋㅋ

    procedure GetBlock(var Block; Len : Word);

    Returns a block of received characters and removes them from the dispatcher buffer.

    This routine makes a request to return the next Len received bytes. The data is moved into the buffer referenced by Block. If Block is not large enough to hold Len bytes this will result in a memory overwrite. If fewer than Len bytes are available, none are returned and an EBufferIsEmpty exception is generated. The returned bytes are removed from the Async Professional dispatcher buffer.
    To determine if line errors occurred while the communications driver was receiving this data, check the LineError property after calling GetBlock.

    The following example calls GetBlock to remove the next 128 bytes from the dispatcher buffer, and handles the various possible outcomes:


    var
      Block : array[0..127] of Char;
    ...
    try
      ApdComPort.GetBlock(Block, 128);
    except
      on E : EAPDException do
        if E is EBufferIsEmpty then begin
          ...protocol error, 128 bytes expected
          raise;
        end;

    end;

    See also: CharReady, GetChar, InBuffUsed
  • Profile
    이중철 2004.04.09 20:44
    var btDatas : array of byte;
    begin
      SetLength(btDatas,Count);
      asPort.GetBlock(btDatas[0], Count);
    end;
    이런식으로 해보세요
    될거에요
    ^^

    • 최민호
    • 2004.04.11 21:07
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 박수영
      2004.04.12 18:20
         table1.Insert;    dbgrid1.Columns[0].Field.AsString := '1111'; 이런...
    • 이중철
      2004.04.11 20:03
      Procedure TForm1.BtnBtn1Click(Sender : TObject); var   A : array[0..100] of char; &nbs...
    • 김만수
    • 2004.04.11 03:25
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 이정표
      2004.04.11 20:30
      읽다보니 아래 STX, ETX에관한 내용이 있어 추가 답변 드립니다. 제가 사용하는 예입니다. DEL STX ....
    • 이정표
      2004.04.11 20:04
      저두 장비쪽하고 통신을 하는데  저녁변수를 설정해서 쓰고있고여.. 통신 속도에 따라서 읽혀...
    • 최여옥
      2004.04.11 09:35
      도움이 될런지는 모르겠지만 전역변수를 써서 btDatas에 계속저장을 시킨후 원하는 바이트가 되면 사용하...
    • 김만수
      2004.04.11 17:11
      감사^^ 님말씀이 맞는것 같아요.. AsnycPro도움말을 자세히 읽어봤는데.. tcp/ip같은 경우에는 8바이트...
    • bbizim
    • 2004.04.10 19:36
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 너구리
      2004.04.11 04:32
      없습니다. 그런상황 때문에 트리거가 필요한것이겠죠.. 아니면 트랜잭션을 걸고 작업을 하셔야 합니...
    • 이중철
      2004.04.11 20:25
      RDB는 관계형 데이타베이스 라고 하죠 각 테이블의 관계를 정하고 그 원칙에 의해 관리합니다. 외부키를 ...
    • Galaxy
      2004.04.11 18:36
    • 최인권
    • 2004.04.10 18:50
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 하얀까마귀
      2004.04.11 09:38
      안녕하세요 하얀까마귀 입니다. 이미지를 가로또는 세로로 회전시키는 콤포넌트가 있는지는 모르겠습니...
    • 김길현
      2004.04.10 21:39
      제가 클래스를 잘못 넣었네요.  TEdit 를 상속받으려 했는데. 그것이 문제가 아니였고, TE...
    • 김진태
    • 2004.04.10 05:54
    • 1 COMMENTS
    • /
    • 0 LIKES
    • [勳]후니
      2004.04.10 06:12
      델파이에선 지원 안하는 걸로 알고 있습니다. PDA os용 sdk 가 C, C++ 용으로 되어 있으며 이걸 델파...
    • 사나이
    • 2004.04.10 03:44
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 고진중
    • 2004.04.10 02:45
    • 4 COMMENTS
    • /
    • 0 LIKES
    • [勳]후니
      2004.04.10 03:07
      어떤 오류 메시지가 발생하는지요? 메모리 문제가 대부분일껀데... 2501이던가... 어떤 오류 메시지...
    • 고진중
      2004.04.10 04:07
      답변 보구 바로 확인해봤는데.. 메모리 문제가 맞는것 같습니다.. 엑셀파일 두개 띠어놓고 프로그램 ...
    • [勳]후니
      2004.04.10 05:57
      저도 전에 그 에러때문에.. 해결책을 찾아봤지만... 메모리에 BDE를 올릴수 있는 용량 초과나, 충돌로 ...
    • 고진중
      2004.04.12 18:13
      이곳저곳 다 돌아다닌 결과 해결했읍니다.. 레지스트리에서 BDE Administrator에서 [Configuration] 탭...
    • 미소^^
    • 2004.04.10 02:13
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김진용
      2004.04.10 20:27
    • 너구리
      2004.04.10 02:41
      급조해서 이게 맞게 짠건지 모르겠습니다. 한가지 의심 되는건 array[0..255] of TMyPanel 이부분...
    • 김현수
      2004.04.10 01:49
      원하는 답변이 될지는 모르겠습니다만.. unit u_form1; interface uses   Windo...
    • 엄문용
      2004.04.10 18:52
      열심히 해보겠습니다... ^^;
    • 김지훈
    • 2004.04.10 01:18
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 초보임당
      2004.04.10 01:30
      오라클 쓰시면 ROWNUM 쓰시면 될것 같은데요 select rownum as num,a, b, c from 테이블 ;
    • nilriri™
      2004.04.10 05:10
      샬롬~ vidle라는 컴포넌튼데.. 님께서 원하시는 그런 용도로 사용하기위해서 제가 약간 변경해서 사...
    • 박수영
      2004.04.10 01:45
      Mouse, Key Event 와 Timer를 연결해서 하면 될것 같은디요....
    • [勳]후니
      2004.04.10 03:19
      좀더 자세하게 설명하면.. mouse move, down 이벤트와 key down 이벤트에 time 설정을 해줍니다. ...
    • 초보임당
      2004.04.10 01:41
      음..이러면 되지 않을까요.. select rownum as num,mcode,dcode,1 as gubun from 테이블 A union all ...
    • 김지훈
      2004.04.10 19:00
      음...쿼리문이 이해가 잘 안가는군여..님....설명점.. 쿼리을 세번 써야되는건가여 ....?? 하나에 쿼리...
    • 김만수
    • 2004.04.09 20:00
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 이중철
      2004.04.09 20:15
      동적배열의 문제 같거든요 GetBlock의 파라메터가 어떤식인지 몰라서 제가 정확히 답변을 못드리지만 v...
    • 김만수
      2004.04.09 20:30
      도움말에 나와있는 GetBlock의 함수설명입니다. 지금 보니깐 Char배열이네요..쩝.. 근데 Char로 해도 안되...
    • 이중철
      2004.04.09 20:44
      var btDatas : array of byte; begin   SetLength(btDatas,Count);   asPort.GetBl...
    • 김정은
    • 2004.04.09 19:27
    • 2 COMMENTS
    • /
    • 0 LIKES
    • ^ㅡ^
      2004.04.10 05:53
      답변이 될지 모르겠네요 전 꽁수로 이렇게 해도 될꺼같은데요 temp1 := copy(edit1.text + '&n...
    • 이중철
      2004.04.09 20:58
      위의 방법은 권장사항이 아니네요 ^^(그것도 엄청나게) temp1 을 SetLength 해서 바꾸면 temp1 := 'ABCD...
    • 정효원
    • 2004.04.09 19:05
    • 0 COMMENTS
    • /
    • 0 LIKES