Q&A

  • RS232제어할때 API의 DCB구조체 제어
안녕하세요.

델파이의 델자도 모르는 울트라 초짜입니다.

이전분이 델파이로 RS232통신 프로그램을 만들어 놓고 가셨는데,

수정할 일이 있어요.

델파이는 처음 해보는거라 모든게 너무 어렵네요.



다를이 아니오라 델파이에서도 API를 이용할 수 있는걸로 알고 있어서 그 중

RS232제어를 위한 DCB를 제어할려구 DCB변수 선언하고, 객체의 멤버변수에 값을 대입할려구 해보니............

fRtsControl의 값을 고정시킬려구 하는데 도무지 이해가 안되네요.

분명히 VC++에서는 제어할 수 있었는데, 델파이에서는 fRtsControl멤버가 없다고 에러가 나요.

어찌된 일이죠?

RS485로 들어오는 데이터를 컨버트를 통해 RS232로 변환해서 통신할려구 하니 fRtsControl의 값이 Disable로 되어야 되는데, 그 값을 설정할 수가 없습니다.

멤버가 있어야 설정을 하겠는데...........

도움말에도 DCB구조체에 멤버가 존재하는데, 왜 델파이의 객체로 만들때에는 없는것으로 되는지????????

님들 도움을 요청합니다.

시간은 없는데 정말 미치겠어요.

고수님들의 도움을 기다립니다.

