CFNET-FS 이용한 아날로그 출력모듈(CFDAC) 사용 방법

아날로그 출력모듈(CFDAC)은 아래에 설명된 /analog-output/{module_address}/channel/{channel_address}디렉터리의 raw, voltes 파일을 통해 제어됩니다.

☞ “CFNET-FS 개발 환경 구성이 완료되지 않았다면, 아래 링크를 참고하여 먼저 설정을 진행해 주세요.

analog-output 디렉터리 구조 및 제어 파일

analog-output » 모듈 주소 0~7{module_address} 디렉터리 » channel » 0, 1 채널 디렉터리가 있으며,
0, 1(채널) 디렉터리에는 해당 채널(포트)을 제어하기 위한 raw 및 volts 파일이 포함되어 있습니다.

  • 각 아날로그 출력모듈(CFDAC)은 cfnet-fs 마운트 지점 아래에 있는 디렉터리로 표현됩니다.
  • .{mount-point}/analog-output/{module_address}/

- 모듈 Address(0~7) : analog-output/{module_address}

$ tree -L 2 /tmp/cfnet-fs/analog-output/
/tmp/cfnet-fs/analog-output/
├── 0
│   └── channel
├── 1
│   └── channel
... 7

- 채널(ch0 ~ 1): analog-output/{module_address}/}/channel/{channel_address}

$ tree /tmp/cfnet-fs/analog-output/0
/tmp/cfnet-fs/analog-output/0
└── channel
    ├── 0
    │   ├── raw.bin
    │   ├── raw.txt
    │   ├── volts.bin
    │   └── volts.txt
    └── 1
        ├── raw.bin
        ├── raw.txt
        ├── volts.bin
        └── volts.txt

각 아날로그 출력 채널에는 다음과 같은 4개의 파일이 제공됩니다.

  • raw.txt : 아날로그 출력 채널의 원시 디지털 값을 0 ~ 4095 범위의 ASCII 문자열로 표시합니다.
  • raw.bin : 아날로그 출력 채널의 원시 디지털 값을 0 ~ 4095 범위의 부호 없는 16비트 정수로 표시합니다.
  • volts.txt : 아날로그 출력 채널의 출력 전압을 0.0000 ~ 10.0000 V 범위의 ASCII 문자열로 표시합니다.
  • volts.bin : 아날로그 출력 채널의 출력 전압을 0.0 ~ 10.0 V 범위의 32비트 부동소수점 값으로 표시합니다.

이 파일들 중 하나에 쓰기 작업을 하면 아날로그 출력 채널의 전압이 변경됩니다. 텍스트 파일(.txt)은 사용자 입력·표시에 적합하며, 바이너리 파일(.bin)은 연산 및 논리 처리가 필요한 경우에 적합합니다.

- C#, Python, C에서 코딩 방법

  • 아날로그 출력 모듈 0의 채널 1의 전압을 설정합니다.
  • /tmp/cfnet-fs/analog-output/0/channel/1/volts.txt
  • /tmp/cfnet-fs/analog-output/0/channel/1/volts.bin

Shell Script

$ echo 5.0000 > /tmp/cfnet-fs/analog-output/0/channel/1/volts.txt

C#

const string ANALOG_OUTPUT_0_CHANNEL_3 = "/tmp/cfnet-fs/analog-output/0/channel/1/volts.txt";
File.WriteAllText(ANALOG_OUTPUT_0_CHANNEL_3 , "5.0000");
const string ANALOG_OUTPUT_0_CHANNEL_3 = "/tmp/cfnet-fs/analog-output/0/channel/1/volts.bin";
File.WriteAllBytes(ANALOG_OUTPUT_0_CHANNEL_3, BitConverter.GetBytes(5.0f));

Python

ANALOG_OUTPUT_0_CHANNEL_3 = "/tmp/cfnet-fs/analog-output/0/channel/1/volts.txt"
 
with open(ANALOG_OUTPUT_0_CHANNEL_3, "w") as f:
    f.write("5.0000")
import struct
 
ANALOG_OUTPUT_0_CHANNEL_3 = "/tmp/cfnet-fs/analog-output/0/channel/1/volts.bin"
 
value = 5.0
with open(ANALOG_OUTPUT_0_CHANNEL_3, "wb") as f:
    f.write(struct.pack("<f", value))

C

#include <stdio.h>
 
const char* ANALOG_OUTPUT_0_CHANNEL_3 = "/tmp/cfnet-fs/analog-output/0/channel/1/volts.txt";
 
int main(void)
{
    FILE *f = fopen(ANALOG_OUTPUT_0_CHANNEL_3, "w");
    fputs("5.0000", f);
    fclose(f);
 
    return 0;
}
#include <stdio.h>
 
const char* ANALOG_OUTPUT_0_CHANNEL_3 = "/tmp/cfnet-fs/analog-output/0/channel/1/volts.bin";
 
int main(void)
{
    float value = 5.0f;
 
    FILE *f = fopen(ANALOG_OUTPUT_0_CHANNEL_3, "wb");
    fwrite(&value, sizeof(float), 1, f);
    fclose(f);
 
    return 0;
}

CFNET-FS 개요