전체 글 (87) 썸네일형 리스트형 IEEE754 단정밀(32Bit) 데이타와 float 형 변수의 상호 변환 - C# static class Ieee754Converter{ public static byte[] GetBytes(float value) { byte[] bytes = BitConverter.GetBytes(value); return bytes; } public static float ToSingle(byte[] bytes) { float value = BitConverter.ToSingle(bytes, 0); return value; }} 예 : +7.282600E+01 {0xE9} {0xA6} {0x91} {0x42} byte[ ] temp = Ieee754Converter.GetBytes(3.141592f);float .. Laser Diode의 Threshold Current 계산 알고리즘 - Least Square Method - C# public double ThresholdCurrent(in double[] Current, in double[] Power, double PowerLow, double PowerHigh) { double thresholdCurrent = 0; try { int startIndex = Array.FindIndex(Power, x => x >= PowerLow); int endIndex = Array.FindIndex(Power, x => x >= PowerHigh); var subCurrent = Current.Skip(startIndex).Take(endIndex - startIndex + 1).ToArray(); var subPower = Power.Skip(startIndex)... 비주얼 스튜디오(Visual Studio) WinForm 에서 폼 디자이너가 나타나지 않을 때 비주얼 스튜디오로 만든 Winform 프로젝트를 수정할 일이 생겨서 프로젝트를 열었는데 폼 디자이너가 전혀 열리지 않는 현상이 발생했다. 인터넷을 뒤져서 이것저것 찾아 보았지만 해결을 할 수가 없었다. 그러다 우연히 프로젝트가 들어있는 폴더를 밖으로 빼고 다시 불러와 보니 정상적으로 폼 디자이너가 보이기 시작했다. 원인은 이번에 비주얼 스튜디오가 업그레이드 되면서 프로젝트 파일들이 들어있는 폴더에 ( ) 를 사용했을 경우 문제가 발생한다는 것을 알아냈다. 난 프로그램 버젼을 폴더에 () 안에 표시하는데 그걸 빼고 했더니 정상 동작이 되었다. 이게 오류인지 일부러 그렇게 만든건지 모르겠다. 하여간 아래 처럼 ( ) 제외해야 폼 디자이너가 정상적으로 나타난다. 기존 폴더 : D:\TestProject(.. IEEE754 단정밀(32Bit) 데이타와 float 형 변수의 상호 변환 - C++ 계측기와 데이타를 주고 받는 경우 계측기에서 측정된 데이타가 ASCii 형태로 들어 오는 경우가 있다. 이럴 경우 데이타의 갯수가 짧은 경우에는 상관이 없지만 데이타 갯수가 수십 ~ 수백개가 될 경우 통신 속도문제로 데이타를 주고 받는데 시간이 많이 걸리게 된다. 더군다나 ASCii 를 사용하게 되면 데이타는 더 길어질 수 밖에 없어서 시간이 더 많이 소요가 된다. 이럴때 데이타의 길이를 줄이기 위해 계측기가 IEEE754형태의 단정밀로 변환해서 데이타를 주고 받을 수 있는 경우가 있는데 이럴경우 데이타의 길이를 1/3로 줄일 수 있다. (13byte 아스키값을 4byte 로 변형) 예 : +7.282600E+01 {0xE9} {0xA6} {0x91} {0x42} 변환 방법은 간단하게 Union 사.. YAML 로 프로그램 설정 데이타 저장 및 불러오기 - C# 이전에 JSON을 이용하여 제어프로그램의 Recipe 파일의 저장과 불러오기 기능에 대해 포스팅 했었다. 그런데 조금 사용하기 불편하고 코딩량이 많아서 다른 수단을 찾다가 YAML 이 최근에 설정파일 저장용으로 많이 사용된다는 것을 보고 사용해 보았다. 코딩량도 상당히 줄었고 무엇보다 항목을 추가하거나 제거할 때 코딩에서 수정해야 하는 부분이 많이 줄어서 현재 모든 프로그램에서 사용하고 있다. 1. YAML 사용하기 위해 Nuget에서 YamlDotNet 을 먼저 설치한다. 2. Yaml 데이타를 저장하거나 불러오기 위한 클래스 생성 : 다양한 종류의 설정항목에 대응하기 위해 generic class 형식으로 만듦public class YamlControl{ public bool SaveYam.. Flow Meter(FML300-D SERIES) 제어 클래스 - C# public class FML300 { private readonly SerialPort commPort ; private readonly ModbusSerialMaster modbusSerialMaster ; public FML300(ModbusSerialMaster modbusSerial) { modbusSerialMaster = modbusSerial; } //--------------------------------------------------------------------------- public FML300(SerialPort serialPort) { .. Chroma IT 의 UPS(Rodem Series) 제어 클래스 - C# public class RodemSeries { private SerialPort commPort; public double InputVoltage { get; } public double OutputVoltage { get; } public double Temperature { get; } public int BlackOut { get; } // 0:No, 1:Yes public int LowBattery { get; } // 0:No, 1:Yes public RodemSeries(SerialPort CommPort) { commPort = CommPort; .. VARIANT 형의 변수를 사용할 때 주의할 점 (C++) 최근 레이저의 광출력을 측정하는 계측기를 사용하는 과정에서 해당 계측기 업체가 제공하는 소스를 그대로 복사해서 함수를 하나 만들어서 사용을 했습니다. 그런데 이 장비가 번인 장비여서 기본적으로 1000시간 이상 구동을 해야 하는데 200~300 시간 정도 지나면 프로그램이 다운이 되어 버리는 증상이 나타났습니다. 아무리 소스 코드를 봐도 오류를 찾을 수 없었는데 혹시나 해서 계측기 업체가 제공한 소스 코드를 Chat-GPT 에 돌려서 보니 VARIANT 형을 사용하는 과정에서 변수를 Clear 하지 않아서 오버플로우가 발생하는 현상이 있는 것을 찾아 냈습니다. 아래 함수가 이번에 수정한 부분인데 VARIANT value, param1, param2; 이 세개의 변수가 VARIANT 형으로 선언이 되.. 이전 1 2 3 4 ··· 11 다음