천문 계산
2009.08.19 22:08

DE404 DLL 파일 사용법

조회 수 9396 댓글 8
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

 이 글은 다음 게시물에서 첨부한 파일의 사용법입니다.


[프로그램 소스]행성의 위치를 계산(DE404)하는 DLL 파일
http://blueedu.dothome.co.kr/xe/815



아래 코드는 설명서에 있는 코드입니다.

이 소스 코드는 비주얼베이직 6에서 쓸 수 있습니다.

이 소스 코드에 있는 각각의 코드 블럭이 하는 역할에 대해 설명하겠습니다.


일단 전문을 나열하겠습니다.


    Type TPlanetData
      JD As Double
      l As Double
      b As Double
      r As Double
      ipla As Long
    End Type
   
    Declare Function Plan404 Lib "libplan404.dll" (pla As TPlanetData) As Long
   
    Sub Main()
      Dim pla As TPlanetData, i As Long
     
      pla.ipla = 3
      pla.JD = 2452305.5
     
      i = Plan404(pla)
     
      MsgBox "지구의 위치(JD 2452305.5 UT)" & VbCrLf & _
             "황경: " & pla.l & "(rad)" & VbCrLf & _
             "황위: " & pla.b & "(rad)" & VbCrLf & _
             "거리: " & pla.r & "(AU)"
    End Sub


이 코드는 전반적으로 구조체 선언부, DLL 선언부, Main() 함수 부분으로 이루어져 있습니다. 각각의 코드 블럭을 살펴보도록 하겠습니다.


    Type TPlanetData
      JD As Double
      l As Double
      b As Double
      r As Double
      ipla As Long
    End Type


이 코드는 프로그램에서 쓰는 구조체를 선언하는 부분입니다. DE404 DLL 파일에서 자료를 입력받고 출력할 때 이런 형식의 구조체를 쓰고 있으므로 비주얼베이직에서도 그에 맞추어 구조체를 만들어주어야합니다. 각각의 구성요소는 다음 자료를 주고 받습니다.



JD: 위치를 계산하려는 시각 자료를 DE404 DLL 파일에 알려줍니다. 율리우스 적일로 입력합니다(입력).

ipla: 위치를 계산하려는 천체를 지정합니다(입력).

l: 입력받은 시각의 행성의 일심 황경을 출력합니다(출력 단위: 라디안).

b: 입력받은 시각의 행성의 일심 황위를 출력합니다(출력 단위: 라디안).

r: 입력받은 시각의 행성의 거리(태양-행성간 거리)를 출력합니다(출력 단위: 천문단위).


(주의: 행성은 태양 중심의 위치를 츨력하지만 달은 지구 중심의 황도좌표, 거리를 출력합니다. )



다음 부분입니다.


Declare Function Plan404 Lib "libplan404.dll" (pla As TPlanetData) As Long


이 코드는 DLL 파일에 있는 함수를 쓰겠다고 프로그램 언어에 알려주는 역할을 합니다.

libplan404.dll 파일에 있는 Plan404 함수를 쓰고 TPlanetData 형식의 변수를 매개변수로 쓰겠다고 명시해 놓았습니다.

한가지 주의할 부분이 있는데, Lib 바로 뒤에 이어지는 "libplan404.dll"는 DLL 파일의 경로와 이름을 지정해 주는 부분입니다. 비주얼베이직 IDE 환경에서 아무런 문제없이 작업하려면 libplan404.dll 파일을 윈도우즈의 시스펨 폴더에 복사해두거나 libplan404.dll 파일이 있는 전체 경로를 적어주어야합니다. 컴파일 된 프로그램을 실행할 때에는 프로그램 파일과 같은 폴더에 libplan404.dll 파일이 있으면 됩니다.


다음 부분으로 넘어갑니다.

이 부분은 Main 함수 부분입니다. 이 함수는 프로그램이 시작되면 처음으로 실행하는 함수입니다. 설명은 주석문으로 대신합니다.


Sub Main()
      Dim pla As TPlanetData 'Plan404 함수를 호출할 때에 쓸 변수를 선언합니다.

      Dim i As Long 'Plan404 함수의 반환값을 받을 변수입니다.
     
      pla.ipla = 3 '계산할 천체를 지구로 정합니다.
      pla.JD = 2452305.5 '계산할 시점을 2452305.5로 정합니다.
     
      i = Plan404(pla) 'Plan404 함수를 호출합니다.
     

     '메세지 박스에서 계산 결과를 출력합니다.

     MsgBox "지구의 위치(JD 2452305.5 UT)" & VbCrLf & _
             "황경: " & pla.l & "(rad)" & VbCrLf & _
             "황위: " & pla.b & "(rad)" & VbCrLf & _
             "거리: " & pla.r & "(AU)"
    End Sub



