SW 16

이중 포인터 콜백함수

다른 c파일의 파라메터 넘기기 위해 사용. #include #include // ========= ex.c ========== uint8_t buf[32] ={0x11,0x12, 0x33,}; void (*p_func)(uint8_t); void porcess(uint16_t cmd,uint8_t data ) { if(cmd ==1 ) data += 1; else data -= 1; if(p_func != NULL) { // 원래 함수에 추가적인 기능을 콜백함수로 등록 p_func(data); } } void setCallback(void (*p_func_para)(uint8_t) ) { p_func = p_func_para; } void pp_test (uint8_t **pp_buf1, uint8_t ..

SW/C 2022.11.20

[MFC] 단축키 설정.

해당 키 기능 추가. 몇가지 시스템 키는 동작안됨...F10.. BOOL CMainFrame::PreTranslateMessage(MSG* pMsg) { // TODO: 여기에 특수화된 코드를 추가 및/또는 기본 클래스를 호출합니다. CString strinfo; if (pMsg->message == WM_KEYDOWN) { d_msg("pMsg->wParam %x\n", pMsg->wParam); if (pMsg->wParam == VK_ESCAPE) return TRUE; else if (pMsg->wParam == VK_RETURN) return TRUE; else if (pMsg->wParam == VK_F1) { strinfo.Format("F1 키"); m_pView->InfoMsg(strin..

SW/MFC 2021.10.25

파이썬 씨리얼 통신 / 챠트 그리기 Serial Chart / RS-232 UART 통신 / Python Serial

시간 날때마다 Pyside 로 한번 만들어본 시리얼 통신 프로그램 파이썬은 라이브러리가 잘 되어 있어 개발이 쉽고 편하다. 기본 시리얼 통신은 아래 소스로 참고했고 https://github.com/y252328/ATerm GitHub - y252328/ATerm: A simple serial terminal implemented in Python A simple serial terminal implemented in Python. Contribute to y252328/ATerm development by creating an account on GitHub. github.com 챠트는 파이썬 유명한 matplot 사용함. 1번에 챠트 파싱할 조건 추가. 첫 글자는 파싱 하기위한 영문자 이후 숫자로 되..

SW/Python 2021.09.10

구조체 memset 시 에러 발생

구조체 내부에 CString 있는 경우, 초기 전체 구조체 memset 문제 발생됨. - 액세스 위반 메모리 접근 위반됨. - 되도록 char*, TCHAR[] 사용 m.blog.naver.com/PostView.nhn?blogId=dimigozzang&logNo=220295830390&proxyReferer=https:%2F%2Fwww.google.com%2F 구조체에 CString 있을 땐, ZeroMemory 안 되요 ! 눈으로 봐서는 문제가 없는 코드가 있지만 간혹 에러가 뜨는 경우가 있다.. 이럴땐 디버깅으로 눈을 크게 ... blog.naver.com

SW/MFC 2021.05.06

비 정적 멤버 호출하는 방법. (this 사용)

클래스 내 static 선언되지 않은 함수를 사용하는 방법 해당 클래스 전역 포인트 변수로 선언후 this로 받아 사용. ActivationTimer* _This = NULL; // 전역 포인트 변수 // 생성자 클래스 내부에 this 처리. ActivationTimer::ActivationTimer(const unsigned long msTimeout, int runcount, void* pNewFunc, void* pParam) { if (_This == NULL) _This = this; ... } void TaskList::CallTask(const int num) { Task* task = operator[](num); if(task->runcount == 0) _This->RemoveTask(..

SW/MFC 2021.03.29

다이알로그(클래스) 생성(Create, DoModal) / 상호 데이터 전달 / 부모 자식

다이알로그 생성 방법 및 차이 다이얼로그 추가하고 해당 클래스 생성. 1. DoModal 방식 - 생성방법 : 해당 다이얼로그 클래스 include 하고 생성후 Domodal() 호출. CSetCalDlg Dlg; // 다이알 로그에 pubic 설정 변수 추가후. 실행전 데이터 복사. memcpy(&Dlg.setParam, &pMainFrame->m_setDev, sizeof(Dlg.setParam)); int ret = Dlg.DoModal(); if (IDOK == ret) { // 다이알로그 ok 버튼시 데이터 복사. memcpy(&pMainFrame->m_setDev, &Dlg.setParam, sizeof(Dlg.setParam)); d_msgl("Dmm %d Can %d Jig %d", pMa..

SW/MFC 2021.03.27

날짜, 시간 비교 처리 DateTime.Compare

https://docs.microsoft.com/ko-kr/dotnet/api/system.datetime.compare?view=netcore-3.1 DateTime.Compare(DateTime, DateTime) Method (System) 의 두 인스턴스를 비교하고 첫 번째 인스턴스가 두 번째 인스턴스보다 빠른지, 같은지, 늦은지를 나타내는 정수를 반환합니다.Compares two instances of and returns an integer that indicates whether the first instan docs.microsoft.com 비교에 따라 -1, 0, 1을 리턴하는데 시작시간과 끝내는 시간 처리할 경우, 0과 1일 경우만 동작 처리하면 된다. (-1은 무시) using Sys..

SW/C# 2020.08.11

바이트 byte 버퍼 저장.. 통신 처리에서 사용.

통신 프로토콜 처리시 아스키 문자와 byte 혼합하여 사용할때... String을 byte 로 변환하면 128자 이상부터 깨짐.. 꼼수로 String을 byte 형태로 저장 후 계산 처리할때 실제 byte 로 변환하여 처리함. private string RcvStrData = string.Empty; private void TcpClient_DataRecived(object sender, SimpleTCP.Message e) { string RxString = string.Empty; string strDateLen = DateTime.Now.ToString("[HH:mm:ss:fff (") + Convert.ToString(e.Data.Length) + ")]"; for (int i = 0; i < e..

SW/C# 2020.08.10

문자열16진수를 바이트 형태로 변환 / 특정 문자로 바이트 분리

// 16진수 문자열형태를 16진수 바이트형태로 저장... string str = "4D 42 43 52 47 30 30 36 30 30 39"; byte[] test = str.Split(' ').Select(s => Convert.ToByte(s, 16)).ToArray(); // ======== 바이트 분리 ==================== //MBCR char[] splitId = { 'M', 'B', 'C', 'R' }; List result = new List(); int start = 0; for (int i = 0; i < test.Length; i++) { if ((test[i] == splitId[0] && test[i+1] == splitId[1] && test[i + 2] == ..

SW/C# 2020.08.08

string byte copy 스트링 바이트 복사 Array.Copy 조합, combine

string 문자열과 int 를 byte 배열로 변경....통신에 사용. using System; using System.IO; using System.Text; class MainClass { public static string ByteToString(byte[] strByte, int len) { string str = Encoding.Default.GetString(strByte, 0, len); // 아스키 문자이상은 깨짐...0x128 return str; } public static byte[] StringToByte(string str) { byte[] StrByte = Encoding.UTF8.GetBytes(str); return StrByte; } static string BytesT..

SW/C# 2020.07.27