문의

세계적인 기업으로 발돋움하는 코노텍

Re: Fox8302R 모델 문의

페이지 정보

작성일 12-05-15 17:14

본문

안녕하세요.

대성ENG입니다.

일단 제가 닷넷 VB를 사용해보지 않아서 VB 6.0을 기준으로 설명드리겠습니다.
(VB를 전문적으로 하지 않아서 문법에 어긋나더라도 양해 바랍니다.)

1. 송신 포맷의 구성
 - 설명서 뒷장에 보시면 10.통신출력 부분에 *통신Command와 Block의 정의를 참고하시면 됩니다.
 - 혹시 어려우시면 "자료실 42번 "대성프로토콜체크섬 계산""을 참고하시면 됩니다.
 - 예를 들어 8302R의 어드레스가 1번이고, 온도의 현재값을 읽어 온다고 할때의 송신 포맷은
  0x02(STX), 0x30('0'), 0x31('1'), 0x52('R'), 0x58('X'), 0x54('T'), 0x50('P'), 0x30('0'), 0x03(ETX), 0x3E(CHECKSUM)
  이 됩니다.

2. VB6.0에서의 송신 방법
* 타이머 개체로 지정된 시간마다 호출되게 했습니다.
* vb6.0에서 RS232 개체는 MSCOMM32.OCX입니다.
  여기서 이름을 개체 이름을 Rs232Port으로 했습니다.
  모드는 바이너리 모드로 했습니다.
* MSCOMM32.OCX 설정은 아래와 같이 했습니다.
    With Rs232Port
        .InputMode = comInputModeBinary        '입력 이진모드
        .InputLen = 1                                        '입력속성이 수신버퍼에서 읽는 문자의 숫자
        .InBufferSize = 1024                              '수신버퍼 사이즈
        .RThreshold = 1                                    '수신할 문자의 수
        .NullDiscard = False                              'Null 문자가 수신버퍼로 전송시킬지 여부
        .InBufferCount = 0                     
    End With
 
Private Sub tmrCall_Timer()
    Dim buffer(10) as Byte
    buffer(0) = &h02
    buffer(1) = &h30
    buffer(2) = &h31
    buffer(3) = &h52
    buffer(4) = &h58
    buffer(5) = &h54
    buffer(6) = &h50
    buffer(7) = &h30
    buffer(8) = &h03
    buffer(9) = &h3e
    If Rs232Port.PortOpen = True Then Rs232Port.Output = buffer
end Sub

위 소스에서 보다시피 특별한 이벤트가 필요한게 아니고 MSCOMM32의 OUTPUT 속성에
값을 넣어주면 즉시 전송이 됩니다.

도움이 되실시 모르겠습니다.

감사합니다.
 



 * * * * * CnCR 님이 작성하신 글 * * * * *

 >> 안녕하세요.
 >> CnCR입니다.
 >> 일전에 문의를 드렸고 다시 문의드리고자 글을 남깁니다.
 >>
 >> Fox8302R 컨트롤러의 온습도 정보를 COM3을 통해 PC의 닷넷 프로그램에서 보여주는 것을 만들려고 합니다.
 >>
 >> 수신시 SerialPort1_DataReceived 메소드를 호출되어야 하나 송신신호로 어떻게 줘야할지를 잘 모르겠습니다. 첨부파일의 닷넷소스를 첨부하였습니다.
 >>
 >> 혹 닷넷 VB 2005 로 개발시 어떻게 하면 송신부분을 구현할 수 있을까요?