본문 바로가기
반응형

프로그래밍/C Sharp28

[ C# ] ini 파일 읽기 및 쓰기 쉽게 쓸수 있는 클래스 공유 C#에서는 환경 설정 파일로는 ini 파일을 사용하지 않고 app.config 파일을 다루지만 예전 C++과 MFC에서 사용하던 환경 설정에서 사용하던 편리함과 고객의 요구에 따라 사용해야 하는 경우가 있습니다. 커널 dll 호출 시 기본 함수 설명 GetPrivateProfileString() : 파일에서 정보(문자열) string형을 읽어옵니다. GetPrivateProfileInt() : 파일에서 숫자형 int형을 읽어옵니다. WritePrivateProfileString() : 파일에 정보(문자열) string형을 쓴다. 만약에 해당 섹션과 키값이 없으면 default값을 리턴합니다. 변수형 타입은 위의 string형, int형뿐만 아니라 숫자형 중 flot, double, int 및 bool 타.. 2021. 11. 9.
[ C# ] 제브라 프린터 인쇄 미리보기 프로그램 제작 웹에서 제브라 프린터의 인쇄 명령으로 출력 이미지를 미리보기 하는 방법이 있습니다. 이 방법을 이용하여 프린터 없이 미리 명령을 만드는 방법을 공유하고자 합니다. 이전 포스트(아래)에서 작성한 파일을 zpl로 저장해 둡니다. 제브라(Zebra) 프린터 명령 웹사이트에서 미리 보기 웹사이트에서 API 확인 상단 메뉴에서 [ API ] 탭을 눌러 주면 사용 가능한 API 명령에 대한 설명 창이 나타납니다. 아래쪽으로 스크롤면 api에 대한 설명이 나타며 한글로 번역하면 아래와 같이 설정됩니다. GET http://api.labelary.com/v1/printers/{dpmm}/labels/{width}x{height}/{index}/{zpl} GET http://api.labelary.com/v1/print.. 2021. 11. 9.
[ C# ] 엑셀파일 읽기 프로그램에서 엑셀 파일을 직접적으로 읽어서 화면에 뿌려주어야 할 경우가 있습니다. 엑셀을 읽고 쓰기 위한 패키지인 Microsoft.Office.Interp.Excel 이용한 연동 방법을 설명하고자 합니다. Microsoft.Office.Interp.Excel 패키지 다운 받기 프로젝트를 생성한 후 [ 솔루션 탐색기 ]에서 [ 참조 ]에 오른쪽 클릭 후 [ NuGet 패키지 관리.. ]를 선택합니다. 설치된 패키지 [ nuget.org ] 선택 후 우측 검색에서 " Microsoft.Office.Interop.Excel "을 입력하면 엑셀 관련 패키지 리스트가 나타납니다. " Microsoft.Office.Interop.Excel " 중 글자 일부 "Excel"만 검색하여도 관련된 패키지를 찾을 수 있습.. 2021. 11. 9.
[ C# ] 허니웰 스케너 시리얼 통신으로 On/Off 하기 고정형 스캐너 또는 핸드스캐너를 수동으로 On/Off 해야 할 경우가 있습니다. 보통 고정형 스캐너에서 많이 사용하는 기능이며, 핸드스캐너가 여러 대 이거나 거리가 멀 경우 스캐너의 포트를 찾기에 유용한 기능이기에 아래 내용을 정리하여 공유합니다. 사용 가능 인터페이스 스캐너를 RS-232 통신으로 사용하려면 아래 세 가지 인터페이스로 가능합니다. RS232(표준 직렬) USB 직렬(USB를 통해 COM 포트를 에뮬레이션함) 및 호스트 시스템에 USB COM 드라이버가 필요함 USB HID-POS * 기본적으로 스캐너가 트리거 명령을 사용하려면 TRGMOD0에 있어야 합니다 * 명령어 설명 트리거하는 명령 [SYN] T [CR](ASCII 문자) 16진수 16, 16진수 54, 16진수 0D(Hexade.. 2021. 11. 8.
[ C# ] 오므론 RFID V608S TCP 통신 하기 테스트를 위하여 Queue에 임시로 명령을 저장한 후 데이터 전송하도록 프로그램을 구성할 것입니다. ID 읽기와 데이터 읽기는 같은 명령을 사용해도 번지만 변경하게 되면 공용으로 사용 가능하여 하나의 함수로 구성하였습니다. 함수 호출하기 ID 읽기 : 주소 : 0xA0000 , 사이즈 : 4 ( ID 읽기는 주소 및 사이즈가 고정되어야 정상 데이터를 받을 수 있습니다. ) 데이터 쓰기 : 데이터 읽기 : 주소 : 0 , 사이즈 : 4 ( 상황에 따라 수정 후 사용 가능합니다 ) // 큐에 명령어 저장 Queue quene = new Queue(); quene.Enqueue(CmdRead(0xA000, 4));// ID 읽기(번지=0xa000, 사이즈=4) quene.Enqueue(CmdWrite(0, n.. 2021. 11. 8.
[ C# ] 배열 생성시 초기값 넣기 배열 선언 시 작은 배열의 값은 생성 시 입력 후 만들 수 있지만 데이터의 개수가 많은 경우 반복문을 이용하여 프로그램 코드로 입력하는 번거로움이 있습니다. 조금 더 간단한 코드를 사용하여 배열을 초기화할 방법을 공유합니다. 100개 데이터 숫자 1로 초기화 int[] array = Enumerable.Repeat(1, 100).ToArray(); 100개 데이터 문자 'A'로 초기화 char[] array = Enumerable.Repeat('A', 100).ToArray(); 자료형만 맞추고 초기화하고 싶은 문자/숫자를 넣고 할당할 길이를 입력해 주면 자동으로 값이 변경됩니다. 아무리 큰 배열이라도 무리 없이 입력이 가능해서 프로그램 구현 시 유용하게 사용할 수 있습니다. 2021. 11. 8.
[ C# ] 그래프 필터링 하기 : 이동 평균 필터(Move Average Filter) 실시간 또는 일정 시간 동안 데이터를 받아서 데이터를 처리할 때 노이즈의 영향으로 비정상적인 데이터를 받는 경우가 있습니다. 이때 사용할 필터로 실시간으로 처리 및 후 처리도 가능한 이동 평균 필터를 설명하고자 합니다. 필터를 처리 방식 1~12의 데이터 입력받았고 필터 강도가 5인 경우 앞에서부터 데이터를 누적, 이동하면서 새로운 데이터 값을 생성하여 배열에 입력합니다, 예시) 새로운 값이 6인 경우 배열의 1~4의 값과 새로운 값을 함한 평균을 구합니다, (3+3+3+3+3+6) / 6 = 3.6 기존의 배열에서 첫 번째 값을 제거하고 마지막에 구한 평균을 입력하고 다음 데이터의 연산도 반복적으로 수행합니다. 이동 평균 처리 함수 public double[] MovAvg_Filter(double[] .. 2021. 11. 4.
[ C# ] 스택(Stack) 과 큐(Queue) 데이터를 리스트에 넣는 방법 중 일반적인 리스트 배열이 아닌 사용 용도에 따라 앞 또는 뒤에서부터 데이터를 사용할 경우가 있습니다. 인덱스로 조회하는 방식에서 앞/뒤에서 데이터를 넣고 빼는 방법은 스택과 큐의 방식을 활용한 프로그램 기법을 사용하여 좀 더 깨끗하고 단순화된 프로그램을 구현할 수 있습니다. 스택(Stack)이란? LIFO(Last-In-Last-Out)의 구조로 입력한 데이터가 가장 위에 쌓이고, 가장 위에서 데이터를 가져가는 방식이다. (동전이 쌓인 경우 위에 넣고 위에서 빼는 방법을 가정하면 된다.) * 사용 함수 * 1. 삽입 : Push 빼낼 데이터 확인 : Peek (stack, queue 같음) 빼냄 : Pop static void Main(string[] args) { Stac.. 2021. 11. 2.
반응형