ecs/pos 네트워크 인쇄 파이썬 스크립트.

텍스트를 입력하면, 이미지로 변환해, 프린터 합니다. 네트워크 IP 주소로 연결합니다. 프린터 폰트, 폰트사이즈, 용지좌우넓이 세팅할 수 있습니다. 폰트는 py 와 같은 파일에 있어야 합니다. 용지좌우넓이는 80mm 용지로 576으로 되어 있는데 글씨가 짤리면 512 로 설정합니다. 실행하려면 아래 라이브러리가 설치되어야 합니다. pip install pillow python-escpos import tkinter as tk from tkinter import messagebox from PIL import Image, ImageDraw, ImageFont from escpos.printer import Network import os class ReceiptPrinterApp :     def __init__ ( self , root ):         self . root = root         self . root .title( "ESC/POS Printer Text to Image" )         self . root .geometry( "450x450" )   # UI 요소가 늘어남에 따라 창 크기 확장         # --- UI 구성 ---         setting_frame = tk . LabelFrame (             root , text = "프린터 및 폰트 설정" , padx = 10 , pady = 10         )         setting_frame . pack ( fill = "x" , padx = 10 , pady = 5 )    ...

ESP32 S3 아두이노 디버깅.

보스 셋팅(보드 옵션, 파티션 등), 라이브러리 로깅 등의 정보가 필요할 때 사용합니다. - 보드 옵션. DebugLevel=verbose  사용한 보드가 DebugLevel 옵션을 지원하는지 체크하는 명령어.  arduino-cli --config-file arduino-cli.yaml board details -b esp32:esp32:esp32s3 esp32:esp32:esp32s3 는 사용할 보드로 변경합니다. 컴파일, sketch.yaml 에 fqbn 부분에 DebugLevel=verbose 을 추가하면 됩니다. fqbn: esp32:esp32:esp32s3:USBMode=hwcdc,CDCOnBoot=cdc,DebugLevel=verbose 아래처럼 상세한 보드 정보가 나오고, 사용하는 라이브러리의 로그도 보입니다. [2025-11-06 20:48:02] =========== Before Setup Start =========== [2025-11-06 20:48:02] Chip Info: [2025-11-06 20:48:02] ------------------------------------------ [2025-11-06 20:48:02]   Model             : ESP32-S3 [2025-11-06 20:48:02]   Package           : 0 [2025-11-06 20:48:02]   Revision          : 0.02 [2025-11-06 20:48:02]   Cores             : 2 [2025-11-06 20:48:02]   CPU Frequency...

Arduino CLI ESP32-S3-WROOM-1 N16N8 ota update 파티션 설정하는 방법.

파티션 설정 방법. 파티션 테이블 확인 방법. ================================== 파티션 설정 방법. ================================== esp32의 오프셋 규칙이 있어, 맞춰서 설정해야 함. ESP32-S3-WROOM-1 N16N8 ota update  app는 5m, nvs는 512KB 로 설정함. 저는 필요성이 있어 nvs를 많이 크게 잡았습니다.  partitions.csv # Name,   Type, SubType, Offset,     Size,       Flags otadata,  data, ota,     0x9000,     0x2000, app0,     app,  ota_0,   0x10000,    0x500000, app1,     app,  ota_1,   0x510000,   0x500000, nvs,      data, nvs,     0xA10000,   0x80000, spiffs,   data, spiffs,  0xA90000,   0x570000, partitions.csv 파일을 프로젝트 폴더의 filename.ino 와 같은 폴더에 위치 합니다. 이러기만 해도 다른 설정을 무시하고 자동으로 적용되는 거 같습니다. 하지만 더 정확히 하기 위해 sketch.yaml 의 설정을 다음과 같이 합니다. fqbn: esp32:esp32:esp32s3:PartitionScheme=custom,FlashSize=16M (예제를 위해 다른 설정을 지웠습니다.)  ...

Arduino CLI 윈도우에서 포터블로 사용하기.

arduino-ide_2.3.6_Windows_64bit 기준으로 작성 했습니다. 이 문서는 다음 항목으로 구성 됩니다. 설치. 자주 사용하는 명령어. 사용법. 명령어. ======================================= 설치. ======================================= - Arduino CLI 다운로드. https://www.arduino.cc/en/software/ 에서 arduino-cli_#.#.#_Windows_64bit.zip 을 다운로드 받아 압축을 풉니다. #는 버전번호로 최신버전을 받으면 됩니다. - 이 다음부터는 아래 폴더구조라고 가정합니다.  폴더는 아래 설정에 따라 설치 중에 자동으로 만들어 집니다.  D:\Tools\ArduinoCLI\   ├─ arduino-cli.exe        ← ZIP에서 꺼낸 실행 파일   ├─ arduino-cli.yaml       ← 포터블 설정 파일(직접 만듦)   ├─ data\                  ← 코어/툴/캐시(Arduino15 대체)   ├─ user\            ← 스케치/라이브러리   └─ libraries\               ← 실행용 배치파일(선택) - arduino-cli.yaml 파일 생성. arduino-cli.exe config init --config-file .\arduino-cli.yaml - arduino-cli.yaml 편집.  아래와 같이 편집해 주세요. 자세한 설명은 URL을 참조하세요. https://docs.arduino.cc/arduino-cli...

