본문 바로가기

전체 글326

VisualStudio Code 단축키 2021. 10. 1.
자바스크립트 마인드맵 파일첨부 2021. 9. 28.
[C#]Modbus PLC Simulator(TCP 전용 시뮬레이터 nmodbus 라이브러리) Modbus PLC Simulator(TCP 전용 시뮬레이터 nmodbus 라이브러리) Modbus는 자동화 라인에서 사용하기 위해 1979년에 개발된 프로토콜입니다. 우리나라에서도 장비 회사 대부분이 이 프로토콜을 사용 중이기도 하죠. 그래서 Modbus PLC Simulator(시뮬레이터) 등 프로토콜에 대한 응용 프로그램, 라이브러리 등의 수요가 많은 편입니다. 이 포스트에서는 Modbus 프로토콜의 한 예제입니다. C#용으로 라이브러리, 소스 응용 예제를 포함합니다. 그나저나, 요즘 C# 지원이 많아졌네요. NI, 미쓰비시 등이 C#용 라이브러리 많이 내놓고 있어요. MFC로 만들어진 것 프로그램이 많아 당장은 아니겠으나, 조금씩 C#이 MFC의 자리를 대체할 것으로 보입니다. 대기업이 지원할 만.. 2021. 9. 23.
Funtion Code별 DATA 구조 및 디바이스 제어 MODBUS-TCP는 Function Code별 프로토콜 Data구조가 조금식 달라집니다. Function Code별로 요청·응답에 대한 프로토콜의 데이터 구조를 알아보고 TCPPORT의 디바이스를 제어하는 방법을 살펴 보겠습니다. MODBUS-TCP는 서버로 사용되며 IP는 기본적으로 192.168.201.2xx로 구성되어있습니다. 2xx의 주소는 기본적으로 200으로 설정되어있고 사용자가 딥스위치를 설정하여 200~215까지의 IP주소를 설정하여 사용하실 수 있습니다. PORT번호는 502으로 고정입니다. Read Coil Bit Read(읽기), Coil메모리의 비트의 값을 읽어오는 명령입니다. Function Code : 0x01 OR 0x02 디바이스 Input, Output Port의 상태를 .. 2021. 9. 23.
MODBUS-TCP란 MODBUS-TCP는 산업용 필드버스 분야에서 자주 사용되는 통신 프로토콜 입니다. TCP/IP 네트워크 상에서 상위장치와 하위장치간의 인터페이스를 위하여 고안된 통신방법입니다. MODBUS-TCP 통신규격에는 마스터(Client)와 슬레이브(Server)의 역할이 나누어져 있습니다. 슬레이브(Server)는 마스터(Client)가 요청하는 데이터에 대해 응답을 해줍니다. 주로 마스터(Client)에는 산업용터치 HMI 기기, 또는 PC 와 같은 상위 기기가 위치합니다. 그리고 슬레이브(Server)에는 TCPPORT 나 PLC 등이 위치합니다. 슬레이브(Server)는 상위기기에서 요청하는 동작만을 하는 수동적인 위치에 있습니다. 반면 마스터(Client)쪽에서는 원하는 데이터를 읽어오거나, 원하는 데.. 2021. 9. 23.
[C#/API] Gloobal Hotkey(핫키) 등록하기 (RegisterHotKey, UnregisterHotKey) C#으로 윈도우 핫키 등록하는 방법 RegisterHotKey() 함수로 핫키를 등록하고 UnregisterHotKey() 함수로 핫키를 해제 할 수 있다 조합키로 핫키를 등록할 수 있고 단일키로도 핫키를 사용할 수 있다 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Diagnostics; using System.Runtime.InteropServices; namespace GlobalHotkey { p.. 2021. 9. 17.
[C#] Button Image 테두리(border) 없애기 Button에 배경을 이미지로 하게 되면, 1px의 border가 생긴다. 해당 border을 없애는 방법은 2가지가 있다. 첫번째 방법: Properties 창의 값 변경 (1) Properties > FlatAppearance - BorderSize값을 0으로 준다. 두번째 방법: 소스코드 변경 //버튼 테두리 없애기 btnLogin.TabStop = false; btnLogin.FlatStyle = FlatStyle.Flat; btnLogin.FlatAppearance.BorderSize = 0; [ 버튼 눌림 효과 ] 버튼 누림 효과를 넣기 위해서는 FlatStyle값에 Flat을 하면 안됩니다. 누림 효과는 Popup을 사용하면 좋습니다. FlatApprearance에 속성값을 넣어줘야 합니다... 2021. 8. 26.
[C#] 배열 생성과 동시에 전체 값 초기화 (Enumerable.Repeat) 배열 생성과 동시에 배열의 전체 값을 특정 값으로 초기화 해보자 Enumerable.Repeat 함수 - Enumerable.Repeat(초기화값, 크기); (1) int 타입의 크기 10000인 배열을 생성과 동시에 배열 전체의 값을 0으로 초기화 해보자 // 배열 생성과 동시에 값을 0 으로 초기화 int[] array = Enumerable.Repeat(0, 10000).ToArray(); (2) char 타입의 크기 1000인 배열을 생성 후 해당 배열의 전체 값을 'S'로 초기화 해보자 char[] array = new char[100]; // 배열 생성 array = Enumerable.Repeat('S', 1000).ToArray(); // 배열의 값을 'S'로 초기화 출처 : https:/.. 2021. 8. 26.
[C#] Dictionary Value 로 Class 사용하기 class 선언 public class Person { public int personNumber; public string name; public int age; public Person(int personNumber, string name, int age) { this.personNumber = personNumber; this.name = name; this.age = age; } } Dictionary dicPerson = new Dictionary(); dicPerson.Add(1001, new Person(1001, "홍길동", 36)); dicPerson.Add(1002, new Person(1002, "임꺽정", 26)); dicPerson.Add(1003, new Person(1003, .. 2021. 8. 24.
[C#] Dictionary 사용법. 기본,응용 Dictionary 기본 사용법 // 선언 Dictionary dic = new Dictionary(); // 값 추가 dic.Add("빨강", "red"); dic.Add("파랑", "blue"); // element 수 Console.WriteLine("Dictionary 수 : {0}", dic.Count); // key 체크 if (dic.ContainsKey("빨강")) Console.WriteLine("빨강이 있음"); foreach (var key in dic.Keys) { Console.WriteLine("{0} 은 영어로 {1} 입니다.", key, dic[key]); } // 이미 있는 값 변경. dic["파랑"] = "BLUE"; // red 가 한글로 뭔지 찾기 ( Value 로 K.. 2021. 8. 23.