using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO.Ports;
using System.Management;
using System.Diagnostics;
namespace TIASshot {
internal class LightSource {
SerialPort _serial;
public bool IsOpen { get { return _serial.IsOpen; } }
/// <summary>
/// コンストラクタ
/// </summary>
public LightSource() {
_serial = new SerialPort();
}
/// <summary>
/// ポートを探す
/// </summary>
/// <param name="deviceName"></param>
/// <returns></returns>
private string FindPort(string deviceName) {
var portname = "";
var mcW32SerPort = new ManagementClass("Win32_SerialPort");
foreach (var port in mcW32SerPort.GetInstances()) {
var devName = port.GetPropertyValue("Caption").ToString();
Debug.WriteLine(devName);
if (devName.Contains(deviceName)) {
portname = port.GetPropertyValue("DeviceID").ToString();
}
}
return portname;
}
/// <summary>
/// 接続
/// </summary>
/// <returns></returns>
public bool Open() {
var portName = FindPort(Config.GetString("LightSourceDevice"));
if (portName == "") return false;
_serial.PortName = portName;
_serial.BaudRate = Config.GetInt("LSBaudRate");
_serial.DataBits = 8;
_serial.StopBits = StopBits.One;
_serial.Parity = Parity.None;
_serial.Open();
return true;
}
public void TurnOff() {
byte[] buf = new byte[] { 0x02, 0x44, 0x41, 0x58, 0x32, 0x3A,
0x44, 0x41, 0x20, 0x30, 0x03, 0x31, 0x45, 0x04 };
var str = Encoding.ASCII.GetString(buf);
_serial.Write(str);
}
public void SetLight() {
byte[] buf = new byte[] { 0x02, 0x44, 0x41, 0x58, 0x32, 0x3A, 0x44,
0x45, 0x46, 0x20, 0x33, 0x30, 0x37, 0x32, 0x03, 0x30, 0x34, 0x04 };
var str = Encoding.ASCII.GetString(buf);
_serial.Write(str);
}
}
}