7  COMMENTS
  • Profile
    델파이 탐 크르즈 2001.11.08 19:56
    정원교 wrote:

    > 안녕하세요.

    > 델파이의 델자도 모르는 울트라 초짜입니다.

    > 이전분이 델파이로 RS232통신 프로그램을 만들어 놓고 가셨는데,

    > 수정할 일이 있어요.

    > 델파이는 처음 해보는거라 모든게 너무 어렵네요.

    >

    > 다를이 아니오라 델파이에서도 API를 이용할 수 있는걸로 알고 있어서 그 중

    > RS232제어를 위한 DCB를 제어할려구 DCB변수 선언하고, 객체의 멤버변수에 값을 대입할려구 해보니............

    > fRtsControl의 값을 고정시킬려구 하는데 도무지 이해가 안되네요.

    > 분명히 VC++에서는 제어할 수 있었는데, 델파이에서는 fRtsControl멤버가 없다고 에러가 나요.

    > 어찌된 일이죠?

    > RS485로 들어오는 데이터를 컨버트를 통해 RS232로 변환해서 통신할려구 하니 fRtsControl의 값이 Disable로 되어야 되는데, 그 값을 설정할 수가 없습니다.

    > 멤버가 있어야 설정을 하겠는데...........

    > 도움말에도 DCB구조체에 멤버가 존재하는데, 왜 델파이의 객체로 만들때에는 없는것으로 되는지????????

    > 님들 도움을 요청합니다.

    > 시간은 없는데 정말 미치겠어요.

    > 고수님들의 도움을 기다립니다.

    ============================================================================



    기존의 RS232통신 프로그램을 수정하실려구여..???

    꼭 API의 DCB구조체 제어않하시고 그냥 Buffer로 쌓이게 해서

    받으면 될것같은데...



    저도 RS232통신 프로그램을 짜봤거든요...

    기계의 프로토콜 값만 있으면 변환해서 원하는 값을

    얻는것은 별 무리가 아닌가 싶군요...



    원하시면 제가 짜놨던 통신 프로그램을 드릴수도 있습니다.

    소스 참고하실려면...



    그럼 즐코....

  • Profile
    정원교 2001.11.08 21:11
    답변해 주신분들 정말 감사합니다.

    우선 지금 RS232를 기준으로 해서 작성되었던 플그림인데요.

    상황이 바뀌어서 RS485로 들어오는 데이터를 컨버트를 통해서 RS232로 변환하여 제어하는 프로그램입니다.

    근데, RS485에서 RS232로 컨버트될때 통신형태의 차이로 인해 RTS를 Disable로 세팅을 해야함 통신이 가능하다고 하네요.

    그래서, 세팅을 변경할려구 dcb구조체를 사용하는거랍니다.

    음....

    님들의 도움으로 상황을 알았는데..........

    그럼 dcb구조체의 비트를 제어할려면 Flags세팅을 어떻게 해서 코딩이 되어야 하는지요.

    이리저리 해봐도 안되네요. ^^

    간단한 구현 코드라도,

    API자료형에 값을 세팅하는 법 부탁드립니다.

  • Profile
    델파이 탐 크르즈 2001.11.09 00:15
    정원교 wrote:

    > 답변해 주신분들 정말 감사합니다.

    > 우선 지금 RS232를 기준으로 해서 작성되었던 플그림인데요.

    > 상황이 바뀌어서 RS485로 들어오는 데이터를 컨버트를 통해서 RS232로 변환하여 제어하는 프로그램입니다.

    > 근데, RS485에서 RS232로 컨버트될때 통신형태의 차이로 인해 RTS를 Disable로 세팅을 해야함 통신이 가능하다고 하네요.

    > 그래서, 세팅을 변경할려구 dcb구조체를 사용하는거랍니다.

    > 음....

    > 님들의 도움으로 상황을 알았는데..........

    > 그럼 dcb구조체의 비트를 제어할려면 Flags세팅을 어떻게 해서 코딩이 되어야 하는지요.

    > 이리저리 해봐도 안되네요. ^^

    > 간단한 구현 코드라도,

    > API자료형에 값을 세팅하는 법 부탁드립니다.



    ===========================================================================



    안녕하세요...

    그런데..

    제가 알고있기로는 기계가 2대이상이라면

    기계와 기계끼리 물려 있지 않나요 ?

    그러면 어짜피 기계에서 PC로 들어오는 RS232통신을 하죠..

    그러면 다된것 아닌가 하네요..



    다시말해서..



    PC ----기계1-----------기계2 ........기계n



    요렇게 물려있으면

    PC에서 제어하실때..

    PC 에서 기계1붙여서 자료수 수신받아오시고

    PC 에서 기계2붙여서 자료수 수신받으시면 됩니다..

    개념은 이렇게 가져가야 하는것 으로 알고 있는데여..



    저도 기계끼리 4대정도 붙여서 해봤는데..

    이렇게 붙여서 기계1에서 4대의 자료를 모두다 가져왔었거든요..



    그리고 RS232통신 방식과 RS485방식은 차이가 있어서

    기계에 보시면 포트가 RS232포트 하나와 RS485포트가 나와 있을겁니다.

    그러면 기계끼리는 RS485끼리 묶으시고 나머지 RS232는 PC로 물리시면

    문제는 해결되리라 봅니다.



    이해가 가셨는지 모르겠네요..

    더 물어보시고 싶으시면 리풀하세요...



    그럼 즐코....

  • Profile
    정원교 2001.11.09 00:25
    관심 가져 주셔서 정말 감사합니다. ^^

    예 지금 상황이 기존의 설비는 컴과 장비(원칩보드)의 거리가 가까워 232로 통신을 수행하다가 설비 증설등 여러가지 상황 변동으로 인하여 장비와 컴사이의 거리가 800m가량 멀어지게 되었습니다.

    그래서 어쩔수 없이 rs485로 원칩보드에서 데이터를 내보내고 컴에서는 컨버트를 통해

    rs232로 변경하여 통신을 주고 받고 있는데.........

    중요한건 rs232일때는 통신상의 아무런 문제가 없었는데, 원칩보드의 통신이 rs485로 변경되고 컨버트 넣고 나서 프로그램에서 들어오는 데이터를 찾질 못하는 문제가 발생해요.

    VC++에서 테스트 플그램 만들어 시스템끼리 rs232통신으로 연결 테스트 후 작동상황을 체크하고, 다시 그 사이에 rs232를 rs485로 상호 변경하는 컨버트를 각각 설치후 테스트 하면 데이터가 안들어와요. 그래서 이리저리 알아보니 핀의 RTS를 제어해야 되는데, DISABLE시키면 된다고 해서 DCB구조체의 값을 변경하니 잘 되더군요.



    시스템 --- RS232 -- 컨버트 ---- RS485 --- 컨버트 ---- RS232 --- 시스템



    아~~~ 이제 해결했구나 하고 델파이 소스 보는 순간 DCB구조체의 RTS제어 부분이 없는 겁니다. 이리하여 여기 글을 올리게 되었어요.

    어떻게 하면 DCB구조체 있는 RTS제어 변수에 값을 설정할 수 있는지 ^^

    도와 주세요 제발 프리즈......



  • Profile
    최용일 2001.11.08 06:28
    안녕하세요. 최용일입니다.



    RS232통신은 해본적은 없지만...



    DCB구조체의 Flags멤버에 들어있네요...



    델파이는 씨처럼 비트단위의 데이터형이 없습니다... 그래서 API데이터들은 씨와 크기가



    같은 멤버를 하나 만들어서 그 멤버를 통해서 비트별로 접근합니다...



    fXXXXXX란 멤버는 모두 Flags에 들어있네요...



    fBinary는 Flags의 최하위비트이고 fDummy2는 Flags의 최상위 17비트이네요...

    (최상위하고 최하위가 바뀌었나?? 가물가물..)



    ^^ 항상 즐코하세요...



    정원교 wrote:

    > 안녕하세요.

    > 델파이의 델자도 모르는 울트라 초짜입니다.

    > 이전분이 델파이로 RS232통신 프로그램을 만들어 놓고 가셨는데,

    > 수정할 일이 있어요.

    > 델파이는 처음 해보는거라 모든게 너무 어렵네요.

    >

    > 다를이 아니오라 델파이에서도 API를 이용할 수 있는걸로 알고 있어서 그 중

    > RS232제어를 위한 DCB를 제어할려구 DCB변수 선언하고, 객체의 멤버변수에 값을 대입할려구 해보니............

    > fRtsControl의 값을 고정시킬려구 하는데 도무지 이해가 안되네요.

    > 분명히 VC++에서는 제어할 수 있었는데, 델파이에서는 fRtsControl멤버가 없다고 에러가 나요.

    > 어찌된 일이죠?

    > RS485로 들어오는 데이터를 컨버트를 통해 RS232로 변환해서 통신할려구 하니 fRtsControl의 값이 Disable로 되어야 되는데, 그 값을 설정할 수가 없습니다.

    > 멤버가 있어야 설정을 하겠는데...........

    > 도움말에도 DCB구조체에 멤버가 존재하는데, 왜 델파이의 객체로 만들때에는 없는것으로 되는지????????

    > 님들 도움을 요청합니다.

    > 시간은 없는데 정말 미치겠어요.

    > 고수님들의 도움을 기다립니다.

  • Profile
    정원교 2001.11.08 20:42
    답변해 주신분들 정말 감사합니다.

    우선 지금 RS232를 기준으로 해서 작성되었던 플그림인데요.

    상황이 바뀌어서 RS485로 들어오는 데이터를 컨버트를 통해서 RS232로 변환하여 제어하는 프로그램입니다.

    근데, RS485에서 RS232로 컨버트될때 통신형태의 차이로 인해 RTS를 Disable로 세팅을 해야함 통신이 가능하다고 하네요.

    그래서, 세팅을 변경할려구 dcb구조체를 사용하는거랍니다.

    음....

    님들의 도움으로 상황을 알았는데..........

    그럼 dcb구조체의 비트를 제어할려면 Flags세팅을 어떻게 해서 코딩이 되어야 하는지요.

    이리저리 해봐도 안되네요. ^^

    간단한 구현 코드라도,

    API자료형에 값을 세팅하는 법 부탁드립니다.

  • Profile
    정원교 2001.11.08 20:38
    답변해 주신분들 정말 감사합니다.