c# 비동기 관련 - 참고글
·
카테고리 없음
https://youngseong.tistory.com/355 [C#] 비동기 관련- Thread 관련 내용https://youngseong.tistory.com/357 Thread란- ProcessComputer에서 연속적으로 실행되고 있는 ProgramOS로부터 Memory를 할당받아 실행 중인 것Scheduling의 대상이 되는 Task와 거의 같은 의미로 쓰임youngseong.tistory.com
윈폼에서 WPF로 마이그레이션 - 참고글
·
카테고리 없음
https://forum.dotnetdev.kr/t/winform-wpf/13636/2 장비 업계에서 Winform 을 벗어나 WPF 로 개발을 한다는건..3D 가속기가 대중화되기 전이었던 Windows XP 시절에는 일상적인 WPF 애플리케이션조차 GPU가 없으면 성능이 크게 떨어지는 것이 현실적인 허들이었습니다. 하지만 지금은 3D 가속은 모든 PC 환경에서forum.dotnetdev.kr
비전 화면 붙일 때 필요한 컨트롤 추가하는 방법
·
카테고리 없음
화면 붙일 때 필요한 컨트롤 추가하는 방법도구상자 오른쪽 마우스 > 항목선택 > 필터에 'cvs' 검색엔터누르지말고 기다리면 4개가 뜸그 중에 위에 2개 선택하고 확인 누르면 됨컨트롤 더블클릭하면 Form에 알아서 추가됨 namespace vision{ public partial class Form1 : Form { string address = "192.168.0.14"; string username = "admin"; string password = ""; bool forceConnect = false; public Form1() { InitializeComponent(); ..
윈폼에 코그넥스 인사이트 붙이기
·
카테고리 없음
SDK를 사용한 프로그래밍 방식 연결: SDK를 사용하여 프로그래밍할 경우, C++, C#, VB.NET 등 지원되는 언어의 개발 환경에서 프로젝트를 설정합니다. 프로젝트에 코그넥스 In-Sight 라이브러리(예: .dll 파일)를 참조(Reference)로 추가합니다. 제공되는 API(응용 프로그래밍 인터페이스)를 사용하여 카메라에 연결하고 이미지 획득, 데이터 통신, 설정 변경 등의 작업을 수행합니다. In-Sight SDK 설치 폴더 내의 샘플 프로젝트를 참고하면 도움이 됩니다. dll 파일을 참조로 추가한다.도구상자에서 오른쪽마우스 클릭 후 '탭 추가' 누르고, 관리할 이름으로 탭 생성한 뒤해당 탭에 오른쪽마우스 클릭해서 '항목 선택' 누르고 UI 관련 dll 파일 추가해주면dll 파일 안에 들..
코그넥스 비전 Cognex Vision 통신 및 연결하기 (In-Sight 툴 설치)
·
카테고리 없음
코그넥스 비전 툴 설치하기1. 코그넥스 공식 홈페이지에 간다.2. 메뉴 중 '지원' 에서 [소프트웨어 및 펌웨어]로 들어간다.3. 필요한 버전을 검색해서 다운받는다. (나는 6.5.0 버전이 필요함)4. 같은 버전의 SDK도 다운받는다. (라이브러리)5. zip 파일 압축을 풀고, exe를 설치한다.6. 바탕화면에 설치된 익스플로어를 실행한다. Q. 비전 카메라를 연결한 뒤 작동시키는 방법7. 보기 tab 에서 맨밑에 '간단한 작성기' (Ctrl+Shift+V) 를 누르면 관리하는 셀이 나온다.8. 이때 카메라 모양의 라이브버튼을 누르면 카메라가 실행된다. tip) 비전이 잘 연결됐는지 확인하려면?네트워크 연결 -> 이더넷 에서 확인 가능아니면 cmd 에서 ping 아이피번호 쳐서 확인 가능
DI 의존성 주입 - 참고 사이트
·
카테고리 없음
https://iopeni.tistory.com/entry/Dependency-Injection-Container Dependency Injection Container요즈음 들어 이 DI Pattern에 상당한 관심을 갖게 되었습니다. 이 포스트의 내용은 상당히 주관적인 내용들이기 때문에 제가 잘못 공부 하여 적는 내용들이 있을 지도 모르겠습니다. 잘못된 부분이iopeni.tistory.comhttps://iopeni.tistory.com/entry/Prism-3-Unity-Container-%EC%84%A4%EB%AA%85-%EB%94%94%ED%8E%9C%EB%8D%98%EC%8B%9C-%EC%9D%B8%EC%A0%9D%EC%85%98-%ED%8C%A8%ED%84%B4%EC%9D%B4%EB%9D%B..
소스코드 분석 방법 - 참고 사이트
·
카테고리 없음
https://itstart-190126.tistory.com/entry/IT-%EA%B0%9C%EB%B0%9C%EC%9E%90%EA%B0%80-%EC%86%8C%EC%8A%A4%EB%B6%84%EC%84%9D%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95-%EB%B8%94%EB%A1%9C%EA%B7%B8-%ED%8F%AC%EC%8A%A4%ED%8C%85-%EC%B0%B8%EA%B3%A0 IT 개발자가 소스분석하는 방법 - 블로그 포스팅 참고개발 5년차... 주니어도 아니고 이제는 어느 새 시니어... 개발자가 되어버렸다. 신입 개발자로 처음 회사 입사했을 때 바로 프로젝트 투입하여 개발 업무 시작 당장 급한 일정때문에 소스코드 분itstart-190126.tistory.com
SourceTree 사용하기
·
카테고리 없음
소스 경로: Git 서버에서 필요한 폴더 경로 복사목적지 경로: 원하는 폴더의 경로 (탐색 으로 하면 편함)밑에 [클론]버튼 누르면 됨. 그러면 앞으로 해당 폴더에 있는 프로젝트는 git으로 트래킹(추적)이 된다.
바코드 파싱 메서드
·
카테고리 없음
맨처음에는 2와 32-0 을 비교했을 때 작은게 2니까0에서부터 2까지 추출해서 code에 저장하는데그 추출한값은 01이고, 그 다음에 index에 2가 추가돼근데 code가 01이면 조건문이 실행돼14와 32-2 중에 14가 더 작으니까 14만큼을 len에 저장해index 2부터 14까지 vo.GTIN에 저장해그리고 index에 14를 추가해 그러면 index는 이제 16이야 private Vo ParseBarcode(string barcodeData) { Vo vo = new Vo(); // FNC1(ASCII 29) 기준으로 분리 string[] parts = barcodeData.Split('\x1D'); // ..
C# 윈폼 MSSQL DB연결
·
카테고리 없음
DB를 사용하기 위해서는 System.Data.SqlClient 네임스페이스를 사용한다 DB에 접속할 때에는 SqlConnection 객체를 사용하면 된다.// 필드private SqlConnection conn = null;private string connString = "SERVER=127.0.0.1,9000;DATABASE=TEST;UID=sa;PASSWORD=1111";// 연결버튼을 누르면 실행되도록 함private void btnDBconnet_Click(object sender, EventArgs e){ try { conn = new SqlConnection(connString); conn.Open(); MessageBox.Show("DB 연..
C# 윈폼) 허니웰 바코드 스캐너 프로그램
·
카테고리 없음
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.IO.Ports; // 시리얼 통신using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;/* * 데이터를 읽어요 * 식별자에 맞게 파싱해요 * 객체에 넣어요 (Vo객체로 매핑) * ui 바인딩해요 * db 업데이트해요 */namespace Honeywell{ public partial class Form1 : Form { public Form1() ..
시리얼통신 데이터 처리 흐름
·
카테고리 없음
시리얼통신으로 데이터를 읽는다.-> 바이트가 들어온다. (장치는 바이트를 보낸다)-> 헥스값으로 변환한다. (제어문자 확인)-> 아스키로 변환한다.✅ 시리얼 통신 데이터 처리 흐름1️⃣ 장치(스캐너)가 데이터 전송스캐너는 “문자”가 아니라, 0과 1로 이루어진 바이트 스트림을 보냄예: 00110001 00110010 00110011 00110100 00110101 00001101 000010102️⃣ 프로그램이 바이트 단위로 수신SerialPort.Read() 등으로 바이트 배열(byte[])을 받음예: [0x31, 0x32, 0x33, 0x34, 0x35, 0x0D, 0x0A]3️⃣ HEX로 변환해서 확인 (디버깅 단계)제어문자(0x0D, 0x0A, 0x1D 등)나 프로토콜 구조 확인용예: "31 32..
GS1 표준 규약 (2D 바코드)
·
카테고리 없음
https://www.gs1kr.org/front/board/appl/GS1Stnd.asp 이 중에서도 '상품' 바코드에 관한 규약특히 의약품에 관한 규약은 GS1 DataMatix 이다.| 구간 | 식별자 (AI: Application Identifier) | 설명 | 값 | 의미 || ------ | ----------------------------------- | ----------- | ------------------ | ------------- || **01** | **Global Trade Item Number (GTIN)** | 전 세계 상품 코드 | **08806572002433** | 제품 식별용 고유 번..
C# 비동기 프로그래밍 - async/await
·
C#
C#에서 비동기 프로그래밍은 현대에서 필수적인 기술웹 서비스, 데이터베이스 연결, 파일 I/O와 같이 시간이 많이 소요되는 작업을 효율적으로 처리하기 위해 비동기 프로그래밍을 사용 동기 방식: 한 작업이 끝나야 다음 작업을 할 수 있음비동기 방식: 한 작업이 진행중이더라도 다른 작업도 동시에 수행할 수 있음 async 함수는 Task를 반환하는 것이 일반적이므로, void 반환 메서드를 async로 만들려면 반환 타입을 Task로 변경해야함
랜덤 배정
·
카테고리 없음
https://chatgpt.com/share/6913199d-d4d8-8003-a6ed-017c860bb760 ChatGPT - 랜덤 값 출력 메서드Shared via ChatGPTchatgpt.com 좋은 포인트야 👍지금처럼 1~5처럼 “연속된 숫자”라면 배열(int[] randNum = { 1, 2, 3, 4, 5 };)은 사실 필요 없어.그럴 땐 그냥 Random.Next(1, 6) 으로 해결 가능하지.하지만 배열이 여전히 유용한 상황은 다음과 같아 👇✅ 1. 숫자가 “연속되지 않을 때”int[] randNum = { 1, 3, 7, 10 };int index = random.Next(randNum.Length);int result = randNum[index];→ 이렇게 하면 1, 3, 7,..
인터페이스(Interface)
·
카테고리 없음
클래스가 구현해야하는 규칙정의서 / 사용명세서 / 계약 다중상속public class FooC { }public class FooD { }public class FooE : FooC, FooD { } // 컴파일러 오류public interface IFooA { }public interface IFooB { }public class FooF : IFooA, IFooB { } // ok
허니웰 바코드 통신 (C# Winform) - Honeywell Xenon 1950
·
C#
⚙️ 스캐너 모드🔸 HID 키보드 모드 (기본)“키보드”나 “휴먼 인터페이스 장치(HID)” 아래에 표시COM 포트가 없음 → 시리얼 통신 불가🔸 USB Serial (CDC) 모드“포트 (COM & LPT)” 아래에 “USB Serial Port (COM3)” 같은 장치 표시SerialPort 코드로 통신 가능 ⚙️ “USB Serial (CDC)” 모드로 전환설정 매뉴얼(Quick Start Guide) 뒤쪽에 보면 “USB Serial Emulation (CDC)”이라는 바코드가 있음.그걸 스캔하면 스캐너가 시리얼 모드로 바뀜절차매뉴얼에서 “USB Serial Emulation” 바코드를 찾는다.(이 바코드가 모델에 따라 "USB COM Port Emulation"으로도 표시됨) 그 바코드를 한..
두번째 과제 후기
·
C#
[실행 시간] 2025.11.06 - 2025.11.07[학습 내용]1. Timer 객체를 사용한 객체 자동 생성 기능Timer 객체를 생성하여 원하는 간격으로,간격마다 실행되는 이벤트를 설정하여 타이머 객체를 시작하도록 설계2. [타이머 기능] 외부 서비스 분리Timer.cs 클래스를 생성하여타이머 시작/정지 등 타이머와 관련된 기능만 따로 관리할 수 있도록 분리메인 View에서 [시작]버튼을 누르면Timers 클래스의 TimerStart 함수가 실행.TimerStart는 OnStudentTimer함수 실행.OnStudentTimer는 timer 설정값 세팅 후 타이머 시작해당 타이머의 Tick은 timer_Tick 함수 실행timer_Tick은 timerD 델리게이트로 invoke를 일으킴timerD..
조회 기능 Lookup 함수 - 2가지 버전
·
카테고리 없음
1. static 변수 사용 private void btn_lookup_Click(object sender, EventArgs e) { DataGridView grid = new DataGridView(); int rowIndex = MainGrid.CurrentCell.RowIndex; string name = MainGrid.Rows[rowIndex].Cells[0].Value.ToString(); // 이름 int age = Convert.ToInt32(MainGrid.Rows[rowIndex].Cells[1].Value); // 나이 string maj..
과제2: 서비스 로직 분리전
·
카테고리 없음
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;namespace Student2{ public partial class MainForm : Form { Timers timers = new Timers(); private Timer studentTimer; DataTable table = new DataTable(); Create ..