c언어 int, unsigned long, int32_t, uint32_t 차이

int 크기(비트)가 플랫폼에 따라 다름. (최소 16비트) ESP32, 윈도우, 리눅스, macOS (32/64비트) 등 대부분의 최신 시스템에서는 32비트 (4바이트)입니다. 부호 지원. int i = -10; unsigned long 크기(비트)가 플랫폼에 따라 다름. (최소 32비트) ESP32 32비트, 윈도우 x64 32비트 (4바이트), 64비트 리눅스/macOS에서는 64비트 (8바이트)입니다. 부호 지원되지 않아 양의 수만 가능. uint32_t u = unsigned, int = integer, 32 = 32 bits, _t = type 크기(비트)가 항상 32비트 (4바이트) 부호 지원되지 않아 양의 수만 가능. 이 타입을 사용하기 위해서는 <stdint.h> (C) 또는 <cstdint> (C++) 헤더 파일을 포함해야 합니다. 크기가 명확해야 할 때 사용함. int32_t uint32_t 와 부호만 다름. 부호 지원. int32_t i = -10;

c언어 const, constexpr 차이

  const 이 변수는 초기화된 후에는 절대 변경할 수 없다. 이 값은 런타임에 결정될 수도 있습니다. 파일에 있는 설정 값을 읽어와 초기화 하는 경우. int getUserInput() {     int input;     std::cin >> input;     return input; } // 런타임에 값을 받아 const 변수 초기화 const int MAX_VALUE = getUserInput();  constexpr 이 변수는 컴파일 타임에 값이 결정되며, 절대 변경할 수 없다. 이 값은 반드시 컴파일 시점에 알아야 합니다. 컴파일 할 때 이미 그 값을 숫자로 대체할 수 있어 최적화에 유리 합니다. constexpr int x = 100;

아두이노 프로젝트 폴더 설명.

 v. Arduino IDE 2.3.6 ------ 추가. 라이브러리를 프로젝트 폴더에 추가하려면 src, libraries 폴더에 있는 라이브러리를 include 하기 위해서는 전체 경로를 써줘야 합니다. #include "src/MyLibrary/src/MyLibrary.h"  뭔가 오락가락 하는거 같습니다. https://github.com/arduino/Arduino/issues/5186 ------ 폴더 이름 주 사용 위치 IDE/빌드 시스템 동작 주 용도 src 스케치 / 라이브러리 컴파일 대상에 포함 핵심 소스 코드 (.h, .cpp) utility 라이브러리 컴파일 대상에 포함 라이브러리 내부 보조 코드. 권장하지 않음. data 스케치 파일 시스템에 업로드 (컴파일 X) 웹페이지, 설정 파일 (.html, .json) examples 라이브러리 IDE '예제' 메뉴에 표시 라이브러리 사용 예제 (.ino) docs 스케치 / 라이브러리 무시 (인식 안 함) 프로젝트 문서 (Markdown, PDF) tests 스케치 / 라이브러리 무시 (인식 안 함) 유닛 테스트 코드 extras 기타 무시 (인식 안 함) 기타 자료 (데이터시트, 3D 모델) schematics 스케치 / 라이브러리 무시 (인식 안 함) 하드웨어 회로도 assets 스케치 / 라이브러리 무시 (상황에 따라 다름) 리소스 파일 (이미지, 폰트 원본) 1. 아두이노 IDE가 특별하게 인식하는 폴더. 이 폴더들은 아두이노 IDE가 컴파일하거나 메뉴에 표시하는 등 특별한 기능을 수행합니다. - src 아두이노의 공식 스펙은 src를 표준으로 권장합니다. 이 폴더 안의 모든 .c, .cpp 파일은 스케치와 함께 자동으로 컴파일됩니다.  .ino 파일이 너무 길어질 때 코드를 기능 별로 분리하거나, 해당 스케치에서만 사용할 라이브러리를 넣을 때 사용합니다. 하위 폴더를 자유롭게 둘 수 있고, 아키텍처별 코드를 src/arch/avr, src/arch/e...