Q&A

  • 오토닉스 펄스메타 232통신데이터를 받아 TCP/IP 포트 변환하여 데이터 받기
오토닉스 설명서는 VB로 나와 있습니다.
이거를 델파이로 고치면서 시리얼 데이터를 무선기기인 블루투스로 받아서 처리할려합니다.
그런데 잘 안되는 부분을 질문합니다.
vb 소스 입니다.
<!--CodeS-->
Private Sub Send_Click()                    '전송(Send) 버튼을 눌렀을 때
    Dim Msg As String
    Dim Send(0 To 32) As Byte               '출력 문자열 중 CRC의 값 범위 때문에 Byte배열로 선언
    Dim CRC As Byte
    Dim i As Integer

    SendMsg.Text = "01RX0P0+0000000"        '화면의 SendMsg컴포넌트 초기화
    ReceiveMsg = ""                         '화면의 ReceiveMsg 컴포넌트 초기화
    StatusMsg = ""                          '화면의 StatusMsg 컴포넌트 초기화

    If MSComm.PortOpen = True Then          '포트가 열려 있다면
        Msg = Mid(SendMsg, 1, 15) + Chr(&H3) '입력 문자열 중 15개를 잘라내어 ETC(&H3)신호 추가
        CRC = CRC8table_packet(Msg, 16)     'CRC계산
        Send(0) = &H2                       '출력 문자열에 STX(&H2) 추가
        For i = 1 To 16                     '출력 문자열에 입력한 문자열 및 ETX(&H3) 추가
            Send(i) = Asc(Mid(Msg, i, 1))
        Next i
        Send(17) = CRC                      '출력 문자열에 CRC 추가

        MSComm.RTSEnable = True             '보낼 준비 신호 출력, RTS신호 켬
        MSComm.Output = Send                '통신라인에 데이터 보냄
        For i = 0 To 17                     '보낸 문자열 화면 출력
            StatusMsg = StatusMsg & Right$("00" & Hex$(Send(i)), 2) & " "
        Next i
    Else
        StatusMsg = "Invalid COM port"      '포트가 열리지 않았다면 에러 메시지 출력
    End If
End Sub
<!--CodeE-->

이거를 델파이에서 TCP/IP의 포트로 작업할려니
<!--CodeS-->
  if TCPClient1.Connected = True then
  begin
     Memo_AA.Lines.Add('STX00RX0P0+0000000ETX,35');
     MSG:= Chr($02) + Chr($30) + Chr($30) + Chr($52) + Chr($58) + Chr($30) + Chr($50)
         + Chr($30) + Chr($2B) + Chr($30) + Chr($30) + Chr($30) + Chr($30) + Chr($30)
         + Chr($30) + Chr($30) + chr($03) + chr($35);
     frmClient.TCPClient1.Write(MSG);
<!--CodeE-->
명령을 주는 부분을 이렇게 하였습니다.   그런데 응답이 없어요.
문제 있다 생각되는 부분은 ==>  변수가 BYTE(배열)사용 했으며, 델파이는 문자열 인데 이부분이 틀려서 그럴까요?


0  COMMENTS