일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 설계 시작
- string 한계
- 명령어 블록
- string 초기화
- 스마트팜
- 8x8 matrix
- 근태 자동
- 캐드 시작
- 지각하면 안됨
- 그레도 경험인가?
- C#
- string길이
- r.h_jeong
- 어떻게 설계를 시작할까?
- toyproject
- 슈도코드
- pseudocode
- 칼퇴 가능??
- 워크스테이션
- EFECS
- 캐드 꿀팁
- GTX 1060
- 캐드 기본기
- 기본기 충실
- 토이프로젝트
- 공장 자동화 시스템
- 할일이 많다
- 캐드 블록
- 설계
- smartfarm
- Today
- Total
목록전체 글 (18)
경험을 통해서
항상 그렇지만 뭔가를 만드는 건 재미가 있어야 끝까지 간다.그 재밌는 걸 찾는게 힘들더라고... 그래서 생각한 근태 자동화 먼저 방법을 찾아보자~ 생각보다 간단할 수 있지만 예외 컨트롤이 제일 어려움.... 1. 우리 회사 근태 등록은 컴퓨터에서 진행함(그래서 가능함) 회사 내부망에서만 접근 가능한 메신저~!~ 접근 방식은 다음과 같다:1.근태 프로그램이 켜져 있는 걸 감지하고 winstate를 FHD로 만든다그럼 화면 내에 근태 단어를 찾는다근태를 클릭한다그리고 추가로 뜨는 화면에서 출근을 클릭한다.2.1번과 처음 메신저창을 FHD로 만드는 건 같다마우스의 위치를 조정한다(멀티 윈도우지만 무조건 근태 프로그램을 메인 화면에 키는게 중요함)그렇게 되면 근태 버튼의 위치가 무조건 정해진다.그럼 커..
최근 로드셀에서 올라오는 데이터를 수집하고 가공하면서 드는 생각을 정리 해야겠다 싶어 적는다., 보통 중량계에서 RS 통신이나 이더넷 통신으로 데이터를 수집할 때 보통 300ms에서 길어봤자 500ms 정도 이다. 그리고 로드셀의 상태 값과 중량을 ASCII로 표현하여 송신한다.(간혹 hex로 들어오는 경우도...) => 다시 MQTT로 돌아와서 애초에 MQTT의 특징이 IoT의 특화된 메시징 프로토콜이라 큰 용량의 메시지 보단 작은 용량의 메시지를 기준으로 작업을 한다. 이번 프로젝트도 그걸 간과해서 일어난 일 이겠지... 총 26 군데에서 들어오는 중량의 값을 실시간으로 '한'개의 브로커에서 받을 생각을 하니.... 뭐든 테스트는 정말 극악의 환경에서 진행해야한다서버 PC의 램을 96기가..
지난 포스트에 이어서 계속 프로젝트를 진행하던 중... 프로그램이 꺼짐(숨고 싶다.._).... 센서와 300ms 간격으로 데이터를 주고 받는데....센서 데이터가 인식이 안됨.... 데이터는 겁나게 잘들어온다... 지금 필터로 인식이 된 부분만 걸러 낸건데...(csv 파일) 여기서부터,.,.. 키포인트 이걸 안해줌,.,... 출처 :https://learn.microsoft.com/ko-kr/cpp/c-language/maximum-string-length?view=msvc-170 최대 문자열 길이자세한 정보: 최대 문자열 길이learn.microsoft.com 근데... fRec_Flow의 배열의 수는 16개 저걸 12시간 켜놨으니...시간(초) = 12*60*60초당 약 3번그게 16개......
간만에 소스 분석 시간~~ 판정 프로그램 보고 있었는데 1년의 시간과 노력이 보상(?) 아님 헛... 어쨋든 뭔갈 알았다... (왜 스레드가 무조건 안될 거라 생각 했는지...) 스레드 파라미터 은근히 중요한게 이유가 있다:(개인 적인 의견임 )1. 스레드 번호 부여 - 스레드에게 ID가 있다고 하지만 파라미터에 int 하나만 넣어주면 배열 쓰기 편함...2. 과거 Tcp 통신 비동기 통신 할때 - 지금은 Task 방식을 쓰지만 옛날에 Tcp 사용 할때 소켓만 파라미터로 넘겨 줬더라면... ㅠㅠㅠ - 소켓 30개만 열어보면 index가 많이 중요함...(다른 분들은 어떻게 처리하는 지 모르지만.../ Dictionary 처리해서 코드 복잡해 지는 것보다.. 나은거 같음) 그리고 스레드 인스턴스 시에 ..
요즘 진행 중인 프로젝트는 자이로 센서를 이용한 모터 오작동 감지 센서의 개수가 32개!!..... 그럼 소켓을 총 32 채널을 열어야 한다는 말이다... 또 Tcp 통신을 사용하다 보면 Reconnection이 매우 중요하다..고민하다 고민 하다 Dictionary와 Tuple을 같이 사용하려고 했는데.....(여기서 문제임...) ... 위에 보면 tuple의 타입 개수는 총 3개 - 연결 상태와 채널의 번호, 그리고 해당 Tcpclient 소켓을 받아서 저장해서 사용하는 중이었는데.. Timer를 사용하여 연결 상태 값을 조회하여 false 전환 시에 Reconnection try 문을 작성하는 중이었는데.. 문제가 생겼다... 문제는 타이머와 connection Task와의 혼선... 타이머는..
델파이의 소켓 컴포넌트를 경험하고 난 후 그래도 c#에서도 그런 컴포넌트를 찾기보다 한번 해당 코드를 실제 업무에서도 적용 시켜보고 싶어서 작성 해봤다 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; using System.Net; using System.Net.Sockets; using System.Threading; namespace TCP_model { public pa..
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; using System.Net; using System.Net.Sockets; using System.Threading; namespace TCP_model { public partial class Form1 : Form { Socket fSocket; Thread fRec_thread; Thread fReconnection; ..
개인적으로 프로그램을 현업에서 만들면서 C#의 장점을 들면 스레드를 첫번째로 떠올리곤 한다 기계제어와 스마트 팩토링 분야에서 일하고 있다보니 백그라운드에서 바이패스나 로깅을 기능을 중점으로 둔 프로그램을 자주 만들곤 한다. 현재 쓰고 있는 언어는 Delphi와 C#을 번갈아 가면서 쓰면서 스레드 기능이 사용하기 어려운 Delphi는 타이머로 대체해서 쓰곤 한다. 일정한 시간 주기로 작업 진행할 수는 없지만 소켓 서버나 패킷등의 바이트 값들을 저장하기에는 더없이 편할 수가 없다 메인 스레드에 크게 영향이 없어 쓰기가 편하다. 스레드를 사용하면서 오류 사항 및 해결 방법들을 노트 겸 올려 놓고자 한다. private void psThreading1() { while (fConnection) { fCnt++;..