====== HOST PC 환경 설정 ======
개발 PC에서 CFHEADER API를 사용하여 만든 프로그램(App)을 HOST PC에서 안정적으로 실행하려면, HOST PC에 .NET 8 런타임이 설치하는 등 환경설정을 해주셔야 합니다.\\
:!: 본사 제품인 ComfilePi(Linux) 및 패널 PC(Windows)를 HOST PC로 사용하는 경우, .NET이 이미 설치되어 있으며 환경 설정도 완료되어 있습니다. 사용자는 별도의 설정 없이 즉시 HOST PC로 사용할 수 있습니다. (2025년 X월 이후 출고 제품 기준)
\\
* HOST PC는 64비트 PC를 사용해야 합니다. CFHEADER API(Cfnet.Cfheader 라이브러리)는 64비트 플랫폼(OS)에서 만 지원됩니다.
* [[http://www.comfilewiki.co.kr/ko/doku.php?id=cfnet:cfheaderdevelopmentenvironment:index| 개발 PC]]를 HOST PC로 사용할 경우, 별도의 추가 작업이 필요하지 않습니다.
===== Windows PC=====
HOST PC가 Windows PC일 때 환경설정 방법을 설명합니다. 개발 프로그램이의 .NET 버전에 맞게 HOST PC에 .NET 및 SDK를 설치합니다.
* 개발 프로그램이 .NET 8.x로 제작된 경우 : [[https://dotnet.microsoft.com/en-us/download/dotnet/8.0|Download .NET 8, SDK]]에서 .NET Desktop Runtime 8.x, SDK 8.x를 다운받아 설치합니다.
* 개발 프로그램이 .NET Framework 4.x로 제작된 경우 : [[https://dotnet.microsoft.com/en-us/download/dotnet-framework|Download .NET Framework 4]]에서 .NET Framework 4.x 다운받아 설치합니다.
===== Linux PC =====
HOST PC가 Linux PC일 때 환경설정 방법을 설명합니다.
* 개발 프로그램이 .NET 8.x로 제작된 경우 : [[https://learn.microsoft.com/en-us/dotnet/core/install/linux|인텔(Intel) 계열 리눅스PC]], [[http://www.comfilewiki.co.kr/en/doku.php?id=comfilepi:dotnet_core_development#install_the_net_sdk_on_the_comfilepi| ARM, 컴파일파이(Cpi) 리눅스PC]]에서 .NET 8 설치 방법입니다.
* 개발 프로그램이 .NET Framework 4.x로 제작된 경우 : [[https://www.mono-project.com/download/stable/#download-lin-debian|Mono Framework]] 설치 방법입니다.
* .NET 8.x 또는 .NET Framework 4.x 제작된 프로그램 둘다 [[https://libusb.info/|libusb]] 설치가 필요합니다. 아래의 명령어로 설치하세요.
sudo apt install libusb-dev
==== ARM Linux에서 가비지 컬렉션 Bug 해결방법 ====
[[https://github.com/dotnet/runtime/issues/95257|.NET 런타임 버그인해]] 프로그램이 제한될 수도 있습니다. 이때, 메모리가 적은 장치(라즈베리 파이)에서는 .NET 가비지 컬렉터의 메모리 제한설정을 해야 합니다. 그렇지 않으면 .NET 애플리케이션이 예기치 않게 종료될 수 있습니다.\\
가비지 컬렉터의 메모리 제한을 설정하려면 //**/etc/environment**// 파일을 만들거나 수정해서 다음 줄을 추가하세요.
DOTNET_GCHeapHardLimitPercent=32
그 다음 재부팅합니다.
==== Linux에서 USB 권한 ====
Linux에서는 일반 USB 접근자에게 장치에 대한 직접 액세스 권한을 제공하지 않습니다. 이로 인해 CFHEADER 모듈과의 통신 시 오류가 발생할 수 있습니다. 일반 사용자가 USB 장치에 액세스할 수 있도록 하려면 /etc/udev/rules.d/99-usb.rules 파일을 다음과 같이 수정한 후, 시스템을 재부팅해야 합니다.
SUBSYSTEM=="usb", GROUP="plugdev", MODE="0666"
[[:fieldio:cfnet:index|이전 페이지로 이동]]