C# double 변수 초기값 계산 오류
double d=7 / 3.0f - 9; //-6.66666698455811
double d2 = 7 / 3.0f - 9;//-6.6666669845581055
WIN32에서 아래 코드 확인 결과,
double d=7.0f / 3.0f - 9.0f; //-6.6666666666667
double d2=7 / 3.0f - 9; //-6.6666666666667
double d3=7 / 3 - 9; //-7.0000000000000
float f=7 / 3.0f - 9; //-6.66667
인터넷 계산 결과 : 7 / 3 - 9 = -6.66666666667
원인 : C#에서 double은 숫자뒤에 'D'를 붙여줘야한다.
'D'를 붙이니, 값이 맞음.
S/N
HCOP:DEV:LANG PNG
HCOP:DEST1 'MMEM'
MMEM:NAME 'C:\Screenshots\PLOT1.PNG'
HCOP:DEST 'MMEM';:HCOP;MMEM:DATA?
변수 선언은 인라인될 수 있습니다.
How to resolve message IDE0018
string Func1(string s)
{
string ret = ""; //<<====변수 선언은 인라인될 수 있습니다.
Read("123", out ret);
return ret;
}
원인 : (원래 느린) C#에서는 속도향상을 위해,
불필요한 코드는 최적화(?)하기위해
이런 체크기능을 추가한것으로 생각됨.
("사람인 니가 최적화 해라")
아래와 같이 함수의 인자에 string을 넣어주면, 이 경고는 사라짐.
string Func1(string s)
{
Read("123", out string ret);
return ret;
}
요약 : 쓸데없이 생성하지 말고, 함수의 인자값을 받아써라.
의견 : C언어 관점에서 봤을때,
C언어와 호환성이 점점 사라져간다.
C#이 아니라 D#이 맞을듯...
몇개 있을때는 상관없지만, 많아지면, 오류나 경고 메세지를 보기가 어렵다.
그래서 가능하면 없애주는것이 좋다.
VS는 오류메세지만 따로 보는 기능이 불편하다.
좌측하단의 오류, 경고, 메세지 를 마우스 클릭을 2회정도 해줘야,
각각 볼 수 있다.(불편)
그래서, 좀 귀찮더라도, 이런 메세지를 없애주는것이
코드 크기도 작아지고, 속도도 빨라진다.
ListView 깜빡임 문제 해결
아래 코드로 깜빡임 없이 동작함.
예) SetDoubleBuffer(ListView1);
static public void SetDoubleBuffer(Control c,bool bSet=true)
{
c.GetType().GetProperty("DoubleBuffered",
System.Reflection.BindingFlags.Instance |
System.Reflection.BindingFlags.NonPublic)
.SetValue(c, bSet, null);
}
byte[] 합치기 - 2개의 byte배열을 합치는 함수
static public byte[] Memcat(byte[] a,int a_len,byte[]b,int b_len)
{
byte[] c = new byte[a_len + b_len];
int len=0;
if ((a != null) && (a_len > 0))
{
Array.Copy(c, 0, a, 0, a_len);
len = a_len;
}
else { }
if ((b != null) && (b_len > 0))
{
Array.Copy(c, len, b, 0, b_len);
len += b_len;
}
else { }
return c;
}
Standing Wave Ratio (SWR)
전압 정재파비(VSWR: Voltage Standing Wave Ratio)
----------------------------
정재파(定在波, standing wave)
定:정할 정
在:있을 재
波:물결 파
반사계수, 혹은 S11, S22 등을 또 다르게 표현한 값
반사에 의해 생성되는 정재파 (Standing Wave)이 높이 비를 의미
정재파(Standing Wave)란,
어떤 파동이 진행하다가 다른 매질을 만나서
반사되어 나온 파동과 합쳐지면서 생기는
고정된 파형을 의미한다.
반사량이 많을수록 고정된 정재파의 크기가 커진다.
VSWR은 반사가 거의 없는 경우는 1에 가깝고,
반사량이 늘어날수록 무한 대에 가까워진다.
측정방법
준비물 : 벡터 네트워크 아날라이져(NA), +15V 전원, SHORT,OPEN,LOAD 콘넥터
1) SWR메뉴에서, NA 케이블에 SHORT, OPEN, LOAD를 각각 연결해가면서, 캘리브레이션을 한다.
2) NA-입력:Test장비:출력-LOAD 순으로 연결후, 측정, 메모리
3) NA-출력:Test장비:입력-LOAD 순으로 연결후, 측정
20201117165002958.jpg
20201117165011102.jpg
리턴 로스(return loss. dB)
----------------------------
반사되어 돌아오는 양의 비율.
반사가 아예 없어, 돌아오는 양이 0인 경우, 무한대 dB.
반사가 매우 적은 경우, 돌아오는 양이 매우 적은 경우 10~50dB정도
반사가 매우 많은 경우, 돌아오는 양이 매우 많은 경우 10dB이하
(10dB기준은 설명을 위한 기준임)
VSWR은 작을수록 반사가 적다는 의미가 되고,
Return loss는 클수록 반사가 적다는 의미
예)
Return loss=10dB(VSWR은 2.0:1 이하,입력매칭이 비교적 잘된 경우)
Return loss=14dB(VSWR은 1.5:1 정도. 입력매칭이 거의 완벽)
Return loss= 5dB(VSWR은 3.5:1 안좋음)
반사계수
---------------
반사되는것이 없으면 0,
많으면 1에 가까워짐.
dBc (Decibel relative to carrier power level)
---------------------------------------------
dB : 상대적인 크기. Decibel(데시벨)
예) -6dB(기준 신호보다 50% 작은 신호)
예) +6dB(기준 신호보다 2배 큰 신호)
dBm : 측정전압의 크기.
예) 10 dBm
측정 기준에 따라 전력, 전압등으로 상호 변환이 가능하다.
예) 600옴에서, 1dBm=0.8V, 10dBm=2.5V, 20dBm=7.75V
예) 50~60옴에서, 10dBm=10mW, 20dBm=100mW, 30dBM=1W
dBc : 캐리어주파수(중요 주파수)와 옆에 발생하는 기생주파수의 크기 차이
예) 1MHz클럭 주파수 30dBm을 만들었더니,
쓸모없는 500Hz 기생주파수가 -20dBm크기로 같이 나온다.
이때 30-(-20)로 계산하여, 50dBc로 표시한다.
ipTime N8004 초기화 방법
CPU LED가 1초간격으로 깜빡이면
리셋버튼을 10초간 누르면,
CPU LED가 매우 빠르게 깜빡이면, 리셋버튼을 뗀다.
일관성 없는 액세스 가능성: 'b' 필드 형식이 'b' 필드보다 액세스하기 어렵습니다
=> enum타입은 public이 아니고, enum 타입의 변수는 public인 경우 발생.
enum타입도 public으로 해준다.
{
HANDLE hDll;
typedef BOOL (WINAPI *CHANGEWINDOWMESSAGEFILTER)(UINT message,DWORD dwFlag);
CHANGEWINDOWMESSAGEFILTER ChangeWindowMessageFilter;
hDll = LoadLibrary("USER32.DLL");
ChangeWindowMessageFilter = (CHANGEWINDOWMESSAGEFILTER)GetProcAddress((HINSTANCE)hDll, "ChangeWindowMessageFilter");
if(ChangeWindowMessageFilter)
{
#define MSGFLT_ADD 1
ChangeWindowMessageFilter(WM_DROPFILES,MSGFLT_ADD);
ChangeWindowMessageFilter(WM_COPYDATA,MSGFLT_ADD);
ChangeWindowMessageFilter(0x0049,MSGFLT_ADD);
}
else{}
DragAcceptFiles();
}
GPIB22-WRITE="*RST;;"
COM5: W *OPC?
1
1
COM5: W SYSTem:ERRor?
-113,"Undefined header"
COM5: W SYSTem:ERRor?
-420,"Query UNTERMINATED"
COM5: W SYSTem:ERRor?
-420,"Query UNTERMINATED"
COM5: W SYSTem:ERRor?
+0,"No error"
*CLS;*OPC?
GPIB22-WRITE="*RST"
COM5: W *OPC?
1
1
COM5: W SYSTem:ERRor?
-113,"Undefined header"
COM5: W SYSTem:ERRor?
-420,"Query UNTERMINATED"
COM5: W SYSTem:ERRor?
-420,"Query UNTERMINATED"
COM5: W SYSTem:ERRor?
+0,"No error"
ProLOGIXS USB-GPIB
enables front panel operation(계측기에서 동작이 가능하도록. 매번 전송해야한다)
"++loc\r\n"
@@@윈도우 압축을 이용한 파일백업용 배치파일
- 폴더안의 파일을 압축하여, 날짜,시간별로 저장
- 윈도우 압축기능을 사용(별도 설치 프로그램 없음)
- 백업 서버에 복사(xcopy)
- 매시간 단위로 백업파일 생성
예) 6시에 2번 실행해도, 압축파일은 1개만 생성됨(Update)
Backup.bat
-----------------------------------------------
set zip="압축파일이름-%date%-%time:~0,2%.zip"
powershell Compress-Archive -Path *.Lnk,*.xls,*.xlsx,*.bat,*.txt,*.atsln,*.sln -Update -DestinationPath %zip%
set dst="\\SERVER\내폴더\프로젝트1\"
xcopy /s/Y/D "%zip%" %dst%
explorer "%dst%"
REM pause
MEASure
:VOLTage:DC? {|MIN|MAX|DEF},{|MIN|MAX|DEF}
:VOLTage:DC:RATio? {|MIN|MAX|DEF},{|MIN|MAX|DEF}
:VOLTage:AC? {|MIN|MAX|DEF},{|MIN|MAX|DEF}
:CURRent:DC? {|MIN|MAX|DEF},{|MIN|MAX|DEF}
:CURRent:AC? {|MIN|MAX|DEF},{|MIN|MAX|DEF}
:RESistance? {|MIN|MAX|DEF},{|MIN|MAX|DEF}
:FRESistance? {|MIN|MAX|DEF},{|MIN|MAX|DEF}
:FREQuency? {|MIN|MAX|DEF},{|MIN|MAX|DEF}
:PERiod? {|MIN|MAX|DEF},{|MIN|MAX|DEF}
:CONTinuity?
:DIODe?
MEASure:FREQuency?
MEASure:FREQuency 8322.75MHz //안됨
'C#' 카테고리의 다른 글
오류 CS0106 이 항목의 'private' 한정자가 유효하지 않습니다. (0) | 2021.01.30 |
---|---|
문자열 분리(나누기) (0) | 2020.12.19 |
원그리기 (0) | 2020.12.05 |
Microsoft.Office.Interop.Excel.dll (0) | 2020.11.14 |
사칙연산 문제 생성 (0) | 2020.11.07 |