본문 바로가기

분류 전체보기894

C#, WinForms ] PictureBox 위의 Label 배경색 투명하게 설정하기 디자이너에서 단순히 label의 BackColor를 Transparent 로 지정되도 투명하게 오버레이되지 않는다. 방법은 label 의 Parent 속성을 label 뒤에 있는 컨트롤로 변경해주는 것이다. label1.Parent = pictureBox1; label1.BackColor = Color.Transparent; 단, label을 생성하면 디폴트 Parent 속성이 Form 인데 PictureBox로 바꾸었으니 Location 위치도 바꾸어 주어야 한다. (0, 0)이 PictureBox의 좌상단이다. 2023. 1. 29.
STM32 ] CAN 송수신 + Acceptance Filter CAN 통신 설정 이전글 : 2023.01.27 - [DSP, MCU/STM32 (ARM Cortex-M)] - STM32 ] CAN 통신 설정 (bxCAN peripheral) STM32 ] CAN 통신 설정 (bxCAN peripheral) HTML 삽입 미리보기할 수 없는 소스 STM32F4xx 시리즈에는 bxCAN이라고 불리는 CAN 모듈(컨트롤러)이 2개 있으며 특징은 다음과 같다. 2 CAN Controllers are avialable. CAN1 and CAN2 CAN1 is called Master bxCAN and CAN2 is c eteo.tistory.com HTML 삽입 미리보기할 수 없는 소스 내가 사용한건 SN65HVD230 CAN 트랜시버 모듈이다. CAN1과 CAN2 둘 다 .. 2023. 1. 29.
빅스비로 제어 가능한 Wifi 스마트 스위치 설치기 (No 중성선) 이전까지는 빅스비로 전등을 제어하는 데 sonoff 라는 제품을 사용했다. 이 제품의 단점은 설치 후 스위치로는 더이상 불을 켜고 끌 수 없고 항상 스위치를 on 상태에 두어야 한다는 데 있다. 대기전력이 크지는 않지만, 급할 때도 항상 핸드폰을 찾아 켜고 꺼야 한다는 점은 불편할 수 밖에 없다. 그래서 이번에 이사한 김에 sonoff를 버리고 집 스위치를 다 스마트 스위치로 바꾸었다. 1. 알리 익스프레스에서 중성선이 필요없는 터치식 스마트 스위치를 구입한다. 제품 링크 : https://www.aliexpress.com/item/4000192490763.html?spm=a2g0o.order_list.order_list_main.10.21ef18025YgPhX 주문한지 4일만에 제품이 도착하였다. 차단.. 2023. 1. 28.
티스토리 ] 400 Bad Request 해결법 원인은 브라우저의 쿠키가 너무 많이 쌓여있는 탓 브라우저의 "인터넷 사용 기록 삭제" 페이지로 간다. 구글 크롬의 경우 단축키 Ctrl + H 쿠키를 삭제 후 접속을 재시도하면 된다. 2023. 1. 28.
STM32 ] CAN 통신 설정 (bxCAN peripheral) HTML 삽입 미리보기할 수 없는 소스 STM32F4xx 시리즈에는 bxCAN이라고 불리는 CAN 모듈(컨트롤러)이 2개 있으며 특징은 다음과 같다. 2 CAN Controllers are avialable. CAN1 and CAN2 CAN1 is called Master bxCAN and CAN2 is called Slave Both supports CAN protocol version 2.0A and B Bit rates up to 1 Mbit/s Three transmit mailboxes Two receive FIFOs with three stages 28 filter banks shared between CAN1 and CAN2 Tx mailboxes 유저가 CAN 메시지를 구성해 담을 수 있는.. 2023. 1. 27.
PC(Windows)에 삼성노트 앱 설치 (Microsoft Store 에 다운로드 버튼이 없을 때 해결법) PC(Windows)에 삼성노트 앱 설치하기 마이크로소프트 스토어 에서 삼성 노트 앱을 다운받으려고 하지만 다운로드 및 설치 버튼이 없을 때 사용할 수 있는 해결법입다. 1. 아래 화살표 버튼을 클릭한다. 2. 링크 복사 를 클릭한다. 3. 아래 사이트에 접속한다. 사이트 주소 : https://store.rg-adguard.net/ Microsoft Store - Generation Project (v1.2.3) [by @rgadguard & mkuba50] Online link generator for Microsoft Store. You can use it to get links to almost all apps, games, themes from the Microsoft Store. store.r.. 2023. 1. 27.
[UML] 시퀀스 다이어그램 (Sequence Diagram) 시퀀스 다이어그램은 특정 행동이 어떠한 순서로 어떤 객체와 어떻게 상호작용을 하는지 표현하는 행위 다이어그램입니다. 현재 존재하는 시스템이 어떠한 시나리오로 움직이고 있는지를 나타내는데 장점을 가지고 있습니다. 시퀀스 다이어그램을 이용하면 API 등의 유즈 케이스를 디테일하게 알 수 있고 타 시스템의 API 호출 등의 로직을 모델링할 수 있어 시나리오를 파악하기 좋습니다. 예를 들어, 고객이 29CM 사이트 주문을 했을 때 고객이 주문한 시점부터 29CM 사이트의 주문 처리 순서, 이후 반환 케이스를 연속적으로 표현할 수 있습니다. 📁 Lifeline 모델링 되는 인스턴스를 나타냅니다. Lifeline은 네모와 점선으로 이루어져 있으며 네모가 객체의 관점으로 표현했다면 클래스이고 서비스 관점으로 표현했으.. 2023. 1. 27.
TMS320F28388D ] IPC 사용하여 CPU1과 CPU2 타이머 Tick 값 Synchronization CPU1 코드 // ... IPC_clearFlagLtoR(IPC_CPU1_L_CPU2_R, IPC_FLAG_ALL); IPC_sync(IPC_CPU1_L_CPU2_R, IPC_FLAG31); msTick = 0; CPUTimer_startTimer(CPUTIMER0_BASE); // ... CPU2 코드 // ... IPC_clearFlagLtoR(IPC_CPU2_L_CPU1_R, IPC_FLAG_ALL); IPC_sync(IPC_CPU2_L_CPU1_R, IPC_FLAG31); msTick = 0; CPUTimer_startTimer(CPUTIMER0_BASE); // ... 두 코어간 동기화를 위한 API인 IPC_Sync() 함수 내부는 다음과 같다. //! Synchronises the two .. 2023. 1. 26.
CAN 통신 - 메시지 타입과 구조 CAN 통신 이전글 : 2023.01.24 - [DSP, MCU/펌웨어공부] - CAN 통신 (Controller Area Network) CAN 통신 (Controller Area Network) HTML 삽입 미리보기할 수 없는 소스 CAN 통신(Controller Area Network)은 1980년대 Bosch사에 의해 개발된 메시지 기반 네트워크 프로토콜으로, 차량 내에서 호스트 컴퓨터 없이 마이크로 컨트롤러나 장치 eteo.tistory.com HTML 삽입 미리보기할 수 없는 소스 Data Frame Remote Frame Error Frame Overload Frame 이 중 Error Frame 과 Overload Frame 은 컨트롤러가 알아서 처리하므로 프로그래밍 할 때는 주로 Dat.. 2023. 1. 26.
Notepad ] HEX-Editor 플러그인 사용 플러그인 - 플러그인 관리 hex 검색 후 HEX-Editor 설치 플러그인 - HEX-Editor - View in HEX 2023. 1. 25.
파워포인트 ] 개체 관리, 그룹/그룹해제 쉽게 하기 Alt+F10 을 눌러 개체 선택 창 표시 개체 순서 변경 개체가 둘 이상 겹쳐있는 경우 목록에서 위에 있는 개체가 앞에 표시됨 목록에서 하나 이상의 항목을 클릭한 상태에서 드래그 앤 드롭으로 개체의 순서를 변경할 수 있음 그룹화 Ctrl+Click 으로 그룹화할 항목들을 선택한 후 서식 탭에서 그룹을 선택해 그룹화 가능 2023. 1. 25.
TMS320F28388D ] RAM에 NOINIT 변수 두기 불가 Reset으로 초기화 되지 않는 램 영역에 변수를 둬서 리셋 카운트값을 저장하려고했다. 링커커맨드파일에 type=NOINIT 으로 섹션 타입을 지정할 수 있어 그렇게 했는데도 여전히 0으로 초기화된다. 찾아보니 ECC(Error Correction Code)/Parity 가 적용된 RAM 영역(M0, M1, LSx, GSx, MSGRAM 등)은 부트 과정에서 부트 롬에 마스킹된 부트코드에 의해 0으로 초기화(Clear) 된다고한다. TRM p.699 power-on reset 말고 디버거 리셋시에는 intialized 되지 않는 듯하다. 2023. 1. 25.
TMS320F28388D ] USB 라이브러리 USBHCDPipeRead()에서 무한루프 빠지는 문제 usbhostenum.c uint32_t USBHCDPipeRead(uint32_t ui32Pipe, uint8_t *pui8Data, uint32_t ui32Size) { // ... while(ui32RemainingBytes != 0) { // ... while(1) { // ... // If any error event occurs then exit out of the loop. if(g_sUSBHCD.ui32IntEvents & (INT_EVENT_DISCONNECT | INT_EVENT_VBUS_ERR | INT_EVENT_POWER_FAULT)) { // // Set the pipe state to error. // g_sUSBHCD.psUSBINPipes[ui32PipeIdx].iState.. 2023. 1. 25.
Git ] 원격 저장소에 강제 push 하기 (remote를 local로 덮어쓰기) local의 내용을 remote에 강제로 덮어쓰는 방법 git push -f git push origin master -f # Example 원격 저장소의 commit 정보가 유실될 수 있으니 -f(-force) 플래그를 붙이는데는 주의가 필요하다. remote에 예상 못한 commit이 있는 경우 force push가 실패하도록 하는 방법도 있다. git push --force-with-lease Reference : https://stackoverflow.com/questions/10510462/force-git-push-to-overwrite-remote-files 2023. 1. 25.
CAN 통신 (Controller Area Network) HTML 삽입 미리보기할 수 없는 소스 CAN 통신(Controller Area Network)은 1980년대 Bosch사에 의해 개발된 메시지 기반 네트워크 프로토콜으로, 차량 내에서 호스트 컴퓨터 없이 마이크로 컨트롤러나 장치들이 서로 통신하기 위해 설계된 표준 통신 규격이다. HTML 삽입 미리보기할 수 없는 소스 Multi-master serial communication bus. Broadcast type of Bus. (Not point-to-point) Low cost solution. Extreme robustness. (noise-immunity) High data transmission speeds. (up to 1 MBit/sec, High speed CAN 기준) Reliabilit.. 2023. 1. 24.
Wireshark ] 패킷 간 간격 캡쳐 및 유용한 기능 패킷 간 간격 (Delta Time) 캡쳐하기  캡쳐 화면에서 우클릭 - Column Preferences  + 버튼 누르고 Delta time 추가 Type이 Delta time과 Delta time displayed 두 가지가 있는데 'Delta time displayed'를 선택해야 Display filter로 캡쳐된 패킷에 한해서 이전 패킷과의 간격을 표시한다. Time 열 바로 옆에 둔다.   이렇게 하면 직전에 캡쳐된 패킷과의 간격을 알 수 있다. 다만 필터를 잘 설정 해두어야 이 Delta time이 의미가 있다. 지금 캡쳐하는 패킷은 40Hz 전송하게끔 해두어서 간격이 대략 25ms 로 측정되고 있다.     기타 Wireshark 의 유용한 기능   열 우클릭해서 정렬하기       Ti.. 2023. 1. 20.
윈도우 배치파일(.bat) 만들기 (레지스트리를 통해 시작 프로그램에 등록) 및 유용한 명령어 윈도우 배치파일(batch file)은 명령 프롬프트(cmd)에서 순서대로 실행할 명령어들을 한번에 일괄로 실행 실행할 목적으로 만드는 명령어들의 집합 파일이다.    보통 윈도우 배치 스크립트는@echo off로 시작해서 이후 실행할 명령어들이 나열된다. 여기서@ 는 해당 명령어를 화면에 표시하지 말라는 뜻이고echo off 는 이후 실행할 명령어들을 화면에 출력하지 않기 위해 echo를 끄는 것이다.  그 다음으로 아래 문구 또한 배치파일 초반에 적어두는 경우가 많다.pushd “%~dp0”보통 배치파일 스크립트는 실행될 위치를 염두해 두고 상대경로로 작성을 하게 되는데, 관리자 권한으로 배치파일을 실행시 명령 프롬프트 위치가 C:\WINDOWS\system32 로 실행되기 때문에 의도한 결과가 나오.. 2023. 1. 18.
WinForms ] 체크박스, 라디오버튼 속성 Text AutoSize 이 값을 False로 하면 체크박스의 크기를 조절할 수 있다. 그리고 컨트롤의 CheckAlign / TextAlign 을 제대로 사용하기 위해 이 값이 False로 되어있어야 한다. CheckAlign Checked & CheckState True로하면 체크박스의 초기값을 체크된 상태로 할 수 있다. CheckState의 Interminate 은 ThreeState를 사용하는 것으로 사용자가 아무런 클릭을 하지 않았을 때의 상태를 말하는 것인데, 그냥 Checked or Unchecked 의 TwoState를 사용하는 것이 낫다. Cursor Enabled Appearance 확인란의 모양을 버튼모양으로 바꿀 수 있다. Image ImageAlign TextAlign Font .. 2023. 1. 16.
WinForms ] 콤보박스, 리스트박스 속성 아이템 추가 DropDownStyle DropDown : 사용자가 커서를 두고 직접 입력할 수 있으며, 옵션을 선택할 수도 있다. DropDownList : 사용자가 입력할 수 없고, 아이템을 선택할 수만 있다. Simple의 경우 아래처럼 콤보박스의 길이를 늘려 아이템이 다 보이게끔 할 수 있다. DropDownHeight 드롭다운의 픽셀 단위 높이이다. 예를들어 기본값에서 50픽셀로 줄이면 아래와 같이 표현된다. Sorted 이 값을 True로하면 콤보박스의 항목인 문자열을 알파벳 순으로 정렬할 수 있다. 한번 정렬를 하고나면 Sorted를 다시 False로 바꿔도 정렬된 순서가 그대로 남는다. ListBox 는 드롭다운이 없는 콤보박스와 같다. 2023. 1. 15.
C ] sscanf() 사용법 %d : 공백으로 구분된 문자열을 정수로 읽어들인다. %s : 공백으로 구분된 문자열을 문자열로 읽어들인다. %*s : 공백으로 구분된 문자열을 읽어들이지 않고 건너뛴다. #include #include int main(void) { char *str = "ABC 123"; int num = 0; sscanf(str, "%*s %d", &num); printf("%d\n", num); } %[A] : 현재 위치에서 문자 A가 있는 경우 A를 문자열로 읽어들인다. %*[A] : 현재 위치에서 문자 A를 읽어들이지 않고 건너뛴다. %[^B] : 현재 위치에서 문자 B 직전까지 문자열로 읽어들인다. %*[^B] : 현재 위치에서 문자 B 직전까지를 읽어들이지 않고 건너 뛴다. (포인터는 B 위치) #inclu.. 2023. 1. 15.
C ] strtol, strtoul : 정수 문자열을 진수 선택하여 long/unsigned long 값으로 변환 (2진수, 8진수, 10진수, 16진수) strtol strtol 함수는 정수로 구성된 문자열 str을 세번째 파라미터인 진수체계로 판단하여 long 형식 값으로 반환한다. 더이상 계산할 수 없는 문자를 발견하면 두번째 파라미터인 endptr에 해당 위치를 저장한다. #include long strtol (const char* str, char** endptr, int base); - 파라미터str : long 형식 값을 구할 문자열endptr : 계산을 끝낸 위치를 저장할 문자열 포인터base : 진수- 리턴 값 : 계산된 long 형식 값 #include #include int main(void){ char src[100]="123 ff 16 1001 -10"; char *pos=NULL; long value1=0,value.. 2023. 1. 15.
C ] strtok, strtok_r : 구분 문자로 문자열 쪼개기 strtok 함수는 문자열을 구분문자(delimiter) 단위로 쪼개는데 사용되는데 이렇게 쪼개진 문자열을 토큰(token)이라고 한다. str에 쪼개고자 하는 문자열을 전달하면 str의 가장 첫번째 문자가 토큰의 시작이 되고 delim에 포함된 문자들 중 하나를 만나는 곳이 토큰의 마지막이 되며, 원래 delimiter가 있었던 토큰의 마지막을 null-terminted 하고 토큰의 시작 주소를 리턴한다. strtok 함수는 내부에 static 변수로 str 문자열에서 작업을 끝낸 다음 위치를 기억하고 있기 때문에, 이 다음에 str인자로 NULL을 전달하며 호출하면 이전에 찾았던 토큰 바로 다음 문자부터 시작해서 분리작업을 진행한다. 그러다 맨처음에 전달된 str 문자열의 NULL 문자에 도달하게 되.. 2023. 1. 15.
float to hex, hex to float 변환 사이트 https://gregstoll.com/~gregstoll/floattohex/ Floating Point to Hex Converter gregstoll.com Floating Point to Hex Converter 엔디안 변환도 가능하다. float value 가 2면 부호비트 0, 지수부 bias(127)+1=128, 가수부는 전부 0해서 0x40000000 이고 리틀엔디안으로 표시하면 0x00000040 으로 표시를 해야 맞는데 2023. 1. 14.
TMS320F28388D ] 터미널 모니터와 메모리 덤프 터미널 모니터란 시스템의 상황을 모니터하고 터미널에 명령어를 쳐서 여러가지 일을 수행하게끔 하기 위해 윈도우의 명령프롬프트 처럼 MCU에 Command Line Interface를 구현 것을 말한다. 내가 직접 구현한건 아니고 유튜버 baram 님의 영상을 보고 공부하려고 아래 출처 stm32 코드를 가져와 이식했다. 출처 : https://github.com/chcbaram/stm32f411 GitHub - chcbaram/stm32f411 Contribute to chcbaram/stm32f411 development by creating an account on GitHub. github.com C28x 코어는 데이터 타입이 STM32와 달라서 주의할 부분이 있다. char 가 2 byte, int.. 2023. 1. 10.
Windows Forms 시작하기 - 컨트롤의 주요 속성 도구상자 - 모든 Windows Forms - Button 생성 Iconfinder 사이트에서 이미지를 찾고 버튼 우클릭 - 속성을 누른뒤 해당 이미지를 추가한다. More sizes 를 누르면 더 다양한 px 이미지를 다운받을 수 있다. Image Image 밑의 ImageAlign을 눌러 버튼에서 이미지를 위치시킬 곳을 선택할 수 있다. Text Text 를 입력하고 TextAlign 도 선택한다. Font Font 를 굵게 설정하였다. Cursor Form 의 기본 커서는 Arrow 인데 버튼의 커서는 hand로 설정해준다. 버튼에 커서를 올렸을 때만 hand 모양으로 바뀌는 것을 볼 수 있다. Visible False 로 설정하면 사용자가 해당 버튼을 볼 수 없다. Enable False 로 설정.. 2023. 1. 7.
Windows forms 시작하기 - form 속성 새 프로젝트 만들기 - Windows Forms 앱(.NET Framework) 선택 .NET Framework 버전을 선택하고 프로젝트를 생성한다. 보기 - 도구상자 .cs 파일 오른쪽 클릭 - 속성 위의 화면에서 Form 또는 컨트롤을 더블클릭하면 아래와 같이 코딩을 할 수 있는 화면이 나오는데 여기서 또 다시 우클릭 - 디자이너 보기를 선택하면 전의 화면으로 돌아갈 수 있다. 프로젝트의 구조는 아래와 같다. .Designer.cs 파일은 Form에 컨트롤을 추가하거나 수정하면 코드가 자동생성되는 파일이고 그 밑의 .resx 파일은 문자열, 이미지, 개체 데이터가 포함된 리소스 파일이다. 속성 뷰에서는 비슷한 카테고리끼리 그룹핑된 항목별 나열 방식으로 볼 수 도 있고, 알파벳 순으로 볼 수도 있다. .. 2023. 1. 7.
unsigned int 형 tick 변수가 오버플로우 나는 날 unsigned type 4byte 자료형의 범위는 0 ~4,294,967,295 tick 변수가 s 를 표현하는 경우 대략 49,710일(136년)이 경과하면 오버플로우가 나고, tick 변수가 ms 를 표현하는 경우 대략 49.7일이 경과하면 오버플로우가 난다. 2023. 1. 7.
윈도우 소켓 ] 소켓 프로그래밍 용어 및 함수 정리 출처 : 윤성우의 열혈 TCP/IP 소켓 프로그래밍 소켓 생성시 필요한 매개변수 첫번째, 두번째 인자로 전달된 정보를 통해 소켓의 프로토콜이 사실상 결정되기 때문에 세번째 인자로 0을 전달해도 된다. 프로토콜 체계 소켓의 타입 1. SOCK_STREAM 중간에 데이터가 소멸되지 않고 목적지로 전송된다. 전송 순서대로 데이터가 수신된다. 전송되는 데이터의 경계가 존재하지 않는다 여러번의 write 함수호출을 통해 전송된 데이터를 한번의 read 함수 호출을 통해 전부 수신할 수 있고, 반대로 한번의 write 함수호출을 통해 전송된 데이터를 여러번의 read 함수 호출을 통해 수신할 수 있다. write/read 함수 호출 횟수가 큰 의미를 갖지 못한다. 수신된 데이터는 소켓에 존재하는 버퍼에 저장되고, .. 2023. 1. 1.
윈도우 소켓 ] TCP 에코 서버, 클라이언트 및 동작원리 TCP 서버의 함수 호출 순서 TCP 서버에서 listen 함수호출을 통해 연결요청 대기상태에 들어가면 클라이언트가 connect() 함수호출을 통해서 연결요청을 할 수 있다. int listen(SOCKET s, int backlog); s : 연결요청 대기상태에 두고자 하는 소켓 전달. 이 함수 인자로 전달된 소켓이 서버 소켓(리스닝 소켓)이 된다. backlog : 연결요청 대기 큐의 크기정보 전달, ex. 5가 전달되면 클라이언트의 연결요청을 5개까지 대기시킬 수 있다. 적절한 값은 실험적 결과에 의존해 결정하면 되고 일반적으로 웹서버와 같이 잦은 연결요청을 받는 서버의 경우 15 이상을 전달한다. listen 함수 호출이후 클라이언트의 연결요청이 들어왔다면, 들어온 순서대로 연결요청을 수락하고 .. 2023. 1. 1.
TMS320F28388D ] 링버퍼 사용 SCI 에코백 이전글 : 2022.12.30 - [DSP, MCU/TMS320F2838x (C28x)] - 링 버퍼 Circular Buffer 링 버퍼 Circular Buffer 링 버퍼를 구현하기위해선 큐를 먼저 알아야 한다. 큐는 FIFO(First In First Out) 구조로 먼저들어온 데이터가 먼저 나가는 구조이다. 이와 비교되는 자료구조는 LIFO(Last In First Out) 구조인 스택이 있다 eteo.tistory.com 먼저 링버퍼를 사용하지 않는 코드는 다음과 같다. main loop에서 Blocking 방식으로 에코백하는 버전 #include "driverlib.h" #include "device.h" void main(void) { uint16_t receivedChar; Device_.. 2022. 12. 30.