정전압 제어기 (조명 제어기)를 Serial Port 통신을 통해 제어가 가능하다.
LFINE사의 LCP12-150P 정전압 제어기를 예시로 든다.
public class SetupForm : Form
{
...
// Light Control
const byte STX = 0x02;
const byte ETX = 0x03;
const byte BRIGHT_COMMAND = (byte)'w';
const byte ON_COMMAND = (byte)'o';
const byte OFF_COMMAND = (byte)'f';
public SetupForm(...)
{
...
SerialPort_Init();
}
private void SerialPort_Init()
{
if (!serialPort.IsOpen)
{
try
{
serialPort.Open();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
}
private void LightControlBtn_Click(object sender, EventArgs e)
{
// 추후 채널 및 밝기값은 조절해줘야 함.
// 전체 채널을 의미함. 해당 제품에서 채널은 1 - 12 채널이 있으며, 순서대로 (0x30 - 0x3B) 까지 있음. 현재 5채널에서 검사를 진행하고 있어 5채널을 사용하였음. 전체 채널은 'z'입니다.
byte channel = (byte)0x34;
int brightness = 200; // 밝기 값 (0 - 1023)
string brightnessStr = brightness.ToString("D4"); // 반드시 해당 Format 사용하여 변환해주기
// 밝기 값 조절 -> STX | channel | BRIGHT_COMMAND | 밝기값 | ETX
string brigtnessSendData = $"{(char)STX}{(char)channel}{(char)BRIGHT_COMMAND}{brightnessStr}{(char)ETX}"; // 이건 되는데
//string strOutputData_Failed = (char)STX + (char)channel + (char)BRIGHT_COMMAND + brightnessStr + (char)ETX; // 이건 값이 달라짐. 같은 값을 내놓을 것 같은데 그렇지 않음.
// 조명 ON / OFF -> STX | channel | ON / OFF_COMMAND | ETX
string offData = $"{(char)STX}{(char)channel}{(char)ON_COMMAND}{(char)ETX}";
try
{
if (serialPort.IsOpen)
{
serialPort.Write(brightnessSendData);
}
else
{
MessageBox.Show("Port is not Opened");
}
}catch (Exception ex) { MessageBox.Show(ex.StackTrace); }
}
}