싸이몬은 스크립트를 서밋 라이센스를 구매해서 만들었다

 

즉 버그가 많음

이렇게 함수를 제공하기 때문에 함수를 이용해서 사용하는 것이 좋다 

왜냐면 저거 보듣이 어떤건 가로가 안들어가고 

어떤건 가로가 들어가고 불편하게 되어있다

 

 

이렇게 쓰면 되긴하는데 

좀 불편함

 

RunScript("내가만든함수")

 

StopScript("내가만든함수")

 

명시적 선언은 

 

Dim 변수이름 [As타입] 이렇게 만들고

 

묵시적은 그냥 

변수 이름 이 선언되면 된다

 

정수형 

& : Long (4 Byte)

% : Integer (2Byte)

 

실수 

#: Double (8Byte)

! : Single (4Byte)

 

문자형

 $ 

 

변수 1% = 10

변수 1% = 20 

 

 

날짜 시간 

변수5 = Now 

 

 

문자형 

변수6 $ = "안녕하세요"

 

이건 변수로 못씀

1. Empty • 변수의 값을 초기화 되지 않은 상태로 만드는 키워드

2. IsEmpty • 변수가 초기화 되지 않았는지 확인하는 키워드

3. Nothing • 객체의 값을 초기화되지 않은 상태로 만드는 키워드 • 객체에 값이 있다면 시스템리소스를 해제하는 기능도 한다.

4. Is Nothing • 객체가 초기화되어 있는지 확인하는 키워드

5. Null • 변수가 유효하지 않은 데이터를 가진 상태로 만드는 키워드

6. IsNull • 값이 유효하지 않은 데이터를 가지는지 확인하는 키워드

7. True • 참인 경우의 Boolean 값을 가지는 키워드( 일반적으로 -1)

8. False • 거짓인 경우의 Boolean 값을 가지는 키워드(일반적으로 0 )

 

 

 

형변환

 

CStr :숫자를 문자로

숫자변수이름1$ = CStr("10.5")

 

Clnt: 문자를 숫자로

문자변수이름1%= Clnt("10.5")

 

기타

y1%= Year(Now())

년도 넣기 

 

1. + (더하기)

2. - (빼기)

3. * (곱하기)

4. / (나눈 후 몫)

5. Mod (나눈 후 나머지)

6. 기타 자주 사용되는 함수를 이용한 값의 계산

• Abs(변수) : 변수의 절대값을 계산하고 자 할 때 사용함

• Rnd() : 0 에서 1 사이의 범위를 가지는 임의의 실수 값

• ASC(변수) : 변수의 아스키 코드값을 계산하고 자 할 때 사용함

• Hex(변수) : 변수를 16진수 형태로 변환

• Oct(변수) : 변수를 8진수 형태로 변환

 

 

 

태그를 만들고 

이제 이걸 불러와보자 

 

 

변수1# = GetTagVal("뭔가한다.숫자") ----> 이거 뭔가한다 폴더안에 숫자라는 태그있어서 그런거임

MsgBox CStr(변수1#)


SetTagVal "뭔가한다.문자", "안녕하세요"   ---->이건 태그에 값넣는거 난 빼겟음 초기값넣어서
MsgBox CStr(GetTagVal("문자열태그"))

 

Get 성질을 띄는 내부함수는 괄호를 입력

● Get 성질을 띄는 내부 함수란, 특정 함수 A를 호출 했을 때 리턴 되는 어떤 값이 존재 한다면 그 함수는 Get 성질을 띤 함수이다

예) GetTagVal, TLogVal, CommStatus 함수 등

 

Set 성질을 띄는 내부함수는 괄호를 입력하지 않음

● Set 성질을 띄는 내부 함수란, 특정 함수 A를 호출 했을 때 리턴 되는 값은 없고 오로 지 특정 명령을 수행하는 함수라면 그 함수는 Set 성질을 띤 함수이다.

예) SetTagVal, OpenFileDlg, LoginEx 함수 등

 

 

 

 

이상한 애들의 약속

1. 연산식 혹은 명령식 괄호를 입력해야 함.

예를 들어, LoginEx(“userid”,”userpwd”)

 

2. 스크립트 함수 괄호를 입력하지 말아야 함.

예를 들어, LoginEx “userid”, ”userpwd”

 

 

왜이리 만든거야 귀찮게...

 

모든언어가 쓰는

if 와 select Case 는 다있음

 

Sub Main() 
   변수1# = GetTagVal("아날로그태그") 
   if 변수1# = 0 then
   	MsgBox "0입니다“
   elseif 변수1# = 1 Then 
	MsgBox “1입니다” 
   else 
	MsgBox "0, 1이 아닙니다"
   end if 
End Sub

 

 

위처럼 좀 end if 쳐야함 귀찮음

 

Sub 반복예제()
	합계 = 0
	for i = 0 to 10
		합계 = 합계 + i
	next i    //<-----여기 이거 i++같은거임
	MsgBox CStr(합계)
End Sub

 

 

 

for문은 또 end 안씀 이상함

 

Sub DigChange()
	While TRUE
		Sleep (1000)
		a = GetTagVal(“DIG1”)
		SetTagVal “DIG1”,1-a
	wEnd
End Sub
    
Sub AnaChange()
	While TRUE
		Sleep (2000)
		a = GetTagVal(“ANA1”)
		SetTagVal “ANA1”,a+1
	wEnd
End Sub

       while 은 또 wEnd로 줄여씀  break 같은거인가 아님 메모리 차지 없에는건가

 

 

 

 

Exit For 나간다 Break랑 같은듯

Sub 반복예제()
	합계 = 0
	for i = 0 to 10
		if 합계 > 30 then
			Exit For
		else
			합계 = 합계 + i
		end if
	next i
	MsgBox CStr(합계)
End Sub

계속보니깐  대충은 보임

 

 

 

Sub DigChange()
	While TRUE
		Sleep (1000)
		a = GetTagVal(“DIG1”)
		SetTagVal “DIG1”,1-a
	wEnd
End Sub
    
Sub AnaChange()
	While TRUE
		Sleep (2000)
		a = GetTagVal(“ANA1”)
		SetTagVal “ANA1”,a+1
	wEnd
End Sub

   

c언어를 많이 하다보니깐 이것도 좋은듯한 느낌도 있고

암튼 위에꺼 메인함수에 넣어주던가 어떻게 쓰면 될듯함

 

슬립도 여기서 하는거 똑같은듯 1000이 1초일듯함

 

이거 참고하면 좋을듯 

Sub 반복예제()
	합계 = 0
	for i = 0 to 10
		if 합계 > 30 then
			Exit For
		else
			합계 = 합계 + i
		end if
	next i
	MsgBox CStr(합계)
End Sub

 

Exit 예제인듯

 

 

 

Sub Word2Bit()
	worddata = GetTagVal("WORDDATA")
	BitMask = 1
	For i = 0 To 15
		tagstr$ = "BIT"+Format(i,"00")
		bitdata = worddata AND BitMask
		if(bitdata > 0) then
			SetTagVal tagstr$, 1
		else
			SetTagVal tagstr$, 0
		end if
		BitMask = BitMask * 2
	Next
End Sub

이건 

아날로그 쪼개기이다 

일단 해보자

 

 

블로그 이미지

Or71nH

,