자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다. 
  • 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)

본 게시판은 개발자들이 자유롭게 질문과 답변을 공유하는 게시판입니다.
* 따라서 최대한 정중하게 질문을 올려 주세요.
* 질문을 상세히 작성해 주실 수록 좋은 답변이 올라 옵니다.
* 바쁜 와중에도 답변을 주시는 분들께 감사 댓글 필수
-----------------------------------------------------------------------------------------------

 

델파이코드 송신

procedure TfrmSense.SendData(Cmd: Integer; Temp: Integer);

 Var TR : Array[0..6] of Byte ;

 strAnsiName : AnsiString;

 strName : String;

begin

    TR[0] := 1;                                                               // T_Pk[0] : SOH

    TR[1] := StrToInt(EditID.Text);                                        // T_Pk[1] : 레벨 번호

    TR[2] := Cmd;                                                           // T_Pk[2] : 오일, 물, 온도

    TR[3] := Temp;                                                          // T_Pk[3] : 온도 Flag

    TR[4] := 0;                                                               // T_Pk[4]

    TR[5] := 4;                                                               // T_Pk[5] : EOT

    TR[6] := TR[1] xor TR[2] xor TR[3] xor TR[4] xor TR[5];

    ComPort1.Write(TR, 7);

end;

 
델파이 수신
procedure TfrmSense.ComPort1RxChar(Sender: TObject; Count: Integer);
var
    TempData : String;
    ChkSum : Variant;
begin
    Timer2.Enabled := False;
 
    if ComPort1.InputCount = 7 then
    begin
        ComPort1.Read(R_PK, 7);
        ComPort1.ClearBuffer(True, False);                                      // Input 버퍼 clear - True
        TempData := FormatFloat('00',Byte(R_PK[0])) +
                    FormatFloat('00',Byte(R_PK[1])) +
                    FormatFloat('00',Byte(R_PK[2])) +
                    FormatFloat('00',Byte(R_PK[3])) +
                    FormatFloat('00',Byte(R_PK[4])) +
                    FormatFloat('00',Byte(R_PK[5])) +
                    FormatFloat('00',Byte(R_PK[6]));
        ChkSum := (Byte(R_PK[4]) * 256) + Byte(R_PK[3]);
 
      end;
    Timer1.Enabled := True;
end;
델파이 에서는 정상으로 송수신이 정상 입니다.
 
 
function ToByteArray(JavaArray: TJavaArray<Byte>): TArray<Byte>;
begin
  SetLength(Result, JavaArray.Length);
  Move(JavaArray.Data^, Result[0], Length(Result));
end;
 
function ToJavaByteArray(ByteArray: TArray<Byte>): TJavaArray<Byte>;
begin
  Result := TJavaArray<Byte>.Create(Length(ByteArray));
  Move(ByteArray[0], Result.Data^, Length(ByteArray));
end;
 
 
안드로이드 송신부
procedure TFormMain.ButtonWriteClick(Sender: TObject);
var
  WD: TJavaArray<Byte>;
  WriteLength: Integer;
  T_Pk :TArray<byte>;
begin
    Memo.Lines.Clear;
 (*
   SetLength(T_Pk , 7);
    T_Pk[0] := 1;                                                               // T_Pk[0] : SOH
    T_Pk[1] := 1 ; //StrToInt(EditID.Text);                                           // T_Pk[1] : 레벨 번호
    T_Pk[2] := 0;                                                             // T_Pk[2] : 오일, 물, 온도
    T_Pk[3] := 0;                                                            // T_Pk[3] : 온도 Flag
    T_Pk[4] := 0;                                                               // T_Pk[4]
    T_Pk[5] := 4;                                                               // T_Pk[5] : EOT
    T_Pk[6] := T_Pk[1] xor T_Pk[2] xor T_Pk[3] xor T_Pk[4] xor T_Pk[5];
*)
    WD := TJavaArray<Byte>.Create(7);
    WD.Items[0] :=  1;
    WD.Items[1] :=  1;
    WD.Items[2] :=  0;
    WD.Items[3] :=  0;
    WD.Items[4] :=  0;
    WD.Items[5] :=  4;
    WD.Items[6] :=  WD.Items[1] XOR WD.Items[2] XOR WD.Items[3] XOR WD.Items[4] XOR WD.Items[5] ;
 
 // WriteData := ToJavaByteArray(TEncoding.UTF8.GetBytes('110004') );
 
  WriteLength := Device.write(WD); //ToJavaByteArray(T_Pk)
  Memo.Lines.Add('Write ' + IntToStr(WD.Items[0])+IntToStr(WD.Items[1])
                          + IntToStr(WD.Items[2])+IntToStr(WD.Items[3])
                          + IntToStr(WD.Items[4])+IntToStr(WD.Items[5])
                          + IntToStr(WD.Items[6])+' '+IntToStr(WriteLength));
 
  Memo.Lines.Add('Write ' + IntToStr(T_Pk[0])+IntToStr(T_Pk[1])
                          + IntToStr(T_Pk[2])+IntToStr(T_Pk[3])
                          + IntToStr(T_Pk[4])+IntToStr(T_Pk[5])
                          + IntToStr(T_Pk[6])+' '+IntToStr(WriteLength));
 
  WD.DisposeOf;
  Sleep(500);
  ButtonReadClick(Sender);
