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 로 개발시 어떻게 하면 송신부분을 구현할 수 있을까요?
대성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 로 개발시 어떻게 하면 송신부분을 구현할 수 있을까요?
- 이전글Fox8302R 모델 문의 12.05.14
- 다음글mUqwPdspNlc 15.08.11