본문으로 이동
주 메뉴
주 메뉴
사이드바로 이동
숨기기
둘러보기
대문
최근 바뀜
임의의 문서로
미디어위키 도움말
특수 문서 목록
lse
검색
검색
보이기
계정 만들기
로그인
개인 도구
계정 만들기
로그인
로그아웃한 편집자를 위한 문서
더 알아보기
기여
토론
FEnet 프로토콜 라이브러리
편집하기 (부분)
문서
토론
한국어
읽기
편집
원본 편집
역사 보기
도구
도구
사이드바로 이동
숨기기
동작
읽기
편집
원본 편집
역사 보기
일반
여기를 가리키는 문서
가리키는 글의 최근 바뀜
문서 정보
보이기
사이드바로 이동
숨기기
경고:
로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다.
로그인
하거나
계정을 생성하면
편집자가 사용자 이름으로 기록되고, 다른 장점도 있습니다.
스팸 방지 검사입니다. 이것을 입력하지
마세요
!
===FEnetClient 클래스 심화(?) 사용법=== FEnet 프로토콜 라이브러리도 Cnet과 마찬가지로 요청과 응답을 위한 클래스들을 일일이 구현했다. FEnet 프로토콜을 이용하여 .NET 기반 응용프로그램에 데이터 맵 설정 기능을 설계한다거나 체계적인 데이터 관리를 하고 싶다면, 설정에 따라 요청 클래스들을 적절히 생성하여 배열에 저장해두고, 적당한 시간 간격으로 Request 메서드를 일괄적으로 호출하도록 구현하면 될 것이다. 아까의 예제 코드를 요청 및 응답 클래스를 이용하여 다시 구현한 예제는 다음과 같다. <code> using System; using System.Linq; using VagabondK.Protocols.Channels; using VagabondK.Protocols.LSElectric; using VagabondK.Protocols.LSElectric.FEnet; class Program { static void Main(string[] args) { FEnetClient client = new FEnetClient(new TcpChannel("127.0.0.1", 2004)); //NAK 응답을 받아도 예외를 발생시키지 않고 FEnetNAKResponse 객체로 반환하도록 설정 client.ThrowsExceptionFromNAK = false; //변수 %MW100와 %MW200을 각각 읽어오기 //foreach (var item in client.Read("%MW100", "%MW200")) //{ // Console.WriteLine($"변수: {item.Key}, 값: {item.Value.WordValue}"); //} FEnetRequest request = new FEnetReadIndividualRequest("%MW100", "%MW200"); foreach (var item in client.Request(request) as FEnetReadIndividualResponse) { Console.WriteLine($"변수: {item.Key}, 값: {item.Value.WordValue}"); } //변수 %MB200(%MW100)부터 바이트 10개를 연속으로 읽어오기 //var bytes = client.Read(DeviceType.M, 200, 10).ToArray(); //for (int i = 0; i < bytes.Length; i += 2) //{ // Console.WriteLine($"변수: %MW{100 + i / 2}, 값: {BitConverter.ToInt16(bytes, i)}"); //} request = new FEnetReadContinuousRequest(DeviceType.M, 200, 10); var bytes = (client.Request(request) as FEnetReadContinuousResponse).ToArray(); for (int i = 0; i < bytes.Length; i += 2) { Console.WriteLine($"변수: %MW{100 + i / 2}, 값: {BitConverter.ToInt16(bytes, i)}"); } //변수 %MW102에 값 10을, %MW202에 값 20을 쓰기 //client.Write(("%MW102", 10), ("%MW202", 20)); request = new FEnetWriteIndividualRequest(DataType.Word) { ["%MW102"] = 10, ["%MW202"] = 20, }; var nakResponse = client.Request(request) as FEnetNAKResponse; if (nakResponse != null) { Console.WriteLine($"쓰기 오류 발생:{nakResponse.NAKCode}, {nakResponse.NAKCodeValue}"); } //변수 %MB600(%MW300)부터 연속으로 4개의 바이트 쓰기, 쓸 값은 각각 10, 0, 20, 0 //client.Write(DeviceType.M, 600, 10, 0, 20, 0); request = new FEnetWriteContinuousRequest(DeviceType.M, 600) { 10, 0, 20, 0 }; nakResponse = client.Request(request) as FEnetNAKResponse; if (nakResponse != null) { Console.WriteLine($"쓰기 오류 발생:{nakResponse.NAKCode}, {nakResponse.NAKCodeValue}"); } } } </code>
요약:
lse에서의 모든 기여는 다른 기여자가 편집, 수정, 삭제할 수 있다는 점을 유의해 주세요. 만약 여기에 동의하지 않는다면, 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다(자세한 사항은
Lse:저작권
문서를 보세요).
저작권이 있는 내용을 허가 없이 저장하지 마세요!
취소
편집 도움말
(새 창에서 열림)
검색
검색
FEnet 프로토콜 라이브러리
편집하기 (부분)
새 주제