//  Memo.Lines.Add('Write length: ' + IntToStr(WriteLength) );
end;  
 
//안드로이드  수신부
procedure TFormMain.ButtonReadClick(Sender: TObject);
var
  ReadData: TJavaArray<Byte>;
  ReadLength,
  ReadAvailable: Integer;
  ResByte:TArray<byte>;
 
begin
  ReadAvailable := Device.getQueueStatus;
  Memo.Lines.Add('Read available: ' + IntToStr(ReadAvailable));
  if ReadAvailable > 0 then
  begin
    SetLength( ResByte ,7);
    ReadData := TJavaArray<Byte>.Create(ReadAvailable);
    ReadLength := Device.read(ReadData);
 
    ResByte := ToByteArray(ReadData);
    Memo.Lines.Add('Read length: ' + IntToStr(ReadLength));
//    Memo.Lines.Add('Read data: ' + TEncoding.UTF8.GetString(ToByteArray(ReadData)));
 
    Memo.Lines.Add('Read data: ' +IntToStr(ResByte[0])+IntToStr(ResByte[1])
                          + IntToStr(ResByte[2])+IntToStr(ResByte[3])
                          + IntToStr(ResByte[4])+IntToStr(ResByte[5])
                          + IntToStr(ResByte[6]));
 
 
  end;
end;
 
적용을 어떻게 해야 되는 지 잘 모르겠습니다. 부탁 드립니다.
번호 제목 글쓴이 날짜 조회 수
공지 [프로그래밍 강의] 2021.6~2021.12 관리자 2015.01.22 17210
공지 유용한 관련 사이트 관리자2 2014.03.20 56086
공지 본 게시판은 개발자 여러분들의 질문과 답변을 공유하는 공간입니다. 관리자 2012.01.10 99525
1959 [10.4 시드니 신기능] 세미나의 데모에서 사용한 샘플 소스코드를 얻을 수 있을까요? file 험프리 2020.06.10 291
1958 delphi 10에서 사물인터넷관련 개발 [1] 영감땡감 2016.01.07 291
1957 개발툴 업그레이드 XE2 를 XE7 이나 XE8로 [1] 가나다 2021.07.20 291
1956 베를린10.1 upgrade 후 Usb 연결후 .설치안되고(안드로이드) 다운받아서하면 됩니다.. [4] file 모나도 2016.08.17 292
1955 TListView Virtual 모드(?)에 대한 질문입니다. [2] file XeroNicHS 2016.11.22 292
1954 MDI Application 에서 TeeChart 를 자식폼에 넣으면 에러 발생하는 문제??? [6] sihwan 2018.03.23 292
1953 델파이 소스 좀 확인 부탁 드립니다. 윈도우 플랫폼에서는 작동되는데 안드로이드는 안되네요. [2] 손보라 2019.03.08 292
1952 델파이 10 stringgrid 관련 [5] 개미 2020.12.02 292
1951 DBGrid에 이미지 넣기 질문입니다. 초보델팡이 2019.05.29 293
1950 Delphi XE버전 호환성관련 공식문서 [1] 차니아빠 2019.11.06 293
1949 [XE8 출시세미나] 코드분석 기능이 유용한것 같은데 C++빌더에서는 언제 지원하나요? [1] Humphery 2015.04.30 293
1948 LME288 링크에러 [2] 한시민 2016.03.18 293
1947 웹브라우저로 네이버 웨일을 사용할 수 있는 방법을 알려주세요. [1] 미스터리 2020.09.21 293
1946 FastReport 관련 문의 [1] 쿤이 2021.07.12 293
1945 모바일 동영상 강의 DB 문의 [1] file syc 2015.07.27 294
1944 앱 재실행 관련 문의드립니다. [1] 우정 2017.02.11 294
1943 MS-SQL DB에 smalldatetime type 일자저장시 data overflow (status = 6h) 에러 [2] delphi 2018.04.23 294
1942 컴포넌트 아이콘 표시가 안나올때 [1] file 건들다맞지 2018.06.14 294
1941 프로젝트그룹(ProjectGroup)의 여러 프로젝트가 한꺼번에 빌드 됨 [2] file 미스터몽키 2015.09.15 294
1940 [마이그레이션 세미나] 소스파일은 없고, 실행파일만 있을 때 실행파일 만으로 소스코드를 불러올 수 있는 프로그램이 있을까요? 험프리 2015.11.24 294