?
  • ?
    자운 2009.08.20 00:01

    자세한 설명 감사합니다. 다만, 말씀하신대로 "libplan404.dll" 파일을 시스템 폴더에 복사하거나 특정 폴더에 복사하고 전체 경로를 적어 보았으나 '파일을 찾을 수 없습니다. : plan404.dll'이라는 에러 메시지만 뜨네요. 왜? 그럴까요! 좀 더 자세히 알려주시면 감사하겠습니다.

  • profile
    창환 2009.08.20 01:45

    혹시 운영체제로 비스타를 쓰고 있다면 VB6을 관리자 권한으로 실행해야 정상적으로 작동합니다.

    XP 이하의 버전을 쓰고 있다면...

    글쎄요, 파일 이름과 경로를 정확하게 입력하면 문제없이 작동을 해야되는데.. 

    (참고로 시스템 폴더는 32비트 윈도우인 경우 윈도우 폴더 아래에 있는 system32 폴더입니다.)


    혹시 마이크로소프트 비주얼 C++ 2008 SP1 런타임 라이브러리 파일이 설치되어 있는지 확인해보시기 바랍니다. 위의 DLL 파일은 VC++ 2008로 컴파일이 되어 있어서 VC++ 2008 런타임 라이브러리 파일이 있어야 작동합니다.

  • ?
    자운 2009.08.20 07:04
    아이고! 이렇게나 빨리 답변을 주셔서 정말 감사합니다.  알려주신대로 VC++ 2008 런타임 라이브러리 파일을 설치하니 잘 작동하네요. 감사합니다.
  • ?
    자운 2009.09.11 22:26

    설명서에 보면,  '지구의 경우  지구의 위치가 아니라 지구와 달의 질량 중심(EMB)의 위치를 계산합니다.'라고 되어 있는데, '지구의 위치'를 직접 구하거나 EMB를 지구의 위치로 변환하는 공식(방법)이 있으면 배워 주시면 감사하겠습니다.

  • ?
    창환 2009.09.11 23:30

    EMB에서 지구의 위치를 구하는 방법은 비교적 간단한 편입니다.

    내일 그 방법에 관해서 새로운 글을 하나 올리도록 하겠습니다.

  • ?
    자운 2014.04.17 22:43

    안녕하시죠? 오랫만에 질문드립니다.

    윈도우7에서 비베를 사용하기가 불편해서 vb.net으로 바꾸려니 쉽지않네요.

    혹시 vb.net 에서 사용할려면 어떻게 수정해야 하는지 가르침 주시면 감사하겠습니다.

    구조체선언부를 Structure TPlanetData 로 변환하고 실행하니

     i = Plan404(pla) 에서

    '보호된 메모리를 읽거나 쓰려고 했습니다. 대부분 이러한 경우는 다른 메모리가 손상되었음을 나타냅니다.'라는 에러메세지가 뜨면서 실행이 되질않네요.


    항상 행복하시길....

  • profile
    창환 2014.04.20 16:10

    안녕하세요. 제가 vb.net을 거의 쓰지 않아 자세한 부분은 모르겠습니다. 

    다만 메모리 쪽 문제라면 VB6과 VB.Net의 변수 형태의 차이가 원인이 아닐까 합니다. 

    vb.net으로 바뀌면서 변수의 형식에 상당한 변화가 생긴 것으로 알고 있는데, 그 부분을 점검해보시는 게 어떨까 합니다. 

  • ?
    자운 2014.04.27 22:43

    예! 신경 써주셔서 감사합니다.

    좀 더 연구해보면 답을 찾을 수 있겠죠.


    항상 건승하시길...


  1. [성도]The TRIATLAS Project

    TRIATLAS 성도는 Jos? R. Torres와 Casey Skelton가 만든 성도입니다. 일부 아쉬운 부분이 있지만 전체적으로 우수한 품질을 보여줍니다. A4(또는 US letter) 또는 A3(또는 타블로이드 용지) 용지에 인쇄해서 쓸 수 있으며 인터넷을 통해 무료로 내려받을 수 ...
    Date2009.08.30 Category천문 일반 By창환 Views5284
    Read More
  2. [성도]SkyAtlas 2000.0 2nd edition

    (사진은 Deluxe, Unlaminated edition) -제목: SkyAtlas 2000.0 (2nd edition) -저자: Wil Tirion, Roger W. Sinnott -출판사, 펴낸 날: Cambridge University Press (1998년 11월 13일) -분량: 30쪽 -언어: 영어 -ISBN-10: 0521627621 -ISBN-13: 978-0521627...
    Date2009.08.30 Category천문 일반 By창환 Views5752
    Read More
  3. No Image

    DE404 DLL 파일 사용법

    이 글은 다음 게시물에서 첨부한 파일의 사용법입니다. [프로그램 소스]행성의 위치를 계산(DE404)하는 DLL 파일 http://blueedu.dothome.co.kr/xe/815 아래 코드는 설명서에 있는 코드입니다. 이 소스 코드는 비주얼베이직 6에서 쓸 수 있습니다. 이 소스 코...
    Date2009.08.19 Category천문 계산 By창환 Views9396
    Read More
  4. [성도]Beginners Star Atlas

    간단하게 활용할 수 있는 6등급 성도입니다.6등급 성도로는 제법 괜찮은 편이라 평가할 수 있습니다. 전체 6장으로 이루어져 있고 천연색으로 은하수와 은하, 성운, 성단 등을 표기해 놓았습니다. PDF 파일 형태로 공개되는 성도로 A4 용지에 인쇄할 수 있습...
    Date2009.08.19 Category천문 일반 By창환 Views9137
    Read More
  5. [성도]SFA Star Chart

    5등급까지의 별과 별자리가 인쇄되어 있는 간단한 성도입니다. 실제 관측에 이용하기에는 많이 부족한 편으로 간단히 별자리를 알아볼 때 쓸 수 있습니다. 이 성도는 전체 4장의 성도로 이루어져 있고 A4 용지에 인쇄할 수 있는 크기로 만들어져 있습니다. 아...
    Date2009.08.19 Category천문 일반 By창환 Views5809
    Read More
  6. [성도]Pocket Sky Atlas

    (앞 표지) (뒷 표지) -제목: Sky & Telescope's Pocket Sky Atlas -저자: Roger W. Sinnott -출판사, 펴낸 날: Sky Publishing (2006년 3월 30일) -분량: 110쪽 -언어: 영어 -ISBN-10: 1931559317 -ISBN-13: 978-1931559317 Sky Publishing에서 2006년에...
    Date2009.08.18 Category천문 일반 By창환 Views12897
    Read More
  7. 이리듐 플레어 촬영 2차 시도

    날씨는 크게 나쁘지 않았는데, 이번에도 그리 성공적이지 않네요. 배경은 고니자리입니다. 아래 사진은 별자리 선을 대강 그려 넣은 사진.. (2009-6-25)
    Date2009.08.12 Category관측기 By창환 Views7603
    Read More
  8. 이리듐 플레어 촬영

    사진은 이리듐 플레어입니다. 가운데에 조그맣게 그려진 하얀 선이 위성 흔적입니다. 결과적으로 실패한 사진입니다. 예측대로라면 20시 17분 경에 이리듐 위성이 밝게 빛나야 했고, 관측 결과 그렇게 되었습니다만, 사진을 제대로 찍지는 못했습니다. 예상 ...
    Date2009.08.12 Category관측기 By창환 Views41753
    Read More
  9. 목성, 토성 그림

    예전에 그렸던 목성, 토성 그림. 토성은 그림자로 인해 약간 어색합니다.
    Date2009.08.12 Category관측기 By창환 Views6694
    Read More
  10. 이리듐플레어

    이리듐 플레어 현상을 촬영하려다 실패했습니다. 이리듐 위성의 위치와 밝기를 계산해보니 관측에 매우 좋아보였습니다. 고도는 57도에 밝기는 -8등급.. 시간은 오후 8시 44분이니까 하늘도 적당히 어두운 때입니다. 그런데 밖을 보니 하늘에는 구름이 잔뜩.....
    Date2009.08.12 Category관측기 By창환 Views4479
    Read More
Board Pagination Prev 1 ... 12 13 14 15 16 17 18 19 20 21 Next
/ 21
Powered by XE