천문 계산
2009.08.19 22:08

DE404 DLL 파일 사용법

조회 수 9257 댓글 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. 오랜만의 관측

    어제 오랜만에 관측을 했습니다. 날도 무척 맑고 공기도 투명하고 달도 없고.. 구름이 조금 있었지만 양은 적어서 관측에 특별히 방해가 되지는 않았습니다. 성도도 들고 나가지 않은 간단한 관측이라서 찾아본 천체가 많지는 않았지만 가슴 속에 묻혀있던 밤...
    Date2009.09.21 Category관측기 By창환 Views5295
    Read More
  2. No Image

    EMB에서 지구의 위치 보정하기

    EMB에서 지구의 위치를 구하는 방법은 이렇습니다. 우선 같은 시각의 EMB의 일심황도좌표, 달의 지심황도좌표를 구합니다. 이를 다음과 같이 표시하도록 합시다. EMB의 일심황도좌표: LE(황경), BE(황위), RE(해-지구 거리) 달의 지심황도좌표: LM(황경), BM(...
    Date2009.09.12 Category천문 계산 By창환 Views5875
    Read More
  3. 플램스티드 성도

    플램스티드 성도(Atlas Coelestis)를 열람할 수 있는 곳이 있네요. 17~18세기에 유럽에서 발행된 대표적인 성도 가운데 하나로, 당시 유럽의 성도가 대강 어떤 형태로 발행되었는지 파악할 수 있을 것 같습니다. 아래 링크를 따라가보세요. http://contentdm....
    Date2009.09.08 Category고천문학 By창환 Views5878
    Read More
  4. [책]쉽게찾는 우리별자리

    -제목: 쉽게찾는 우리별자리 -저자: 이태형, 김한준, 이주형 -출판사, 펴낸 날: 현암사 (1993년 10월 30일) -분량: 336쪽 -크기: 112 x 210 mm -ISBN-10: 8932307792 국내에서 유명한 아마추어 천문가인 이태형씨가 쓴 별자리 안내서입니다. 현암사에서 펴내...
    Date2009.09.01 Category천문 일반 By창환 Views6223
    Read More
  5. [성도]The TRIATLAS Project

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

    DE404 DLL 파일 사용법

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

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

    5등급까지의 별과 별자리가 인쇄되어 있는 간단한 성도입니다. 실제 관측에 이용하기에는 많이 부족한 편으로 간단히 별자리를 알아볼 때 쓸 수 있습니다. 이 성도는 전체 4장의 성도로 이루어져 있고 A4 용지에 인쇄할 수 있는 크기로 만들어져 있습니다. 아...
    Date2009.08.19 Category천문 일반 By창환 Views5736
    Read More
  10. [성도]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창환 Views12846
    Read More
Board Pagination Prev 1 ... 11 12 13 14 15 16 17 18 19 20 Next
/ 20
Powered by XE